汇编语言学习笔记(十一)标志寄存器

flag寄存器(传送指令不会影响标志寄存器)
flag的1、3、5、12、13、14、15位在8086cpu中没有使用,不具有任何含义。而其余的都有特殊含义

ZF:0标志位
如果结果为0,则ZF=1
如果结果非0,则ZF=0
PF:奇偶标志位
如果1的个数为偶数,则PF=1,否则为0
SF:符号标志位
结果为负数,SF=1,否则为0
CF:进位标志位
OF:溢出标志位

adc:带进位的加法指令,利用了CF位上记录的进位值
sbb:带借位减法指令,利用了CF位上记录的借位值
cmp:是比较指令,功能相当于减法指令,不保存结果。只关心哥哥标志寄存器发生的相应变化

检测比较结果的条件转移指令:
检测那些标志位:被cmp影响的那些标志位
je    相等则转移    只检测ZF的值
jne    不相等        
jb    低于        
jnb    不低于        
ja    高于        
jna    不高于        
j jump e equal n not b below a above
以上都是cmp进行无符号比较
实例:如果(ah)=(bh)则(ah)=(ah)+(ah),否则(ah)=(ah)+(bh)
结果:
cmp ah,bh
je s
add ah,bh
jmp short ok
s:add ah,ah
ok:ret

DF和串传送指令
DF:方向标志位
DF=0:每次操作后si,di递增;否则递减
movsb:将ds:si指向的内存单元中的字节送入es:di中,然后根据标志寄存器DF位的值,将si和di递增或者递减
movsw:以字的单位传送
一般都和rep指令配合使用
rep movsb:
rep的作用是根据cx的值,重复执行后面的字符串送指令

8086提供了两条指令对DF继续努力设置
cld:设置DF=0    clear
std:设置DF=1    set

pushf和popf
将标志寄存器的值压入栈
从栈中弹出值放入标志寄存器














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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值