第二部 トロン仕様チップ命令詳細第十八章 10進演算強化命令
DCADD
10進演算強化命令 <<L2>>

【ニモニックとオペランド】

DCADD src, dest

【機能】

Decimal calculation add
10進強化加算

【オプション】

なし

【命令フォーマットと表記法】

【解説】

 DCADD命令はsrcdestを符号付きパック形式10進数として加算します。
 srcdestの符号が等しい場合には、srcdestを10進加算し、その結果でdestの数字部を置き換えます。
 srcdestの符号が異なる場合には、srcdestを10進減算し、その結果でdestの数字部を置き換えます。
 10進加減算の結果として最上位桁からのキャリー(加算時)またはボロー(減算時)が発生するときには、X_flagをセットします。ボローが最上位桁で発生する場合には、destが10の補数で表現された状態になっているので、DCADJ命令を使用してdestの補数を取る必要があります。
 結果の符号は、旧destの符号が正の場合には"c"、負の場合には"d"に正規化されます。
 srcのサイズがdestのサイズよりも小さい場合には、srcをゼロ拡張します。
destのサイズがsrcのサイズよりも小さい場合には、演算前にdestをゼロ拡張して、結果の上位桁(destに入らない桁)をカットします。この場合、カットされる値を検査して、演算結果がdestのサイズ内で表現できない場合にはオーバフローを示すためにV_flagをセットします。

【フラグ変化】

<<絶対値加算の場合>>

<<絶対値減算の場合>>

【発生EIT】

RIE  src [Gen/ru], dest [Gen/mu]のアドレッシングモード違反
RIE  sx = 11, sy = 11
DDT srcdestの数字部がH'0〜H'9以外の桁を含む
DDT srcdestの符号部がH'a〜H'f以外

【使用例】



 汎用レジスタR6で指定されたロケーションの内容(32ビット長)の数字部とR4で指定されたロケーションの内容(32ビット長)の数字部を、符号が同一であれば10進加算し、符号が異なれば10進減算します。結果はR6で指定されたロケーションに32ビット長で格納されます。