Renesas Synergy™

FAQ 1006614 : 10進補正命令とはどのように使用するのか

10進補正命令は、10進数同士で演算(2進数としての加減算)を行って、その結果で得られた2進数の値を10 進数にするための命令です。たとえば、19+17を計算する場合を考えてみます。加算そのものは2進数の加算として処理されます。その結果、30が得られ ます。30自体は10進数としておかしな値ではないのですが、この加算では下位の4ビットから桁上げが発生しています。本来の10進数では10で桁上げす るところが、この場合には16で桁上げが発生します。そこで10進補正を行なうと、下位4ビットに6が加算され、その結果36と正しい10進加算の結果が 得られます。



このように、4ビットごとの桁上げや値によって補正を行うのが、10進補正の動作で、必ず演算の直後に実行する必要があります。

コーヒーブレーク
10進補正はAレジスタの内容とキャリー・フラグ及び補助キャリー・フラグを用いて行います。実際の補正では、Aレジスタの内容を上位4ビットと下位4 ビットに分けて(10進数の桁毎に分けて)考えます。加算の場合には、結果の値がA~Fになったときか、桁上げが発生したとき(キャリーまたは補助キャ リーがセットされたとき)に対象の4ビットに6を加算(そうでないときには0を加算)します。結果はAレジスタとキャリー・フラグに反映されます。
元々、10進数同士の演算であるために、加算の結果がA~Fになり、同時に桁上げが発生することはありません。

10進補正の詳細な動きについては、78K0Sで10進補正を行うプログラム例を参照して下さい。

適用製品

78K ファミリ
他にご質問がございましたら、リクエストを送信してください