标志寄存器

文章详细介绍了CPU的标志寄存器,包括零标志ZF、奇偶标志PF、符号标志SF、进位标志CF、溢出标志OF和方向标志DF的作用。特别指出INC和DEC指令不会影响CF,而ADC指令会利用CF进行带进位的加法和减法。此外,还讲解了如何通过DF控制串处理指令中的递增或递减,以及cld和std指令用于设置DF,以及pushf和popf用于保存和恢复标志寄存器的状态。
摘要由CSDN通过智能技术生成

1.标志寄存器

 

标志
ZF(zero flag)如果结果为0,zf=1;否则为0
PF(parity flag)如果结果为偶数个1,pf=1;否则为0
SF(sign flag)如果结果为负数,sf=1;否则为0
CF(carry flag)无符号运算的时候,最高位向更高位的进位值或者从更高位的借位值
OF(overflow flag)有符号的运算的结果,如果发生了溢出,则of=1;否则为0
df(direction flag)

在串处理指令中,df=0:每次操作后si ,di递增

df=1:每次操作后si,di递减

note:inc dec不影响cf

答:

1.INC,DEC指令不影响CF标志位,这个是Intel规定的!其原因是硬件设计造成的,总之,对软件人员来说不重要!
2.INC,DEC指令不影响CF标志位,这表明执行INC/DEC指令之后,CF不能反映进位情况
INC 0000000011111111
0000000011111111+1当然要进位,但不设置CF为1。

你的问题就在于,将进位与CF等同
CF被称为进位标志位,在多数情况下,它确实反映进位情况,但不是绝对的,INC/DEC就是其中两例
INC/DEC指令不影响CF标志位,这句话就是明明白白地告诉你,此时,CF与进位无关

百度知道 - 信息提示

2.adc指令

带进位加法指令,利用了cf上的进位值

3.adc指令

带借位减法指令,利用了cf上的借位值

4.cmp指令

减法,改变标志寄存器,不保存结果。

 

5.串传送指令

movsb:(对于字节)

mov es:[di],byte ptr ds:[si]

if df=0:

inc si

inc di

if df = 1 :

dec si

dec di

movsw:(对于字)

mov es:[di],word ptr ds:[si]

if df=0

add si,2

add di,2

if df=1

sub si,2

sub di,2

rep movsb

s:movsb

loop s

rep movsw

s:movsw

loop s

6.对df置位

1.cld:将df置0

std:将df置1

7.pushf 和popf:将标志寄存器的值压栈/pop栈

为直接访问寄存器提供了一种方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值