如何解决ASM x86_64 小程序
我正在学习汇编语言 x86_64(Intel 语法),我制作了一个应该打印数字的小程序(暂时向后,稍后我会做一个真正的 putnbr)
所以我这样做了,但它不起作用......我想知道它的逻辑是否仍然正确,以及我是否在正确的轨道上。不要给我答案,我会找到的。我只想知道我是否应该继续那样做,或者我是否完全搞砸了。如果我是我应该寻找什么。 此外,请随时分享有关汇编语言的任何提示和良好做法。
section .text
global _start
_start:
mov rax,123 ;initializing our nbr
call _printRAXLoop ;calling printing function
mov rax,60 ;three lines
mov rdi,1 ;for
syscall ;exit(0);
_printRAXLoop:
mov rdx,0 ;setting rdx(rest of the div) to 0
mov rbx,10 ;setting rbx = 10
div rbx ;dividing rax by rbx
push rax ;pushing rax to the stack (to save its value)
add rdx,48 ;add 48 to rdx
mov rax,1 ;ID for write()
mov rdi,1 ;file descriptor
mov rsi,rdx ;buffer
mov rdx,4 ;buffer_size
syscall ;calling write()
pop rax ;getting rax value back
cmp rax,0 ;comparing rax to 0
jne _printRAXLoop ;if ^ not equal then loop
ret
谢谢
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。