You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用NASM实现十进制数打印遇问题:无内容输出

问题分析与修复

你的NASM代码没有输出的核心原因是:程序入口_start中仅将数值22存入eax,但从未调用printDecimal打印子程序,程序会直接跳过打印逻辑,走到后续的printBinary空块和不完整的退出逻辑。

另外还有一个次要问题:退出逻辑exit中只设置了系统调用号eax=1(对应exit调用),但缺少触发系统调用的int 80h指令,会导致程序退出不规范。

修正后的代码

section .text
        global _start

_start:
        mov eax,22
        call printDecimal  ; 调用打印十进制数的子程序

printDecimal:
        push eax
printDecimalSub:
        mov edx,0
        mov ecx,10
        div ecx

        push eax
        mov eax,4
        mov ebx,1
        mov ecx,edx
        add ecx,48
        mov edx,1
        int 80h
        pop eax

        cmp eax,0
        jne printDecimalSub

printBinary:

exit:
        mov eax,1
        int 80h  ; 触发exit系统调用,正常退出程序

关键修改点

  • 在_start的mov eax,22后添加call printDecimal,让程序执行打印逻辑。
  • 在exit块的mov eax,1后添加int 80h,正确触发Linux系统调用完成程序退出。

内容的提问来源于stack exchange,提问作者suiciyom

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 12:15:45