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

x86汇编两数相加异常:输出字符而非预期数字求助

x86汇编两数相加输出字符而非数字的问题排查与解决

问题根源

你看到输出b的核心原因是直接对数字的ASCII字符值进行了运算:

  • 输入的数字字符'1'对应的ASCII码值是49,两个'1'相加得到49+49=98;
  • ASCII码98对应的字符正是小写字母b,这和你看到的输出完全匹配;
  • 你代码里的sub eax, 0没有任何实际作用,既没完成字符到数值的转换,也不影响运算结果。

修复方案

要实现正确的数字计算并输出数字字符,需要完成两步转换:

  1. 字符转数值:将输入的数字字符减去'0'(ASCII码48),得到对应的十进制数值;
  2. 数值转字符:计算完成后,将结果加上'0',转回对应的数字字符,再执行输出操作。

修正后的代码片段

.plus:
                mov eax, [num1]
                sub eax, '0'       ; 把字符转成十进制数值
                mov ebx, [num2]
                sub ebx, '0'       ; 同上
                add eax, ebx       ; 数值相加
                add eax, '0'       ; 把结果转回数字字符
                mov [num3], eax
                jmp .result

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 06:23:13