汇编语言进位与借位的问题。

2-3是否会产生借位?从常理上看好像产生了借位,标志寄存器中CF应该置位,但在计算机中,减法都会转换成补码的加法,以8位2进制数为例,2的补码是00000010,-3的补码是11111101,两个相加,结果是11111111,不会产生进位。到底2-3有没有借位?CF的值是0还是1,请高手详细指点一下。

你这里混淆了两个概念,无符号数和有符号数。
如果你希望得到2-3=-1,那么你应该认为2和-3都是有符号数,既然是有符号数,是否产生借位要看OF标志位,即溢出标志位;
如果你认为2和-3的补码对应的无符号数253都是无符号数,那么它们之和为255,没有产生进位。
所以,当你判断有符号数的时候,不应该看CF来判断是否有借位。
不管怎样,机器中的运算是00000010+11111101,结果为11111111,CF为0,OF为1。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-10-13
王爽《汇编语言》第二版是这么说的:
一般情况下,在进行无符号数运算的时候,它(CF)记录了运算结果的最高有效位向更高位的进位值,或从更高位的借位值。
也就是说,在2-3的时候,它产生了借位,CF为1;而2+(-3)的时候,计算机把它当作2+FCH的运算来影响CF,所以CF为0
第2个回答  2018-04-08
计算错了,OF为0
相似回答