2010-03-29 15 views
10

Sono eccezionalmente nuovo all'assemblaggio. L'ho raccolto solo ieri e ho esaminato molti esempi e ancora non riesco a capire da solo come scrivere sulla console. Ricevo sempre un errore quando mi sembra di replicarlo a modo mio.Come scrivere sulla console in fasm?

risposta

0

Sembra che tu stia essenzialmente cercando di scrivere un programma di ciao mondo. Dai un'occhiata alle risposte alla domanda this e confronta il tuo codice. Questo dovrebbe portarti oltre.

10

Il modo più semplice è utilizzare le funzioni C. Nel suo uso più semplice, printf() prende una stringa come parametro e la scrive sullo standard output.

Questo codice dovrebbe funzionare:

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

Usa 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

Se si desidera poter utilizzare il reindirizzamento del pipe dell'output, è possibile utilizzare 'WriteFile' in un modo simile. –

Problemi correlati