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

汇编语言实现N个数最大值查找:结果莫名加256问题求助

汇编找最大值显示多256的问题修复

问题根源

你程序中找到的最大值存在8位寄存器al里,但显示环节存在类型不匹配:

  • 若result被定义为16位的字(dw类型),且显示函数按16位整数输出,result的高8位如果残留0x01,就会导致显示结果为256 + 实际最大值。
  • 或者显示函数默认按16位处理,而你仅给低8位赋值,高字节未清零。

修复方案

方案1:使用8位存储+对应显示函数

在data段中,将result的定义从dw ?改为db ?(字节类型),同时调用支持显示8位数值的函数(比如printbyte,而非16位的printword)。

方案2:清零高字节后按16位存储

如果必须用16位显示函数,在存储结果时清空高8位,确保16位数值正确:

exit:
  mov ah, 00h       ; 清空高8位,让AX完整存储8位最大值的16位形式
  mov si, offset result
  mov [si], ax

额外检查点

确认readnum函数的返回值:如果它将输入存入16位变量,你用al取低8位是正确的,但如果输入数值超过255会被截断,若需求是处理0-255的数则无问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 22:33:18