假设ax = fffe和bx = 1234
现在,如果我们写 cmp ax,bx
(BX将从AX中减去BX,并且将更新适当的平板)现在,AX和BX中的数字二进制表示

    AX =    1111    1111    1111    1110
   BX=     0001    0010    0011    0100


由于BX将从AX中减去BX,因此我们必须否定BX(结果= AX+(-bx)),因此否定的BX(2的BX补充)由。

BX=    1110    1101    1100    1100

现在,我们同时添加AX和BX(由于按计算机中的加法实现了减法)

    AX=   1111    1111    1111    1110
   BX=   1110    1101    1100    1100
    ------------------------------------
      1  1110    1101    1100    1010 

现在,如您所见,结果是17位现在,第17位应该进入随身携带的舞台,但是当我检查它时,随身携带的标志为0是CF = 0为什么?

有帮助吗?

解决方案

在这里找到一个链接:http://oopweb.com/assembly/documents/artofassembly/volume/chapter_6/ch06-2.html

正如我所期望的。仅当需要“借用”时,设置了进位标志。减法时,您在执行“减去”之前设置了随身携带的标志,而新的随身携带标志告诉您是否必须借用。您的示例省略了位于位17中预设携带标志的1添加1,这将在结果中不会携带。

其他提示

当按下减法时,将随身携带的标志视为借用位。它是初始化为1的,因此操作是 a−b−C, , IE, a + not(b) + C 代替 a + not(b) + 1 如您所描述的。换句话说,该进位是倒数的,因此可以用于进行多精确的减法。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top