汇编里PTR的疑问???

报错:


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 字节所代表的内存地址中。然而,这两行指令中的操作数都是无效的,可能是因为你没有正确地定义相应的地址。你需要仔细检查变量的定义和使用,确保它们指向正确的地址,并且满足操作要求。