以下是我为使用scanf和printf读取和打印整数而编写的代码。但是打印结果不正确。
Section .data
formatint: db "%d",0
formatintout: db "%d",10,0
section .bss
i: resd 1
j: resd 1
n: resd 1
section .text
extern printf
extern scanf
global main
main:
push n
push formatint
call scanf
add esp,8
push n
push formatintout
call printf
add esp,6
exit:
mov eax,1
mov ebx,0
int 80h
答案 0 :(得分:0)
请注意,对于scanf
,您需要传递地址,但对于printf
,您需要传递该值。在这两种情况下,您都要传递地址。您应该为push dword [n]
执行printf
。
add esp, 6
当然应该是add esp, 8
。我认为这只是一个错字。
另请注意,建议不要使用exit syscall。您应该ret
来自main
,或者如果您真的想要使用call exit
。