在汇编中,我们可以通过从FFFFh中减去正值,然后将其增加1来获得负数,因此大约一半的寄存器保留给负数。
如果我们将两个数相乘,并且结果对于一个寄存器来说太大,则将其余数传递给dx。
所以,我的问题是,可以存储在寄存器中的最大正数是多少,因为当我将不同的数字对相乘时,ax和dx都不相同。
答案 0 :(得分:0)
您可以将相同的寄存器内容解释为有符号数字或无符号数字。在第一种情况下,最大值为0x7F*** = 2^(regsize-1)-1
(对于16位为32767),在第二种情况下,最大值为0xFF** = 2^regsize-1
(对于16位为65535)
(请注意,有imul
和mul
个用于乘法的命令,第一个用于符号。
Hex byte example
80 imul 2 = FF:00
80 mul 2 = 01:00