
04.07.2008, 06:02
|
|
Новичок
Регистрация: 03.07.2008
Сообщений: 7
Провел на форуме: 21070
Репутация:
2
|
|
Сообщение от slesh
Просто так вывести нельзя. так число - это не строка.
Поэтому нужно перевести из числа в строку. Можно сделать это вручную, но лучше юзать API функцию.
Вот код на FASM. Выводит содержимое регистра.
Код:
format PE GUI
entry _start
include 'd:\coding\fasm\include\win32ax.inc'
include 'd:\coding\fasm\include\encoding\win1251.inc'
include 'd:\coding\fasm\include\apia\user32.inc'
section '.data' data readable writeable
formats db "%d",0
zagolovok db "Содержимое регистра",0
temp db 256 dup(?)
section '.code' code readable executable
_start:
mov eax,-1234568
invoke wsprintf,temp,formats,eax
invoke MessageBox,0,temp,zagolovok,MB_OK
invoke ExitProcess,0
section '.idata' import data readable writeable
library kernel32,'KERNEL32.DLL',user32,'USER32.DLL'
include 'd:\coding\fasm\include\apia\kernel32.inc'
wsprintf сишная функция и ответственность за выравнивание стека не несёт.
Вызывающая программа сама должна его выравнивать (add esp,PushedSize где PushedSize колво байт, переданных через стек проге).
В FASM'e для вызова сишных функций существует макрос cinvoke
|
|
|