Assembly: printf druckt keine neue Zeile
Ich habe den folgenden Code, der die Anzahl der an @ übergebenen Parameter ausgib./main
. Beachten Sie dasfmt
in demrodata
Sektion. Ich habe die neue Zeile @ aufgenomm\n
, genau wie inC, aber anstatt die neue Zeile zu drucken, wird gedruckt:
Anzahl der Parameter: 1 \ n
Mein Code ist:
;main.asm
GLOBAL main
EXTERN printf
section .rodata:
fmt db "Number of parameters: %d \n", 0
section .text:
main:
push ebp
mov ebp, esp ;stackframe
push dword[ebp+8] ;prepara los parametros para printf
push fmt
call printf
add esp, 2*4
mov eax, 0 ;return value
leave ;desarmado del stack frame
ret
Ich weiß, dass eine 10 vor der 0 und nach der "Zahl ..." infmt
druckt es aus, aber ich willprintf
es zu tun. Ich setze den Code mit @ zusamm NASM und verlinke es dann über GCC um meine ausführbare Datei zu erstellen.