В результате на мой пост Могу ли я использовать int21h для windows xp для печати?, я видел статью об использовании Windows API и в этой статье был ссылкой на использование API _WriteConsole @ 4 для печати сообщения на консоль. Статья находится в http://cs.lmu.edu/~ray/notes/x86assembly/.x86 assembly - как использовать Windows API _WriteConsole @ 4 - синтаксис masm32
Вот мой код до сих пор:
.386P
.model flat
extern [email protected]:near
extern [email protected]:near
extern [email protected]:near
public _go
.data
msg byte 'if you get this, it worked.', 10
handle dword ?
written dword ?
.code
start:
_go:
push -11
call [email protected]
mov handle, eax
push 0
push offset written
push 13
push offset msg
push handle
call [email protected]
push 0
call [email protected]
end start
Я использую этот синтаксис для компиляции кода: ML:
ml (the file is called test.asm) test.asm /c
Ссылка:
link test.obj C:\masm32\lib\kernel32.lib /SUBSYSTEM:CONSOLE /entry:go
Я получил его компилировать и связывать, но когда я запускаю созданный .exe, он ничего не делает, даже ошибка очередь. Консоль просто черная. Почему это?
Любая помощь была бы принята с благодарностью. И пользователям этого форума я прошу прощения за бомбардировку stackoverflow.com каждый день, просто у меня очень мало ресурсов для изучения.
Спасибо заранее,
Progrmr
Работает для меня на Visual Studio 2010 (10.00.40219.01), хотя вы должны настроить '13' как действительную длину' msg'. – DCoder
Действительно? Я использую командную строку и вводя строки 'ml' и' link' в сообщении. Как я могу заставить это работать? – Progrmr