算術比較命令 CPA (compare arithmeric)

2つの値を算術的に比較し、フラグをセットします。算術的とは、16ビットの2の補数表現を用いた符号付整数として扱うという意味です。すなわち、#7FFF と #8000との比較では、#7FFFの方が大きくなります(32767 > -32768)。

2語命令

書き方

CPA  gr,adr[,xr]

gr : 汎用レジスタ名(GR0〜GR7)

adr : 定数またはラベル

xr : 指標(インデックス)レジスタ名(GR1〜GR7)

カギ括弧 [ ] 内はオプション(省略可能)です。

CPA GRn,LABEL

GRnの内容とLABELが指しているアドレスの内容を算術的に比較して、SZラグをセットする。Oフラグは常に0であり、GRnの内容は変化しない。

CPA GRn,=m

GRnの内容と、定数mを算術的に比較する。(COMETUの機械語には無いことに注意。機械語は上のラベルの場合と同じになる。)

CPA GRn,LABEL,GRm

GRnの内容と、LABELが指しているアドレスにGRmの値を加えたアドレスの内容を算術的に比較する。

例えば、CPA GR0, A の場合、基本的には、GR0の内容から A の指しているメモリの内容を減算し、その結果でフラグをセットし、これを GR0 に戻さない操作に近い動きをしますが、教科書p38下の例のように、オーバーフローが発生するような数値の場合には、異なる動作をします。

CPAにも、他の演算と同様の1語命令があります。

CPAの動作の流れ図