2010-03-29 7 views
10

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?

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 
+0

Wenn Sie die Pipe-Umleitung Ihrer Ausgabe verwenden möchten, können Sie 'WriteFile' auf ähnliche Weise verwenden. –