打包BCD 4位数(8086汇编程序)

时间:2015-01-31 10:03:24

标签: assembly x86-16 bcd

我在编写此代码时遇到问题。有人可以给我解决方案(我理解BCD号码等,我只是不能编写有效的代码)?

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

提前致谢:)

2 个答案:

答案 0 :(得分:2)

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

  1. 阅读BCD编码的数字
  2. 将它们解码为内存中的整数
  3. 执行添加
  4. 将添加结果编码回BCD表示
  5. 将结果存储在RES
  6. 我认为每个阶段都相对容易实现,希望这可以帮助您自己解决。

答案 1 :(得分:2)

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

像这样(完全未经测试)

mov al, [OP1]
add al, [OP2]
daa
mov [RES], al
mov al, [OP1 + 1]
adc al, [OP2 + 1]
daa
mov [RES + 1], al