Pointers 如何在MASM32中获取地址的内容?

Pointers 如何在MASM32中获取地址的内容?,pointers,assembly,masm,masm32,Pointers,Assembly,Masm,Masm32,以下过程返回以零结尾的字符串的地址: GetExecutablePath proc local hInstance:HMODULE local szFileName[MAX_PATH]:BYTE invoke GetModuleHandle, NULL mov hInstance, eax .if hInstance == NULL xor eax, eax ret .endif invoke GetModuleFileName, hInstance, addr szFil

以下过程返回以零结尾的字符串的地址:

GetExecutablePath proc

local hInstance:HMODULE
local szFileName[MAX_PATH]:BYTE

invoke GetModuleHandle, NULL
mov hInstance, eax
.if hInstance == NULL
    xor eax, eax
    ret
.endif

invoke GetModuleFileName, hInstance, addr szFileName, sizeof szFileName
.if eax == 000h
    xor eax, eax
    ret
.endif

lea eax, szFileName

ret
GetExecutablePath endp
在我的主要过程中,我想将此地址的内容复制到另一个局部变量中:

local szPath[MAX_PATH]:BYTE
invoke GetExecutablePath
; MOVE CONTENT OF eax TO szPath

我只找到了将eax地址复制(mov)到局部变量的方法,但我正在寻找将引用的内容复制到新变量的方法。

您正在尝试访问已超出范围的局部变量。这是个坏主意。相反,您应该重写
GetExecutablePath
函数,使其接受指向缓冲区的指针

无论如何,要回答这个问题:从技术上讲,您将使用某种形式的内存块拷贝

PS:当您知道eax已经为零时,您不必将其归零;)

PS#2:您应该忘记masm的高级指令,例如
。if
。while
,而改用适当的asm结构。如果你是一个初学者,你应该学习这些,如果你不是,那么就不需要额外的努力,至少你会确切地知道你会得到什么