如何解决组装新手,打算将“ 0”打印到“ 9”,意想不到的错误
这是在NASM-v2.13.02中正确运行的代码...
section .data
digit db 0,10;defines the first number with newline character
section .text
global _start
_start:
mov rbx,48 ;ascii 48 => '0'
mov rcx,57 ;ascii 57 => '9'
loop: call _printRBX ;print rbx
add rbx,1 ;rbx += 1
cmp rbx,57 ;rbx <= 57 ? (true/false)
jle loop ; jump to "loop" if above is true
mov rax,60 ;id=sysexit
mov rdi,0 ;errorcode=0
syscall
_printRBX: ;prints last byte of rbx
mov [digit],bl ;move pointer of digits to last 1byte of rbx
mov rax,1 ;id=syswrite
mov rdi,1 ;desc=standard output
mov rsi,digit ;buffer input
mov rdx,2 ;write byte size
syscall
ret
标签“ loop”中的“ 57”被rcx替换时...变成了无限循环!
section .data
digit db 0,rcx ;rbx <= rcx ? (true/false)
jle loop ; jump to "loop" if above is true
mov rax,2 ;write byte size
syscall
ret
请让我了解这是如何发生的以及我该如何解决!! 谢谢!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。