文档介绍:汇编语言常见指令
SHL(左移)
AND(与)
OR(或)
XOR(异或)
NOT(取反
8. 关系运算符
关系运算符用于两个数的比较,结果为“真(-1)”或“假(0)”
GT(>)
GE AF, CF
(1)MUL(Unsigned Multiplication):无符号数乘法
格式:MUL src
src(源操作数):8位/16位的寄存器/存储器
功能:8位源操作数时:AX←(AL)×源操作数
16位源操作数时:DX, AX←(AX)×源操作数
说明:
两个N位操作数相乘,得到2N位的乘积;
如果乘积的高N位为0,则CF=OF=0,否则CF=OF=1。其余
标志位无意义。
上述说明中N=8或16。
(2)IMUL(Signed Integer Multiplication):有符号数乘法
格式:IMUL src
src(源操作数):8位/16位的寄存器/存储器
功能:8位源操作数时:AX←(AL)×源操作数
16位源操作数时:DX, AX←(AX)×源操作数
说明:
两个N位操作数相乘,得到2N位的乘积;
如果乘积高N位为低N位的符号扩展,则CF=OF=0,否则
CF=OF=1,其余标志位无意义。
上述说明中N=8或16。
:
DIV(Unsigned Division):无符号除法
格式:DIV src
src(源操作数):8位/16位的寄存器/存储器
功能:8位源操作数时: (AX)÷源操作数,AL←商,AH←余数
16位源操作数时:(DX, AX)÷源操作数,AX←商,DX←余数
说明:
两个N位操作数相除,应首先把被除数零扩展为2N位;
例如,要进行除法(AX)÷(BX),假设AX、BX内均为无符号数:
MOV DX, 0 ;32位被除数高16位清零
DIV BX ;(DX, AX)÷BX,AX←商,DX←余数
如果(2N位)÷(N位)的商大于2N-1,会产生“除法溢出”错误。
上述说明中N=8或16。
IDIV(Signed Integer Division):有符号数除法
格式:IDIV src
src(源操作数):8位/16位的寄存器/存储器
功能: 8位源操作数时:(AX)÷源操作数,AL←商,AH←余数
16位源操作数时:(DX, AX) ÷源操作数,AX←商,DX←余数
15. 基本循环指令
格式:LOOP 标号
功能:CX←(CX)-1
如果(CX)≠ 0,转向“标号”处执行,否则执行下一条指令。
说明:
LOOP可以改变指令的执行次序,称为“控制转移指令”;
LOOP指令使一段程序重复地执行,称为“循环”。
重复执行的次数由CX寄存器中的值决定。CX寄存器因此称为
“计数器”。
16.
反汇编
‘-U ’ 、 ‘-U 偏移地址’
显示寄存器内容
‘-R ’ 、 ‘-R 寄存器名’
单步执行指令
‘-T ’ 、 ‘-T 指令条数’ 、 ‘-P ’
全速执行指令
‘-G ’ 、 ‘-G 终止地址’、 ‘-G=起始地址’
‘-G=起始地址 终止地址’
显示数据段内容
‘-D ’ 、 ‘-D 起始地址’、 ‘-D 起始地址L字节数’
修改数据段内容
‘-E 起始地址 数据1 数据2 …’
‘-F 起始地址L字节数 数据1 数据2 …’
退出
‘-Q ’
SHL 逻辑左移,最高位进入CF,最低位补0
SHR 逻辑右移,最低位进入CF,最高位补0
SAL 算术左移,最高位进入CF,最低位补0
SAR 算术右移,最低位进入CF,最高位不变
ROL 不带进位循环左移
ROR 不带进位循环右移
RCL 带进位循环左移
RCR 带进位循环右移
18. 无条件转移指令
⑴ 段内转移、直接寻址
⑵ 段内转移、间接寻址
⑶ 段间转移、直接寻址
⑷ 段间转移、间接寻址
JMP label
转到label指定的目标地址处,执行那里的指令
目的地址label的位置有2种情形:
和JMP指令在同一个段,叫做段内转移,转移时 CPU只改变IP;
和JMP指令不在同一个段,叫做段间转移,转移时CPU既要更改IP又要更改CS,
目