2 比較命令

2.1 算術比較(CPA)

2.1.1 内容

命令語 CPA
語源 ComPare Arithmetic (compare:比較する arithmetic:算術)
役割 符号付き整数の比較を行う命令
書式 教科書(p.56)の通り
機能 教科書(p.56)の通り
フラグレジスタ 教科書(p.56)の通り。

この命令は、符号付き整数の差の演算結果の状態がフラグレジスターに設定すると考えれば良い。 たとえば、CPA GR1,GR2の場合、GR1-GR2の演算結果の正負、あるいはゼロか否 か、オーバーフローが有るか無いかがフラグレジスタに設定される。ただし、オペランド であるGR1GR2の値は変わらない。

2.1.2 使用例

      CPA   GR0,GR1      ;GR0-GR0 の状態をフラグレジスターに設定
      CPA   GR0,A        ;GR0-(アドレスAの内容) の状態をフラグレジスターに設定
      CPA   GR0,A,GR1    ;GR0-(アドレス[A+GR1]の内容) の状態をフラグレジスターに設定
      CPA   GR0,=5       ;GR0-5 の状態をフラグレジスターに設定

教科書の例題を実行したときのメモリーとレジスターの内容を表 2示す。1, 5, 6, 7行はアセンブラ命 令なので実行されない。そのため、メモリーやレジスタの値は空白としている。

表 2: 教科書List4-11(p.56)の実行例。
プログラム GR1 OF SF ZF AA BB
1 PGM START
2 LD GR1,AA 2 0 0 0 2 -1
3 CPA GR1,BB 2 0 0 0 2 -1
4 RET 2 0 0 0 2 -1
5 AA DC 2
6 BB DC -1
7 END

教科書のList4-11はつまらない例題で、CPAコマンドも動作も分からないし、説明も おかしい。次のようなサンプルの方が良い。

表 3: CPAの実行例。
プログラム GR1 OF SF ZF AA BB
1 PGM START
2 LD GR1,AA 2 0 1 0 -2 -3
3 CPA GR1,BB 2 0 0 0 -2 -3
4 RET 2 0 0 0 -2 -3
5 AA DC -2
6 BB DC -3
7 END

2.2 論理比較(CPL)

2.2.1 内容

命令語 CPL
語源 ComPare Logical (compare:比較する logical:論理上の)
役割 符号無し整数の比較を行う命令
書式 教科書(p.57)の通り
機能 教科書(p.57)の通り
フラグレジスタ 教科書(p.57)の通り。

この命令は、符号無し整数の差の演算結果の状態がフラグレジスターに設定すると考えれば良い。 たとえば、CPA GR1,GR2の場合、GR1-GR2の演算結果の正負、あるいはゼロか否 か、オーバーフローが有るか無いかがフラグレジスタに設定される。ただし、オペランド であるGR1GR2の値は変わらない。

2.2.2 使用例

      CPL   GR0,GR1      ;GR0-GR0 の状態をフラグレジスターに設定
      CPL   GR0,A        ;GR0-(アドレスAの内容) の状態をフラグレジスターに設定
      CPL   GR0,A,GR1    ;GR0-(アドレス[A+GR1]の内容) の状態をフラグレジスターに設定
      CPL   GR0,=5       ;GR0-5 の状態をフラグレジスターに設定

教科書の例題を実行したときのメモリーとレジスターの内容を表 4示す。1, 5, 6, 7行はアセンブラ命令なので実行されない。そ のため、メモリーやレジスタの値は空白としている。

このサンプルプログラムで注意することは、符号付き整数でアドレスAAの値を決めている が、比較を行うときは符号無し整数としている。それらは、

アドレス ビットパターン 符号無整数  符号有整数
AA 0000000000000010 (2)$ _{10}$ (2)$ _{10}$
BB 1111111111111111 (65535)$ _{10}$ (-1)$ _{10}$
     
となっている。
表 4: 教科書List4-12(p.58)の実行例。
プログラム GR1 OF SF ZF AA BB
1 PGM START
2 LD GR1,AA 2 0 0 0 2 -1
3 CPL GR1,BB 2 0 1 0 2 -1
4 RET 2 0 1 0 2 -1
5 AA DC 2
6 BB DC -1
7 END


ホームページ: Yamamoto's laboratory
著者: 山本昌志
Yamamoto Masashi
平成16年10月15日


no counter