mydreamqq 发表于 2012-12-8 14:48:21

关于标志寄存器CF和OF

本帖最后由 mydreamqq 于 2012-12-8 14:56 编辑

大家好,我学习汇编语言到第11章节标志寄存器这里的,关于对CF和OF标志位不是很理解啊,小甲鱼说CF是针对无符号运算的,OF是针对有符号运算的。我不懂,有符号运算就不会进位改变CF的值了吗?无符号运算就不会溢出改变OF的值了吗?还有11.5给的例子:
注意,这里所讲的溢出,只是针对有符号数运算而言。下面我们看两个溢出的例子。
mov al,98
add al,99
执行后将产生溢出。
我觉得上面这个例子不是明摆着是无符号的运算吗?有符号运算不是结果为负数的时候转换为补码的形式才是有符号运算吗?
这里有点混乱,希望高手能帮忙解释下,最好能具体举例什么样的程序是有符号运算,什么样的程序是无符号运算,在这里先谢谢了,鱼c论坛真的不错,挺漂亮的。

张国祥 发表于 2012-12-10 12:30:26

楼上的解答估计楼主会头晕- -你可以就这么理解,有符号数或无符号数,取决于我们自己!我们需要什么结果,就去怎么运算

mydreamqq 发表于 2012-12-10 16:42:15

会飞的熊 发表于 2012-12-8 20:10 static/image/common/back.gif
首先明确几点:
1.数据在计算机里存储是不分有符号数和无符号数的,所谓有符号数和无符号数只是程序员赋予 ...

多谢耐心的讲解!

mydreamqq 发表于 2012-12-10 16:43:32

张国祥 发表于 2012-12-10 12:30 static/image/common/back.gif
楼上的解答估计楼主会头晕- -你可以就这么理解,有符号数或无符号数,取决于我们自己!我们需要什么结果,就 ...

不是一般的头晕哦,数据在计算机都是以补码的形式存放,那补码的形式就都是有符号的数据了,为什么教程里还说无符号的运算呢?

会飞的熊 发表于 2012-12-10 16:59:51

mydreamqq 发表于 2012-12-10 16:43 static/image/common/back.gif
不是一般的头晕哦,数据在计算机都是以补码的形式存放,那补码的形式就都是有符号的数据了,为什么教程里 ...

无符号数可以看成都是正数,而正数的补码就是它自己,是不变的。
还是3#的解释简单,其实就是有符号数或无符号数,取决于我们自己,计算机里的存储只有一种存储方式,,看你怎么用。

CHNA 发表于 2012-12-10 19:03:11

如果这2个数据是当做无符号数据运算看CF   无符号   (al)>FFhcf=1   :   (al)<0cf=1
如果这2个数据是当做有符号数据运算看OF   有符号   (al)=-128到127 of=0   :   (al)超过-128到127of=1

张国祥 发表于 2012-12-10 20:10:29

mydreamqq 发表于 2012-12-10 16:43 static/image/common/back.gif
不是一般的头晕哦,数据在计算机都是以补码的形式存放,那补码的形式就都是有符号的数据了,为什么教程里 ...

不对,正数也有补吗,无符号数也有补码

低手莫怪 发表于 2017-3-5 19:50:41

你按照无符号运算它就是无符号,你按照有符号运算就是有符号
页: [1]
查看完整版本: 关于标志寄存器CF和OF