提取URL中的DNS : cat *|awk -F[\/] '{print $3}'|sort -u >>gwdns
基本格式
assume cs:codesg
date segment
;数据段
date ends
code segment
;代码段
code ends
mov ax,4c00h
int 21H
end
进制表示符号
b:二进制
o:八进制
d:十进制
h:十六进制
大小写转换 (A=41H a=61H)
转换为大写:and al,11011111b
转换为小写:or al,00100000b
寄存器 : AX,BX,CX,DX,SI,DI,SP,BP,IP,CS,SS,DS,ES,PSW
AX,BX,CX,DX 通用寄存器 //AX为16位寄存器 可以用AH表示其高八位 AL表示其低八位。赋值用mov AX,values
CS,DS,ES 段寄存器 //赋值时需要用通用寄存器进行中转,不可以直接赋值
IP 指令寄存器 //CS:IP表示当前指令的物理地址 初始时 CS=FFFFH IP=0000H 即第一条指令为FFFF0 赋值用jmp CS:IP
SP 栈寄存器 //SS:SP指向栈顶单元。
SI,DI 16位寄存器 //不能拆分为八位 有且只有bx si di bp四个寄存器可用于寻址。(bx,bp) (si,di)不可同时出现
标志寄存器(flag)
ZF (6) 零标志寄存器 //相关指令执行后,结果为0 则zf=1
PF (2) 奇偶标志寄存器 //相关指令执行后,结果中所有bit中1的总数为偶数,则PF=1
SF (7) 负数标志寄存器 //相关指令执行后,结果为负数,则SF=1
CF (0) 进位标志寄存器 //无符号运算时,如果进位或者借位,则CF=1
OF (11) 溢出标志位 //有符号运算时,如果溢出,则OF=1
DF (10) 方向寄存器 //df=0,si,di递增 df=1,则递减 与串传送指令结合使用
条件转移指令(cmp之后)
jcxz //cx=0则跳转
je //等于则跳转 ZF=1
jne //不等于则跳转 ZF=0
jb //小于则跳转 CF=1
jnb //不低于则跳转 CF=0
ja //大于则跳转 CF=0且OF=0
jna //不大于则跳转 CF=1或OF=1
DEBUG
-R [寄存器] //查看寄存器 修改寄存器的值
-D 段地址:偏移地址 //显示内存中的内容
-E 段地址:偏移地址 数据 数据 // 插入数据到指定位置
-u 段地址:偏移地址 //查看机器码对应的汇编指令
-t //执行CS:IP对应的机器指令(STEP IN)
-P //执行CS:IP对应的机器指令(STEP OVER)
-a 以汇编指令的形式写入机器指令
-q //quit
汇编指令
mov ax,var
movsb //串传送 es:di=ds:si sidi根据DF标志递增或递减
movsw //字单元传送 每次传送一个字的长度,si di加2或减2
rep movsb //s:movsb ;loop s
add ax,bx //ax=ax+bx
adc ax,bx //ax=ax+bx+CF 进位加法
sub ax,bx //ax=ax-bx
sbb ax,bx //ax=ax-bx-CF 借位减法
inc ax //ax++
jmp 类型 标号//jmp short/near ptr对应的机器码中,不包含目的地址 而是包含位移,用补码表示
jcxz 标号 //if(cx==0),jmp 标号
loop 标号 //cx=cx-1 if(cx!=0) goto 标号 一般cx储存循环次数 进行嵌套循环时用栈暂存计数
and //按位与
or //按位或
push ax //压栈,将ax中的数据储存到SS:SP指向的内存单元,SP++
pop ax //出栈,将ss:sp指向的内存单元的数据赋值给ax,sp-- 栈操作以byte为单位操作
pushf //将标志寄存器的值压栈
popf //从栈中弹出数据,送入标志寄存器
call //将CS,IP压栈后跳转的标号处
ret //pop IP
retf //pop ip pop cs
div reg //除法指令,参数为除数,除数为8位时,被除数储存在AX中,商储存在AL中,余数储存在AH中
除数为16位时 被除数为32位,DX中存放高16位,AX中存放低十六位。。商储存在Ax余数储存在DX中
mul reg //16位乘法,乘数默认放在AX中。结果高位存放在DX,地位存放在AX中。八位乘数放在AL中,结果放在AX中
int n //中断指令 ,n为中断代码
伪指令
不对应机器指令 不被执行,由编译器识别
db //定义byte型变量
dw //定义word型变量
dd //定义double word变量
dup //与db,dw,dd结合使用 申请重复的空间。 db 5 dup (123) 开辟十五个字的空间 初始化为123123123123123
offset 标号 //获取标号的便宜地址
segment //标志段的开始
ends //标志段的结束
end //汇编程序编译的结束 start {。。} end start 联合知名程序的开始与结束
assume 段寄存器:段名 //关联两者,写在程序开头 http://hi.baidu.com/dandanfeng166/item/f6cdf5b97322edfc4ec7fd61?qq-pf-to=pcqq.c2c
程序返回
程序结束后,将CPU的控制权交给调用它的程序
mov ax,4c00h
int 21H //在debug时,一般用P来执行
如果是通过command运行,运行结束后返回command。如果通过debug运行 运行之后返回debug。
安全的内存区域 :0:200h~02ffh
寻址方式
【idata】 //常量
【bx】 //变量 (结合inc访问由ds开始的连续的一段内存)
【bx+idata】 //变量+常量 (数组)
【bx+si】 //变量+变量
【bx+si+idata】 //变量+变量+常量
知名内存单元长度
word ptr //操作字节 mov word ptr ds:【0】,1
byte ptr //操作位