我正在尝试编写一个打印整数的程序,整数存储在rax寄存器中,我不知道为什么它只打印整数的第一个数字,在这种情况下它是3。 程序将rax除以10并将余数+ 48存储在保留的内存中以便稍后显示。只要rax不是0,我们就重复这个。
代码:
section .bss
integer resb 100
section .text
global _start
_start:
mov rax, 321
call _printRAX
mov rax, 60
mov rdi, 0
syscall
_printRAX:
mov rbx, 10
mov rcx, integer
mov [rcx], rbx
_loop1:
inc rcx
mov rdx, 0
div rbx
add rdx, 48
mov [rcx], dl
cmp rax, 0
jne _loop1
_loop2:
mov rax, 1
mov rdi, 1
mov rsi, rcx
mov rdx, 1
syscall
dec rcx
cmp rcx, integer
jge _loop2
ret
输出:
3