2017-02-05 2 views
0

Я создаю MapViewOfFile, чтобы получить указатель на начало моего файла, после чего я хочу напечатать его значение в hexa.Печать значения hexa в masm

Когда я печатаю его как строку, я получаю «MZ», что является хорошим значением (магическое число), но я хочу его в гекса (5A4D).

Я пытался форматировать с% х в wsprintf, но он не работает, я получил 230000 в качестве значения ..

EDIT испытанный для% х:

.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 

Есть ли у вас какие-нибудь предложения?

Спасибо.

+0

Покажите, как вы пробовали '% x'. Это должно сработать. – Jester

+0

@Jester спасибо за помощь! Я отредактировал сообщение с кодом – pipou

+1

Вы * разыгрываете * указатель вместо того, чтобы передавать сам адрес. –

ответ

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 
Смежные вопросы