8086指令系统

8086指令系统

传送指令

传送指令 MOV

mov dest,src; dest<---src
注意:

  • 不能在两个内存单元之间直接传送数据
  • CS和IP寄存器不能作为目的操作数
  • 用BX、SI、DI来间接寻址时,默认的段寄存器为DS,而用BP来间接寻址时,默认的段寄存器为SS。
  • 所有的通用传送指令都不改变标志

交换指令XCHG

XCHG reg,mem/reg

注意:

  • 段寄存器和IP不能作为交换指令的操作数

I/O指令

执行的操作:
直接寻址:IN/OUT acc,PORT ;PORT端口号0-255H
间接寻址:IN/OUT acc,DX;DX表示的端口范围达64K

注意:

  • 只能用累加器作为执行输入输出的机构

取有效地址指令(LEA)

这里有效地址指地址偏移值
执行的操作: LEA reg,mem

    lea ax,[1142] ; (ax) = 1142

LEA AX,VARWORD
MOV AX, OFFSET VARWORD

上述两条指令执行效果相同,前者执行时确定值,后者在编译时确定偏移量。

装入地址指令

执行的操作:LDS/LES reg, mem32 ;
DS:reg←(mem开始的四个内存单元的内容,同时设置段寄存器和偏移量)

LDS	DI,[2130H] 
       ;使2130H和2131H中的偏移量送DI,
       ;2132H和2133H中的段值DS。

类似指令还有 LFS/LGS/LSS

标志传送指令

  1. 读标志指令LAHF
    LAHF把标志寄存器低8位中的5个标志位传送到AH中的指定位
    在这里插入图片描述

  2. 设置标志指令SAHF
    SAHF的功能与LAHF的功能正好相反,用图来示意,只要将上图中5个箭头方向反一下即可。
    在这里插入图片描述

  3. 把标志寄存器推入栈顶指令
    PUSHF执行的操作:(SP)-1←标志寄存器高8位
    (SP)-2←标志寄存器低8位
    (SP)←(SP)-2

  4. 从栈顶弹出标志寄存器指令POPF
    执行的操作:标志寄存器低8位←(SP)
    标志寄存器高8位←(SP)+1
    (SP)←(SP)+2

PUSHF和POPF指令用于保护和恢复标志寄存器内容。

堆栈操作指令

  1. 堆栈操作指令
    压入堆栈指令PUSH和弹出堆栈指令POP
    POP/PUSH dest

    注意:

    • 堆栈操作总是按字进行的
    • 允许PUSH CS,但不允许POP CS
  2. PUSHA/PUSHAD
    将8个通用寄存器全部进栈,进栈顺序为:AX,CX,DX,BX,SP,BP,SI,DI,然后SP 指针寄存减16,不过SP入栈的内容是PUSHA指令执行前的内容

  3. POPA/POPAD
    弹出堆栈 顶的8 个字,并依序存入DI、SI、BP、SP、DX、CX、BX、AX 里

符号扩展指令

CBW、CWD、CWDE、 CDQ

  • CBW:将AL寄存器中的符号位扩展到AH中,AH中各位取与AL的符号位相同的值,即对负数1扩展,正数0扩展。
  • CWD:将AX中的被除数扩展成双字,即把AX中的符号位扩展到DX中。
  • CWDE:AX(16位)->EAX(32位)
  • CWQ:EAX(32位)->EDX+EAX(64位)
    执行时,不影响标志位。

算术指令

算术运算指令涉及两种类型的数据
无符号数
8位无符号数的范围为0-255
16位无符号数的范围为0-65 535

有符号数
8位有符号数的范围为-128-+127
16位有符号数的范围为-32 768-+32 767


所有算术运算指令均影响状态标志。
规则:
当无符号数运算产生溢出时,CF为1;
当有符号数运算产生溢出时,OF为1;
如运算结果为0,则ZF=1;
如运算结果为负数,则SF=1;
如运算结果中有偶数个1,则PF=1。

CF和OF是看待数据的两个角度前者是将数据看成无符号数,后者是有符号数。


加法指令

  1. 不带进位位的加法指令(ADD)
    ADD dest, src
  2. 带进位位的加法指令ADC
    ADC指令在形式上和功能上与ADD类似,只是相加时还要包括进位标志CF的内容

ADC指令可用于多字节的加法运算中

  MOV  AX,BUFFER2	
  ADD  BUFFER1,AX ;低字相加
  MOV  AX,BUFFER2+2	
  ADC  BUFFER1+2,AX ;高字相加,包括低字的进位

ing

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Andy-wen

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值