NEC ELECTRONICS NEC ELECTRONICS
NEC electronics NEC electronics NEC
ホーム
アプリケーション
製品情報
先端技術
サポート
WEBショップ
ニュース&イベント
会社案内
header
GO
詳細検索機能/特性検索
サイトマップ お問い合わせ

マイコンでの10進演算(78K0,78K0S,78K0R)

目次

    
FAQ-ID = 78cor-nnnn
0001: マイコンでの10進演算(78K0,78K0S,78K0R)
78cor
-0001
マイコンでの10進演算(78K0,78K0S,78K0R)
Q1
マイコンで2進数から10進数に変換するときに10進補正命令を使用するのか?
A1
はい、そうです。2進数で演算を行なった結果を10進数に変換するときに10進補正命令を使用します。

(2007/06)

この情報はお役にたちましたか?
Q2
2進数の数値をAレジスタにセットして10進補正を行ったが、きちんとした結果が得られない。
A2
10進補正命令は2進数を10進数に変換する命令ではありません。2進数を10進数に変換するには、変換のためのプログラムを作成する必要があります。

(2007/06)

この情報はお役にたちましたか?
Q3
10進補正命令とはどのように使用するのか
A3
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進補正を行うプログラム例を参照して下さい。

(2007/06)

この情報はお役にたちましたか?
Q4
78K0R/Kx3では10進補正命令がないが、10進補正はできないのか。
A4
いいえ、できます。
10進補正は、上記の計算例でも分かるように、演算結果(4ビットごとの桁上げや値)によって補正値を加算(減算)することで処理されます。つまり、演算結果に応じて、補正する値を発生できれば、その発生した値を加算(減算)すれば同じ結果がえられます。
このように、わざわざ命令として10進補正命令がなくても同じことができることから、78K0Rでは命令セットから10進補正命令を削除しています。

コーヒーブレーク
10進の計算方法にはいくつかの方法があります。命令として、10進加算命令や10進減算命令をもつ考え方もありますし、補正で済ませる考え方もあります。殆んどの場合に10補正が用いられています。
初期のマイコンの8080では10進補正命令でも加算でしか使えませんでした。この場合、10進の減算を行うにはかなりの処理が必要でした。その点を改良したマイコンでは、加算したか/減算したかのフラグを準備し、1つの補正命令で加算と減算に対応できるようにしたものがありました。後者の方が使い易いのは明らかですが、市場では前者が使用されていたために、コンパチビリティの関係で後者はなかなか受け入れられませんでした。その後、Z80が出て、後者の方式が一般的になりました。このフラグを追加する方法は従来とのソフトの継承性から出てきたものです。継承性を考えなければ、現在の78K0のような加算用の補正命令と減算用の補正命令の方がフラグを必要としないだけ構成は簡単です。

(2007/06)

この情報はお役にたちましたか?
back to top  
(2007/06)









































 ご利用にあたって  個人情報保護について  RSS       © 1995-2008  NEC Electronics Corporation