X86 汇编 mul 错误 masm

X86 assembly mul error masm

一个简单的问题,为什么这不起作用:

    mov ebx,m[edx*4]
    mov eax,conv[edx*4]
    mul ebx

我检查了 m[edx*4] 它有 2 个(应该有的)与 conv[edx*4] 相同。

基本上就是一个2*3

mconvdd 2500 dup(?) <---- 这就是它不起作用的原因?

我尝试遵循: 检查内存位置 m 和 conv 的 32 位值是什么 启动时edx的值是多少 mov ebx,m[edx*4] 检查ebx和eax中的期望值是否正确 Edx 将被覆盖,因为 MUL 和 IMUL 指令将结果存储在 EDX 和 EAX 中 https://en.wikipedia.org/wiki/X86_instruction_listings

MUL 用于无符号乘法,IMUL 用于有符号乘法。这意味着,与 Jester 所说的相反:对于 32 位操作数,您使用 MUL(无符号),对于第 32 位带符号的 31 位操作数,您使用 IMUL。

如果一切正常,如果 m[edx*4] = 2 和 conv[edx*4] = 3,则 edx = 0 和 eax = 6(反之亦然) 请注意 conv 和 m 是 32 位,最低有效字节位于最低内存位置。

如有错误请指正