【问题标题】:Assembly problem装配问题
【发布时间】:2010-12-08 02:23:27
【问题描述】:

我正在尝试使用 Windows 命令提示符中的 DEBUG 将 5 位小数相乘,但我担心我已经很遥远了。我的程序得到十进制值 1303。什么时候应该是 4320。小数点是 15、12、4、2、3。

mov al, 15
mov bl, 12
mov bh, 4
mov cl, 2
mov ch, 3
mul ax, bl
mul ax, bh
mul ax, cl
mul ax, ch
aam

【问题讨论】:

  • 对不起,2*3*4*12*15 是 4320。
  • 15*12*4*2*3 = 4320。为什么应该是1303?
  • 我输入错了我想要的但程序返回 1303

标签: windows assembly masm


【解决方案1】:

您正在执行字节 x 字节相乘,显然中间结果需要的不仅仅是一个字节。您还乘以 AH 而不是 CH。

【讨论】:

  • 我需要把它改成 mul ax, [value] 之类的吗?
  • 是的,这样可以避免溢出。
  • 好的,我试过了,但结果还是一样,我将发布我现在使用的代码来代替旧的
  • 你没有正确初始化ax,ah寄存器没有设置。而且您仍然没有使用CH。而且我认为这甚至不能组装,你需要一个 16x16 的乘法。你需要睡在这上面。明天学习如何使用调试器。
  • 明天到期,感谢您的帮助
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-05
  • 2015-10-02
  • 2019-04-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多