一步步学汇编(十)标志寄存器

一步步学汇编(十)标志寄存器

标志寄存器的作用:
(1) 用来存储相关指令的某些执行结果
(2) 用来为CPU执行相关指令提供行为依据
(3) 用来控制CPU的相关工作方式

flag的1,3,5,12,13,14,15位在8086CPU中是不起作用的

ZF,第6位,记录相关指令执行结果,为0则ZF=1,否则,ZF=0
PF,第2位,奇偶标志位,记录指令执行结果所有二进制位中1的个数是否为
偶数,是偶数,则PF=1,为奇数,PF=0
SF,第7位,符号标志位。指令执行结果为负,SF=1,非负,SF=0
CF:第0位,进位标志位,在进行无符号数运算的时候,记录运算结果的最高有效会向更
高位的进位或借位
溢出:在进行有符号数的运算的时候,如果超过了机器所能表示的范围,称为
溢出

OF:溢出标志位,记录了有符号数运算的结果是否发生了溢出,如果溢出,
OF=1,如果没有,OF=0

DF:第10位,方向标志位 DF=0 每次操作后si,di递增;DF=1 每次操作后si,di递减


adc:带进位加法指令
adc ax,bx 功能:(ax)=(ax)+(bx)+CF
adc 的作用主要是大数据的加法

sbb:带借位减法指令
sbb ax,bx 功能:(ax)=(ax)-(bx)-CF

cmp:比较指令 功能相当于减法指令,但不保存操作结果,只根据结果对
标志寄存器相关位进行设置

(1)如果SF=1,而OF=0
逻辑上真正结果的正负=实际结果的正负;
因SF=1,实际结果为负,所以 操作数1 < 操作数2
(2)如果SF=1,而OF=1
因溢出导致实际结果为负,所以 操作数1 > 操作数2

......总而言之,OF为零,则逻辑结果与实际结果相同,OF为1,逻辑结果
与实际结果相反

movsb: 串传送指令(以byte为单位):
功能:(1)((es)*16+(di))=((ds)*16+(si))
      (2)如果DF=0 则:(si)=(si)+1
                      (di)=(di)+1
         如果DF=1 则:(si)=(si)-1
               (di)=(di)-1
movsw:串传送指令(以word为单位):
功能与上面一个类似

rep movsb(rep movsw):根据cx的值,重复执行后面的串传送指令
cld:设置DF=0,正向传送

pushf:将标志寄存器的值压入栈
popf:从栈中弹出数据,送入标志寄存器

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值