0

我无法编写此代码。有人可以给我解决方案(我了解 BCD 数字等,我就是无法编写有效的代码)?

它应该添加两个打包的 BCD 数字(每个 4 位数字;它们位于地址 OP1 和 OP2)并将结果放在地址 RES 中。

提前致谢 :)

4

2 回答 2

4

使用daa(加法后的十进制调整),您可以直接将它们相加,而无需通过二进制整数进行往返。

像这样的东西(完全未经测试)

mov al, [OP1]
add al, [OP2]
daa
mov [RES], al
mov al, [OP1 + 1]
adc al, [OP2 + 1]
daa
mov [RES + 1], al
于 2015-01-31T11:45:03.663 回答
2

我不会给你一个解决方案,而是一些指导。您需要将您的工作分成 5 个简单的阶段:

  1. 读取 BCD 编码的数字
  2. 将它们解码为内存中的整数
  3. 执行添加
  4. 将加法结果编码回 BCD 表示
  5. 将结果存储在 RES 中

我认为每个阶段都比较容易实现,希望这能帮助你自己解决。

于 2015-01-31T10:30:29.850 回答