Показать сообщение отдельно

  #6  
Старый 04.07.2008, 06:02
Аватар для *CHEL*
*CHEL*
Новичок
Регистрация: 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
 
Ответить с цитированием