如果大于参数的大小,ADD指令的结果“包围”是什么意思

问题描述 投票:-1回答:1

我正在关注Udemy的汇编语言冒险:完整课程。

在解释ADD指令时,教师说如果大于参数的大小,ADD指令的结果会“包围”。

它包裹的意味着什么?

根据我的理解,在4位签名中,我不能添加两个(正)数字,导致数字大于7,或者结果溢出改变符号位。它是指导者的意思吗?

assembly x86
1个回答
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)

左侧最重要的列产生进位。因此处理器将设置进位标志。

**这里的逻辑非常简单:

  • 如果添加两个正数产生负数,则设置溢出;
  • 如果添加两个负数产生正数,则设置溢出;
  • 否则,重置溢出。

所以你只要看看这两个数字的迹象。如果符号相同,但结果的符号不同,则设置溢出。否则重置它。

没有正数和负数的组合,当添加时,即使添加携带也不会适合目的地。尝试使用最极端的例子:

  • 127 +(-128)= -1,适合
  • 127 +(任何接近0比-128的东西)=介于-1和127之间的东西,这适合
  • (任何接近0到127的东西)+(-128)=介于-1和128之间的东西,这适合
© www.soinside.com 2019 - 2024. All rights reserved.