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

MASM+Irvine汇编实现商品单价乘数量求和结果错误问题求助

问题排查结果

你的代码存在两处核心逻辑错误:

  • 乘积结果读取错误:32位乘法指令mul ebx执行后,乘积的低32位存储在eax寄存器,高32位存储在edx寄存器,原代码错误地从存储单价的ebx寄存器取值,无法拿到正确的商品总价。
  • 未做累加操作:每次计算完单个商品总价后,你直接用mov subTotal, xxx覆盖了subTotal的原值,没有把当前商品总价累加到总金额中,最终subTotal只会存储最后一个计算的商品总价。

修正后的计算逻辑

替换你原代码中计算小计的部分即可:

;## Display Sub Total ##
lea edx, msg31
call writeString
lea edx, msg32
call writeString

; 先将总金额初始化为0
mov subTotal, 0

mov eax, Oxfordquantity
mov ebx, Oxford
mul ebx
add subTotal, eax ; 累加当前商品总价到总金额

mov eax, Derbyquantity
mov ebx, Derby  
mul ebx
add subTotal, eax

mov eax, Blucherquantity
mov ebx, Blucher 
mul ebx
add subTotal, eax

mov eax, ChelseaBootquantity
mov ebx, ChelseaBoot    
mul ebx
add subTotal, eax

mov eax, Loaferquantity
mov ebx, Loafer 
mul ebx
add subTotal, eax

mov eax, Broguesquantity
mov ebx, Brogues 
mul ebx
add subTotal, eax

; 输出最终总金额
mov eax, subTotal
call WriteDec

修改后即可正确计算累加值,你所描述的测试场景将输出预期的17330结果。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 20:27:02