在masm中打印hexa值

时间:2017-02-05 15:07:08

标签: windows assembly hex masm32

我做了一个MapViewOfFile来获取指向我文件开头的指针,之后我想以hexa打印它的值。

当我将其打印为字符串时,我得到" 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

你有什么建议吗?

感谢。

1 个答案:

答案 0 :(得分:0)

最终使用此解决方案:

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