![](/img/trans.png)
[英]8086 Assembly: Multiply two 16 bit numbers to yield a 32 bit result without using the mul instruction
[英]I get a different result with mul instruction in assembly
我在汇编中有这组说明。
mov ax,0055h
mov bx,11AAh
mul al
xchg ax,bx
not ax
neg bx
我不明白第三行中的 mul 指令。如果我执行 0055h*11AAh 我得到 5DD72 但它不正确,因为我在 AX 1C39.How 中得到了一个程序? 程序是什么?
我知道 AX 和 BX 是 16 位寄存器,我的结果应该是 32 位,结果是 DX:AX
mul
的单参数形式将根据操作数大小将参数与al
/ ax
/ eax
/ rax
相乘,并将结果相应地存储在ax
/ dx:ax
/ edx:eax
/ rdx:rax
。
mul al
将al
与al
相乘并将结果存储在ax
。 你想要mul bx
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.