签名与未签名之间在40h + 40h中会触发哪些标志?

时间:2018-09-12 22:12:40

标签: assembly binary flags unsigned signed

对于他们两个,我的输出都是1000 0000(80h)。用十进制加它们是64 + 64 =128。如果是无符号,则128在范围内;如果是有符号,则超出范围。

因此,对于未签名的,应设置的标志是溢出标志(因为当添加的数字为正数时,MSB为负)和标志标志(因为MSB为1)。

对于带符号的溢出标志应再次设置为OFF(因为128超出8位带符号的范围),并且由于MSB,应将符号标志设置为1。进位标志不应设置,因为MSB位中未发生进位操作。它是否正确?在这种情况下,为有符号与无符号设置的标志应该相同?

1 个答案:

答案 0 :(得分:0)

只有一个加法操作会为操作的有符号和无符号效果设置标志。减法是相同的(cmp只是减法,除标志外,它会舍弃结果)

  • V(溢出)标志捕获了 signed 溢出。
  • C(进位)标志捕获 unsigned 溢出。
  • S(符号)标志捕获结果的最高位。
  • 如果所有结果位均为0,则设置Z(零)标志。

就是这样。如果要执行未签名或已签名的操作,则要查看不同的标志,具体取决于要检测的内容。