我想知道是否有人可以通过这些标志给我一些有很多练习的网站,特别是进位和溢出标志。
无论如何我的问题是这个。
我正在看讲义,我看到了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来自左列第2位的1 + 1。
在我的两个例子中,这些不在最左边一列的顶部。
发生了什么?
感谢。
答案 0 :(得分:0)
如何在内部执行减法并不重要,但请注意,某些处理器包含实际的减法硬件。问题是减法意味着,减去,而不是否定第二个数字并添加。对于X86,进位标志是"借用"指标,将数字视为无符号数字,因此6 - 12会导致"借用"。溢出标志将数字视为已签名,并且6 - 12 = -6,因此没有溢出。