为什么在这里设置进位标志?
我想知道是否有人可以给我一些这些标志的练习,特别是携带和溢出标志。
无论如何,我的问题是这样的。
我正在看讲义,我看到了一个5位的比较
Cmp $ 12,$ 6变成
00110 - 01100可以改成
00110
+10100
-------
11010
进位标志CF = 1和溢出标志OF = 0
Cmp $ -6,$ -12是10100 - 11010就变成了
10100
+00110
-------
11010
CF = 1,溢出标志OF = 0
我相信我理解溢出标志被设置为0,因为这些小数字减法(或加法,取决于你如何看待它)导致从未超过2 ^ 5范围的数字的小数字。
怎么样的进? 我认为这意味着最后一位有一个1从最后一列/位继续,那么这是一个进位标志吗?
我的意思是,如果它是类似的东西
1 (carried over from last column)
1100......(random binary for the rest ...)
+ 0100......
-------------
这是如何设置进位标志的权利? 1来自左列第二位的1 + 1。
在我的两个例子中,这些在最左边的列上不是1。
这是怎么回事?
谢谢。
内部执行减法操作无关紧要,但请注意,某些处理器包含实际减法硬件。 问题是减法意味着,减去,而不是否定第二个数字并添加。 对于X86来说,进位标志是一个“借位”指示符,将这些数字视为无符号数字,因此6-12会产生“借位”。 溢出标志将数字视为有符号数,并且6 - 12 = -6,所以没有溢出。
链接地址: http://www.djcxy.com/p/72553.html