我正在关注Udemy的汇编语言冒险:完整课程。
在解释ADD指令时,教师说如果大于参数的大小, ADD指令的结果会“回绕”。
它包裹的意味着什么?
从我的描述中,在4位签名中,我不能添加两个(正)数字,导致数字大于7,或者结果溢出改变符号位。是指导者的意思吗?
答案 0 :(得分:3)
基本上就是这样。如果添加两个数字,结果无法存储在目标中,则:
因此,通常,进位用于扩展多个单词的加法,但是如果处理有符号数字,则需要检查溢出是否有错误的结果。
通过环绕,我认为他的意思是你说的:如果你正在处理4位无符号数,那么例如1001 + 1001 = 1 0010 =进位设置,结果0010.所以你加了9到9并得到了2的结果。结果在某种意义上一直到15,然后回到0,然后继续再次到2。
如果您反而想象您正在处理已签名的数字,那么您实际执行了(-7)+( - 7)并得到了2的结果。您无法通过添加两个负数来获得正结果,因此设置了溢出 - 标志不正确。你已经四处走动,然后下降到-8,然后跳到7,然后继续下降到2.
*例如好像它是任何其他长期添加:
1100 +
0101
----
0101 (result)
11 (carry)
左边最重要的列产生进位。因此处理器会设置进位标志。
**这里的逻辑非常简单:
所以你只要看看这两个数字的迹象。如果符号相同,但结果的符号不同,则设置溢出。否则重置它。
没有正数和负数的组合,当添加时,即使添加了进位,也不适合目的地。尝试一下最极端的例子: