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

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

DCX src, dest

【機能】

Decimal calculation execute with extension flag
10進強化拡張演算

【オプション】

なし

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

【解説】

 DCX命令は符号付き/符号なしパック形式10進数の上位桁の加減算を行います。
 src及びdestは符号付きまたは符号なしパック形式10進数の上位桁と解釈されます。
 S_flagが"0"の場合には、srcX_flagdestに符号なしで10進加算し、その結果をdestと置き換えます。
 S_flagが"1"の場合には、srcX_flagdestから符号なしで10進減算し、その結果をdestと置き換えます。
 10進加算または減算の結果として上位桁からのキャリー(加算)またはボロー(減算)が発生した場合には、X_flagをセットします。
 最上位桁でボローが発生した場合には、destは10の補数で表されています。この場合、DCADJまたはDCADJU命令とDCADJX命令を使用して、最下位桁から補数を取り直す必要があります。
 旧Z_flagが"1"で、新destが"0"のときにのみ、Z_flagを"1"にセットします。
 srcのサイズがdestのサイズよりも小さい場合には、srcdestのサイズにゼロ拡張します。destのサイズがsrcのサイズよりも小さい場合には、演算前にdestsrcのサイズにゼロ拡張して、結果の上位桁(destからオーバフローする桁)をカットします。この場合、カットされる値を検査して、演算結果がdestのサイズ内で表現できない場合にはオーバフローを示すためにV_flagをセットします。

【フラグ変化】

【発生EIT】

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

【使用例】



 S_flagが0の場合には、汎用レジスタR4で指定されたロケーションの内容(32ビット長)とX_flagをR6で指定されたロケーションの内容(32ビット長)に10進加算します。結果はR6で指定されたロケーションに32ビット長で格納されます。
S_flagが1の場合には、R4で指定されたロケーションの内容(32ビット長)とX_flagをR6で指定されたロケーションの内容(32ビット長)から10進減算します。結果はR6で指定されたロケーションに32ビット長で格納されます。