一、数据传输指令
①通用数据传输指令
1、传送指令MOV
MOV 目的操作数,源操作数注意: 目的操作数和源操作数不能是IP寄存器、类型必须相同,不可以同时为段寄存器
不允许在两个存储单元中直接传送数据
目的操作数不允许是立即数
立即数不允许直接送入段寄存器
2、进栈指令PUSH
PUSH 源操作数
3、出栈指令POP
POP 目的操作数
4、交换指令XCHG
XCHG 目的操作数,源操作数
注意:操作数不能为立即数、段寄存器
目的操作数和源操作数不能同时为存储单元(得是寄存器)
②累加器(即AX或AL)专用传输指令
1、输入指令IN
IN AL,n/DX
IN AX,n/DX
2、输出指令OUT
OUT AL,n/DX
OUT AX,n/DX
3、换码指令XLAT
XLAT
注意:执行该指令前需先执行 : MOV BX,换码表的偏移首地址
MOV AL,被转换码
③目标地址传输指令
1、LEA(有效地址传输到寄存器)
LEA 16位寄存器,源操作数偏移地址 ;将源操作数偏移地址放入寄存器
2、LDS(装入一个新的物理地址)
LDS 16位寄存器,源操作数偏移地址 ;将源操作数偏移地址放入寄存器,偏移地址加2放入DS
3、LES(装入一个新的物理地址)
LES 16位寄存器,源操作数偏移地址 ;将源操作数偏移地址放入寄存器,偏移地址加2放入ES
④标志寄存器传送指令
1、LAHF:将FR寄存器的低八位放入AH
2、SAHF:将AH放入FR寄存器的低八位
3、PUSHF:将FR寄存器推入堆栈中
4、POPF:将堆栈栈顶弹如FR
二、算术运算指令
①算术加法指令
1、算术加法ADD
ADD 目的操作数,源操作数功能:目的操作数<——目的操作数+源操作数
注意: 目的操作数不能立即寻址
加法操作中产生进位影响CF标志
带符号数相加要考虑溢出
2、带进位算术加法ADC(多字节相加时使用(大于2字节))
ADC 目的操作数,源操作数
功能:目的操作数<——目的操作数+源操作数+CF
注意:目的操作数不能立即寻址
加法操作中产生进位影响CF标志带符号数相加要考虑溢出
3、加1指令INC
INC 目的操作数
功能:目的操作数<——目的操作数+I
注意:目的操作数不能立即寻址
加法操作中产生进位 不 影响CF标志带符号数相加要考虑溢出
②算术减法指令
1、算术减法SUB
SUB 目的操作数,源操作数
功能:目的操作数<——目的操作数-源操作数
注意:目的操作数不能立即寻址
减法操作中产生借位影响CF标志
带符号数相减要考虑溢出
无符号数相减,若CF=1,则结果为补码
2、带进位算术加法SBB(多字节相加减使用(大于2字节))
ADC 目的操作数,源操作数
功能:目的操作数<——目的操作数-源操作数-CF
注意:目的操作数不能立即寻址
减法操作中产生进位影响CF标志
带符号数相减要考虑溢出
无符号数相减,若CF=1,则结果为补码
3、减1指令DEC
DEC 目的操作数
功能:目的操作数<——目的操作数-I
注意:目的操作数不能立即寻址
加法操作中产生进位不影响CF标志
操作数为内存寻址时必须使用伪指令 如DEC WORD PTR[BX]4、比较指令CMP
CMP 目的操作数,源操作数
功能:仅影响标志位,不产生结果
注意:目的操作数不能立即寻址
目的操作数和元操作数不能同时为存储器操作数
③算术乘法指令
1、无符号数乘法指令MUL
MUL 源操作数功能:AX+DX/AX<——AX/AL存的数*源操作数
注意: 操作数不能立即寻址
AL*BL放入AX
AX*BX放入DX和AX
2、带符号数乘法指令IMUL(多字节相加时使用(大于2字节))
MUL 源操作数
功能:AX+DX/AX<——AX/AL存的数*源操作数
注意:操作数不能立即寻址
AL*BL放入AX
AX*BX放入DX和AX
有符号数再计算机中是其补码,用MUL计算结果有错,IMUL会对符号数处理
④标志寄存器传送指令
1、LAHF:将FR寄存器的低八位放入AH
2、SAHF:将AH放入FR寄存器的低八位
3、PUSHF:将FR寄存器推入堆栈中
4、POPF:将堆栈栈顶弹如FR
三、位操作指令
四、串处理指令
五、程序控制转移指令
六、处理器控制指令