我刚刚开始学习asm,我正在尝试创建一个程序,要求用户输入(N)并打印从1到N的数字。 问题是,当我尝试打印我从scanf获得的值时,如果它不起作用。循环只打印&#34 ;;"。
这是我到目前为止所拥有的:
section .data
msg db "Enter a number: "
fmt db "%d", 0
section .bss
N resb 1
section .text
extern scanf
global main
main:
mov rax, 1
mov rdi, 1
mov rsi, msg
mov rdx, 15
syscall
mov rax, 0
mov rdi, fmt
mov rsi, N
call scanf
这是我尝试打印从scanf获得的数字N
mov rax, 1
mov rdi, 1
mov rsi, N
mov rdx, 1
syscall
循环
mov rcx, 0
loop:
inc rcx
mov rax, 1
mov rdi, 1
mov rsi, rcx
mov rdx, 1
syscall
cmp rcx,[N]
jne loop
关闭程序
mov rax,60
mov rdi,0
syscall
这是我编译的方式:
nasm -f elf64 -o program.o program.asm
gcc -o program program.o