Montagem: printf não imprime nova linha
Eu tenho o seguinte código que imprime o número de parâmetros passados para./main
. Observe ofmt
norodata
seção. Eu incluí a nova linha\n
, assim como emC, mas em vez de imprimir a nova linha, ela imprime:
Número de parâmetros: 1 \ n
Meu código é:
;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
Eu sei que incluindo um 10 antes do 0 e depois do "Número ..." emfmt
vai imprimi-lo, mas eu queroprintf
para fazer isso. Eu montei o código comNASM e depois vinculá-lo viaGCC para criar meu executável.