汇编中有符号数加减计算的补码解释

DB 0ECH

DB 02H

以上定义的两个数据都是机器码形式(二进制/十六进制),它们可能是无符号数(的补码形式)236和2,也可能是有符号数的补码形式-20和20,(机器内部的计算都是以补码形式进行),所以无法直接看出它们的真值(十进制+正负)。

 

ADD 0ECH,02H

得到的结果是0EEH,是机器码形式,它可能是无符号数结果(的补码形式)238,也可能是有符号数结果的补码形式,求补后为-18。

 

同理

SUB 0ECH,02H

得到的结果是0EAH,是机器码形式,它可能是无符号数结果(的补码形式)234,也可能是有符号数结果的补码形式,求补后为22。

 

例:计算器如何计算127-1=126(十进制)

  1. (127)d+(-1)d
  2. 十进制转二进制,并且转化为补码(不管有符号数还是无符号数都转化为补码,因为无符号数的补码与原码相同,机器内部的计算都是以补码形式进行)
  3. 01111111+11111111
  4. 得到01111110
  5. 求补码。因为上一步计算结果的符号位为0,此处求得的补码与原码相同,若符号位为1,则结果不同。
  6. 二进制转十进制。01111110=126

版权声明:本文为tianyuzui6原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。