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