8086的指令系统可分成6个功能组,他们是①数据传送类指令②算术运算类指令③位操作类指令④串操作类指令⑤控制转移类指令⑥处理机控制类指令 一、数据传送类指令 数据传送类指令又分为: 1、通用数据传送指令三条 传送指令:MOV dest,src ;dest←src 交换指令:XCHG reg,reg/mem ;reg←reg/mem,也可表达为:XCHG reg/mem.reg 换码指令:XLAT label 或 XLAT ;al←ds:[bx+al] 2、堆栈操作指令 进栈指令:PUSH reg/mem/seg ;SP←sp-2,SS:[Sp]←reg/mem/seg 出栈指令:POP reg/mem/seg ;reg/seg/mem←SS:[SP],Sp←SP+2 3、标志寄存器传送指令 标志送AH指令:LAHF ;AH←FLAGS的低字节 AH送标志指令:SAHF ;FLAGS的低字节←AH 标志进栈指令:PUSHF ;SP←SP-2,SS:[SP]←FLAGS 标志出栈指令:POPF ;FLAGS←SS:[SP],SP←SP+2 4、地址传送指令 有效地址传送指令:LEA r16,mem ;r16←mem的有效地址EA 指针传送指令 :LDS r16,mem ;r16←mem,DS←mem+2 指针传送指令 :LES r16,mem ;r16←mem,ES←mem+2 5、输入输出指令 输入指令:IN 输出指令:OUT 二、算术运算类指令 1、加法指令 加法指令:ADD 带进位加法指令:ADC 增量指令:INC 2、减法指令 减法指令:SUB 带借位减法指令:SBB 减量指令:DEC 求补指令:NEG 比较指令:CMP 3、乘法指令 无符号数乘法指令:MUL 有符号数乘法指令:IMUL 4、除法指令 无符号数除法指令:DIV 有符号数除法指令:IDIV 5、符号扩展指令 字节转换为字指令:CBW 字转换为双字指令:CWD 6、十进制调整指令 (1)压缩BCD码调整指令 加法的十进制数调整指令:DAA 减法的十进制数调整指令:DAS (2)非压缩BCD码调整指令 加法的非压缩BCD码调整指令:AAA 减法的非压缩BCD码调整指令:AAS 乘法的非压缩BCD码调整指令:AAM 除法的非压缩BCD码调整指令:AAD 三、位操作类指令 1、逻辑运算指令 逻辑与指令:AND 逻辑或指令:OR 逻辑异或指令:XOR 逻辑非指令:NOT 测试指令:TEST 2、移位指令 (1)逻辑移位指令 逻辑左移:SHL 逻辑右移:SHR (2)算术移位指令 算术左移:SAL 算术右依:SAR 3、循环移位指令 (1)不带进位循环移位指令 不带进位循环左移:ROL 不带进位循环右移:ROR (2)带进位循环移位指令 带进位循环左移:RCL 带进位循环右移:RCR 四、串操作指令 1、串传送指令 字节串传送指令:MOVSB 字串传送指令 :MOVSW 2、串存储指令 字节串存储指令:STOSB 字串存储指令 :STOSW 3、串读取指令 字节串读取指令:LODSB 字串读取指令 :LODSW 4、串比较指令 字节串比较指令:CMPSB 字串比较指令 :CMPSW 5、串扫描指令 字节串扫描指令:SCASB 字串扫描指令 :SCASW 6、重复前缀指令 REP REPZ REPNZ 五、控制转移类指令 1、无条件转移指令 JMP 2、条件转移指令 JZ/JE、JNZ/JNE、JS、JNS、JP/JPE、JNP/JPO、JO、JNO、JC/JB/JNAE、JNC/JNB/JAE、JBE/JNA、 JNBE/JA、JL/JNGE、JNL/JGE、JLE/JNG、JNLE/JG 3、循环指令 LOOP LOOPZ/LOOPE LOOPNZ/LOOPNE 4、子程序指令 子程序调用指令 CALL 子程序返回指令 RET 5、中断指令 INT i8 IRET INTO 6、系统功能调用 六、处理机控制类指令 1、标志位操作指令 (1)进位标志操作指令 CLC STC CMC (2)方向标志操作指令 CLD STD (3)中断标志操作指令 CLI STI 2、CPU状态控制指令 控操作指令:NOP 段超越前缀指令:SEG: 封锁前缀指令:LOCK 暂停指令:HLT 交权指令:ESC 等待指令:WAIT
|