0

このコードを書くのに問題があります。誰かが私に解決策を教えてもらえますか(BCD番号などは理解していますが、機能するコードを書くことはできません)?

パックされた 2 つの BCD 番号 (それぞれ 4 桁。アドレス OP1 と OP2 にあります) を加算し、結果をアドレス RES に配置することになっています。

前もって感謝します :)

4

2 に答える 2

4

(加算後の小数調整)を使用daaすると、2 進整数を往復することなく、単純に直接加算できます。

このようなもの(完全にテストされていません)

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 に答える