报错:
san.asm(13) : error A2070: invalid instruction operands
san.asm(14) : error A2070: invalid instruction operands
include io32.inc
;r=al*bl
.data
a1 qword 8000h
b1 dword 4000h
r qword 0,0
.code
start:
xor edx,edx
xor eax,eax
mov eax,dword ptr a1
mul b1
mov [r],qword ptr [edx]
mov [r+8],qword ptr [eax]
push eax
mov eax,[edx]
call disphd
pop eax
call disphd
exit 0
end start
参考GPT和自己的思路:
根据你提供的代码和报错信息,可以看到错误是发生在第13行和第14行,即这两行的指令操作数是无效的。在这两行中,分别使用了两个 PTR 操作符,它们的作用是将操作数解释为指针类型。具体来说,第13行中的指令 mov [r],qword ptr [edx]
试图将 EDX 寄存器中的地址里的 8 字节数值传送到 R 所代表的内存地址中。而第14行中的指令 mov [r+8],qword ptr [eax]
试图将 EAX 寄存器中的地址里的 8 字节数值传送到 R 所代表的内存地址加上 8 字节所代表的内存地址中。然而,这两行指令中的操作数都是无效的,可能是因为你没有正确地定义相应的地址。你需要仔细检查变量的定义和使用,确保它们指向正确的地址,并且满足操作要求。