我瞥见了关于数值乘以其大小的文档。用于字节的那个是相当容易的,所以我不需要把它自己混淆。令我困惑的是,如果操作数是单词/双字,则可以获取产品。
例如:
;code for scanning values here
;code for converting them to numbers
mov ax, word[num] ;suppose num is a word-type value
mov bx, 45
mul bx
mov num, ??? ;??? represents the register where should I fetch the product from
我知道可能有类似的问题,但我真的需要深入解释。谢谢。
答案 0 :(得分:3)
mul
指令为16位操作数提供32位结果。 ax
保留结果的下限word
,dx
保留上限word
。因此,您需要一个dword
变量来存储结果:
result dd 0
. . .
mul bx
mov [result], ax
mov [result + 2], dx
但是,如果您知道您的数字总是足够小,那么resut将不会超过65535,那么您可以省略更高的部分(dx
),因为它始终为0,并使用16位变量来存储结果