当前位置:鱼C工作室 >汇编语言 > 查看文章

标志寄存器02 – 零基础入门学习汇编语言55

第十一章:标志寄存器02

 

让编程改变世界

Change the world by program


 

CF标志

 

flag的第0位是CF,进位标志位。

一般情况下,在进行无符号数运算的时候,它记录了运算结果的最高有效位向更高位的进位值,或从更高位的借位值。

对于位数为N的无符号数来说,其对应的二进制信息的最高位,即第N-1位,的最高有效位,而假想存在的第N位,就是相对于最高有效位的更高位。

 

进位标志位

 

我们知道,当两个数据相加的时候,有可能产生从最高有效位向更高位的进位。

比如,两个8 位数据:98H+98H,将产生进位。

 

由于这个进位值在8位数中无法保存,我们在前面的课程中,就只是简单地说这个进位值丢失了。

其实CPU在运算的时候,并不丢弃这个进位值,而是记录在一个特殊的寄存器的某一位上。

8086CPU 就用flag的CF位来记录这个进位值。

 

在Debug中,我们可以看到类似下面的信息:

进位标志位

进位标志位

 

比如,下面的指令:

mov al,98H

add al,al 

执行后: (al)=30H,CF=1

 

CF记录了最高有效位向更高位的进位值

add al,al  

执行后: (al)=30H,CF=0,

演示:详细过程请看视频中小甲鱼操作^_^

 

另外一种情况,而当两个数据做减法的时候,有可能向更高位借位。

比如,两个 8 位数据:97H-98H,将产生借位,借位后,相当于计算197H-98H。

而flag的CF位也可以用来记录这个借位值。

比如,两个 8 位数据:97H-98H,将产生借位,借位后,相当于计算197H-98H。

而flag的CF位也可以用来记录这个借位值。

 

演示:详细过程请看视频中小甲鱼操作^_^

 

分页阅读: 1 2 3 下一页
为您推荐

报歉!评论已关闭.