汇编语言实现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
相关产品推荐
相关产品推荐

