程序集中有符号或无符号的减法

时间:2016-10-21 17:51:23

标签: assembly x86

带有借用的带符号减法在x86汇编中相当混乱。请考虑以下单词

X = 3A12 H
Y = 4023 H

我写了以下代码

   data1   dw 3a12h
   data2   dw 4023h
   data3   dw ?
   ;------- THEN --------
   mov al, byte ptr data1
   mov bl, byte ptr data2
   sub al, bl                ; 12-23 = EF while carry=1
   mov byte ptr data3, al
   mov al, byte ptr data1+1
   mov bl, byte ptr data2+1
   sbb al, bl                ; 3A-1(carry from sub)-40=F9 while carry=1
   mov byte ptr data3+1, al 

现在data3中存储的内容是F9EF,而Carry标志是1.我们现在结果是否定的。换句话说,结果实际上是-0611 H。但是电脑不知道......

接下来,在其他说明中,它会将F9EF视为正数。这不对吗? x86如何知道F9EF是负数?

您可以说符号位为1. OK ...那么如果我想将F9EF用作正数(或无符号),我应该如何告诉他?!

0 个答案:

没有答案