两个不同的乘法结果

Two different results of multiplication

造成以下结果差异的原因是什么:

mov  eax, 0
mov  al,  2
mov  ah,  4
mul  ah;  eax == 0x08

和:

mov  eax, 0
mov  al,  2
mov  ah,  4
mul  al;  eax == 0x10

对于 8 位寄存器 mul,隐含的第二个操作数是 al。在伪代码中:

mul ah 表示 ax = ah * al

mul al 表示 ax = al * al

x86 汇编经常使用隐式操作数,因此最好阅读指令参考以了解它们。