Ich bin außergewöhnlich neu in der Montage. Ich habe es gestern erst abgeholt und ich habe mir viele Beispiele angesehen und kann immer noch nicht selbst herausfinden, wie ich auf die Konsole schreiben soll. Ich bekomme immer einen Fehler, wenn ich es auf meine Art zu replizieren scheint.Wie schreibe ich in die Konsole in fasm?
10
A
Antwort
0
Es scheint, dass Sie im Wesentlichen versuchen, ein Hallo Weltprogramm zu schreiben. Werfen Sie einen Blick auf die Antworten auf this Frage und vergleichen Sie mit Ihrem Code. Das sollte dich weiterbringen.
10
Der einfachste Weg ist die Verwendung der C-Funktionen. In seiner einfachsten Verwendung nimmt printf()
eine Zeichenfolge als Parameter und schreibt sie auf die Standardausgabe.
sollten Dieser Code funktioniert:
format PE console
entry start
include 'win32a.inc'
section '.text' code executable
start:
push hello
call [printf]
pop ecx
push 0
call [ExitProcess]
section '.rdata' data readable
hello db 'Hello world!', 10, 0
section '.idata' data readable import
library kernel32, 'kernel32.dll', \
msvcrt, 'msvcrt.dll'
import kernel32, ExitProcess, 'ExitProcess'
import msvcrt, printf, 'printf'
10
Verwendung WriteConsole.
include 'win32wxp.inc'
.code
start:
invoke AllocConsole
invoke WriteConsole,<invoke GetStdHandle,STD_OUTPUT_HANDLE>,tex,12,dummy,0
invoke Sleep,-1
.end start
.data
tex TCHAR 'Hello World!'
dummy rd 1
Wenn Sie die Pipe-Umleitung Ihrer Ausgabe verwenden möchten, können Sie 'WriteFile' auf ähnliche Weise verwenden. –