在 masm 中打印十六进制值

Print hexa value in masm

我执行 MapViewOfFile 以获取文件开头的指针,之后我想以六进制打印它的值。

当我将它打印为字符串时,我得到 "MZ" 这是一个很好的值(幻数),但我希望它是六进制 (5A4D)。

我尝试在 wsprintf 中使用 %x 进行格式化,但它不起作用,我得到 230000 作为值..

编辑 %x 的尝试:

.data
    header_format   db "The header is: %x",0 
    buffer          db 256 dup(?) ; File data
.data?
    pMemory DWORD ? ; Pointer to the data in the source file

getData:
    ;pMemory is the ptr which is correctly printed with %s
    invoke wsprintf, ADDR buffer, ADDR header_format, [pMemory] ; 
    invoke MessageBox, NULL, Addr buffer, Addr header_test, MB_OK

你有什么建议吗?

谢谢。

使用这个解决方案终于成功了:

push STD_OUTPUT_HANDLE
call GetStdHandle

mov eax, pMemory
push eax
print   right$(uhex$(eax),2),13,10
pop eax
mov eax, pMemory
push eax
print   right$(uhex$([eax]),2),13,10
pop eax