在 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
我执行 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