繁体   English   中英

没错 使用scanf和printf读取和打印整数

[英]Nasm. Reading and printing an interger using scanf and printf

以下是我编写的用于使用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

请记住, scanf需要传递的地址,但是对于printf需要传递的价值。 在两种情况下,您都要传递地址。 您应该为printf push dword [n]

add esp, 6当然应该add esp, 8 我认为那只是一个错字。

另请注意,不建议使用出口syscall。 你应该只retmain ,或使用call exit ,如果你真的想。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM