8086指令分类

8086指令分类

1.数据传送类指令

  • 通用传送类指令

    MOV DST,SRC;将SRC中的内容传送到DST中
    

    注意事项:

    • 立即数不能传送到段寄存器
    • 存储单元不能传送到存储单元
    • 段寄存器不能传送到段寄存器
    • CS不能做目的寄存器
    • DST和SRC的类型要一致
  • 取有效地址指令

    LEA REG16,MEM;将MEM的偏移地址传送到一个16位寄存器中
    
  • 取地址指针指令

    LDS,REG16,MEM;将存储器MEM中的低16位传给一个16位的寄存器,高16位传给DS
    LES,REG16,MEM;将存储器MEM中的低16位传给一个16位的寄存器,高16位传给ES
    
  • 标志传送类指令

    LAFH;将PSW寄存器的低8位传送给AH
    SAHF;将AH中的内容传送到PSW寄存器的低8位中
    
  • 数据交换指令

    XCHG DST,SRC;将SRC中的内容和DST中的内容进行交换
    
  • 堆栈操作指令

    PUSH SRC;将SRC压入堆栈
    PUSHF;将PSW寄存器中的内容压入堆栈
    POP DST;从栈顶出栈传送到DST
    POPF;从栈顶出栈送到PSW寄存器中
    

2.算数运算类指令

  • 加减法指令

    ADD DST,SRC;不带进位的加法
    ADC DST,SRC;带进位的加法
    SUB DST,SRC;不带进位的减法
    SBB DST,SRC;带进位的减法
    NEG DST;取负指令
    
  • 比较指令

    CMP DST,SRC;将DST中的内容减去SRC中的内容,用来改变PSW寄存器中的状态标志位,不会将计算结果进行保存
    
  • 增量减量指令

    INC DST;DST中的内容自动加一
    DEC DST;DST中的内容自动减一
    
  • 乘法指令

    MUL SRC;无符号数乘法
    IMUL SRC;有符号数乘法
    当SRC为字节类型时,将AL中的内容乘以SRC中的内容,结果放在AX中
    当SRC为字类型时,将AX中的内容乘以SRC中的内容,结果的高16位放在DX中,低16位放在AX中
    
  • 除法指令

    DIV SRC;无符号数处除法
    IDIV SRC;有符号数除法
    当SRC为字节时,将AX中的内容除以SRC中的内容,商放在AL中,余数放在AH中
    当SRC为字类型时,将DX和AX联合构成的32位除以SRC中的16位,商放在AX,余数放在DX
    
  • 符号扩展指令

    CBW;将AL中的符号扩展到AH中,形成一个字AX
    CWD;将AX中的符号扩展到DX中,形成双字(DX:AX)
    
  • BCD数运算调整指令

    AAA;加法分离BCD码调整指令
    DAA;加法组合BCD码调整指令
    AAS;减法分离BCD码调整指令
    DAS;减法组合BCD码调整指令
    AAM;乘法分离BCD码调整指令
    AAD;除法分离BCD码调整指令
    

3.逻辑运算类指令

AND DST,SRC;与操作
OR DST,SRC;或操作
NOT,DST;非操作
XOR DST,SRC;异或操作
TEST DST,SRC;逻辑测试指令,与操作,不保存与后的结果,只改变PSW中的状态标志位

4.移位类指令

  • 逻辑移位

    SHR DST,CNT;逻辑右移
    SHL DST,CNT;逻辑左移
    
  • 算数移位

    SAR DST,CNT;算数右移
    SAL DST,CNT;算数左移
    
  • 循环移位

    ROR DST,CNT;循环右移
    ROL DST,CNT;循环左移
    RCR DST,CNT;带进位位的循环右移·
    RCL DST,CNT;带进位位的循环左移
    

5.标志位操作指令

指令格式功能
CLCCF清零
STCCF置位(置为1)
CMCCF取反
CLDDF清零
STDDF置位(置为1)
CLIIF清零,关闭中断
STIIF置位,打开中断

6.转移指令

  • 无条件转移指令

    JMP LABEL;转移到标号为LABEL处
    JMP REG16;转移到寄存器中的值指定的位置
    JMP MEM;转移到存储器中的值指定的位置
    
  • 有条件转移指令

    指令格式转移条件
    JCCF=1
    JNCCF=0
    JE/JZZF=1
    JNE/JNZZF=0
    JSSF=1
    JNSSF=0
    JOOF=1
    JNOOF=0
    JPPF=1
    JNPPF=0

7.循环控制指令

LOOP LABEL;CX不等于0时转
LOOPZ/LOOPE LABEL;CX不等于0且ZF=1时转
LOOPNZ/LOOPNE LABEL;CX不等于1且ZF=0时转
JCXZ LABEL;CX等于0

8.子程序调用与返回指令

CALL LABEL;调用入口地址标号为LABEL的子程序
CALL OPR;调用子程序,其入口地址为OPR中的内容
RET;子程序的返回,完成IP出栈,将sp的内容传送给IP
RETF;完成IP出栈,cs出栈
RET n;完成RET功能后,将sp指针向下再移动n次

9.中断调用返回指令

INT n;调用第n号中断
IRET;从中断服务子程序返回主程序

10.字符串操作指令

  • 字符串传送指令

    MOVSB;字节传送
    MOVSW;字传送
    MOVS DST,SRC;并不是完成SRC到DST的传送,而是用于确定操作类型
    		    ;当同为字节型时,相当于MOVSB;当同为字型时,相当于MOVSW
    源操作数和目的操作数的寻址方式均为隐含寻址
    源操作数的地址是DS:SI,目的操作数的地址是ES:DI
    
  • 重复前缀

    1.当cx不等于0时重复执行,相当于LOOP
    REP MOVSB
    REP MOVSW
    2.当cx不等于0且zf等于1时重复执行,相当于LOOPZ/LOOPE
    REPZ/REPE
    3.当cx不等于0且zf等于0时重复执行,相当于LOOPNZ/LOOPNE
    REPNZ/REPNE
    
  • 字符串比较指令

    CMPSB;
    CMPSW;
    CMPS DST,SRC;
    与CMP指令类似,计算的结果并不保存,只是用于设置PSW中的标志位
    
  • 字符串扫描指令

    SCASB;
    SCASW;
    SCAS DST,SRC;
    源操作数的地址是AL(或AX),目的操作数的地址是ES:DI
    
  • 字符串装入指令

    LODSB;
    LODSW;
    LODS DST,SRC;
    将源字符串装入AL(或AX)中
    
  • 字符串存储指令

    STOSB;
    STOSW;
    STOS DST,SRC;
    将AL(或AX)中的内容存储到目的字符串中
    

11.输入输出指令

IN DST,SRC;表示CPU从端口读取数据
OUT DST,SRC;表示CPU将数据送给I/O端口
  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值