请解释MUL操作在这种情况下的工作原理:
MUL ECX
操作前:
EAX:000062F7(25335) ECX:3B9ACA00(1000000000) EDX:00000000(0)
手术后:
EAX:C3ACE600 EDX:0000170A(5898)
如果有人能解释我5898的计算方式,那将会很感激。
答案 0 :(得分:0)
两个32位值的乘法可以产生64位结果。
MUL
的结果存储在EDX:EAX中。 (EDX中的高32位,EAX中的低32位)。
0x3b9aca00 * 0x62f7 = 0x170a c3ace600
ECX EAX EDX EAX
答案 1 :(得分:0)
MUL r/m32
(r/m32
在这种情况下引用ECX
)的说明是:
MUL r/m32 (EDX:EAX ← EAX ∗ r/m32).
因此EAX
乘以ECX
以形成64位产品,该产品存储在EDX:EAX
中(即低位32位最终位于EAX
,并且EDX
)中的高32位。
因此,如果我们在计算器中输入000062F7 * 3B9ACA00
,我们会得到170AC3ACE600
,这意味着EAX
将是C3ACE600
而EDX
将是170A
}(或base10中的5898)。