标志寄存器 x86汇编

导读:
介绍了X86中的标志寄存器

标志寄存器

标志寄存器中一共有9个标志位,分别为:OF DF IF TF SF ZF AF PF CF

ZF

零标志位,相关操作后结果为0,则ZF=1
大多数运算指令都会影响标志位

PF

奇偶标志位,结果中所有1的个数为偶数,PF=1。否则PF=0。

SF

符号标志,如果结果为负数,则SF=1

CF

在进行无符号数运算的时候,会产生借位和进位的时候就会标记CF

OF

有符号运算的时候,如果超过了范围,就会产生溢出。

标志寄存器相关指令

adc指令和sbb指令

adc op1, op2
op1 = op1 + op2 + CF
sbb op1, op2
op1 = op1 - op2 - CF

cmp指令

cmp相当于sub当不是保存结果,只是设置相应的位
cmp用于无符号数的时候,用zf和cf获取比较结果
cmp用于有符号数的时候,用of和sf比较大小

ofsf结果
00大于等于
01<
10<
11大于

检测比较结果的条件转移指令

jcxz 检测cx中的数值,如果cx=0,就修改IP
je
jne
jb
jnb
ja
jna

DF标志和串传送指令

DF为方向标志位,控制每次操作后si,di的增减方向
DF = 0, 增加
DF = 1, 递减
movsb指令
使用movsb(byte)相当于 es : di = ds : si; si++,di++;
movsw指令
是对于内存word单元的,si,di += 2
rep指令
rep可以和movsb,movsw配套使用,rep movsb 可以循环实现(cx)个字符的传送
设置DF
cld: 设置df为0
std:设置df为1

pushf和popf

pushf:将标志寄存器的值压栈
popf :将标志寄存器的值出栈

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

猎羽

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

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

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

打赏作者

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

抵扣说明:

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

余额充值