组装新手,打算将“ 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 (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...