命令語 CPA 語源 ComPare Arithmetic (compare:比較する arithmetic:算術) 役割 符号付き整数の比較を行う命令 書式 教科書(p.56)の通り 機能 教科書(p.56)の通り フラグレジスタ 教科書(p.56)の通り。
この命令は、符号付き整数の差の演算結果の状態がフラグレジスターに設定すると考えれば良い。 たとえば、CPA GR1,GR2の場合、GR1-GR2の演算結果の正負、あるいはゼロか否 か、オーバーフローが有るか無いかがフラグレジスタに設定される。ただし、オペランド であるGR1やGR2の値は変わらない。
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行はアセンブラ命
令なので実行されない。そのため、メモリーやレジスタの値は空白としている。
行 | プログラム | 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コマンドも動作も分からないし、説明も
おかしい。次のようなサンプルの方が良い。
行 | プログラム | 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 | ||||||||
命令語 CPL 語源 ComPare Logical (compare:比較する logical:論理上の) 役割 符号無し整数の比較を行う命令 書式 教科書(p.57)の通り 機能 教科書(p.57)の通り フラグレジスタ 教科書(p.57)の通り。
この命令は、符号無し整数の差の演算結果の状態がフラグレジスターに設定すると考えれば良い。 たとえば、CPA GR1,GR2の場合、GR1-GR2の演算結果の正負、あるいはゼロか否 か、オーバーフローが有るか無いかがフラグレジスタに設定される。ただし、オペランド であるGR1やGR2の値は変わらない。
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) | (2) |
BB | 1111111111111111 | (65535) | (-1) |
行 | プログラム | 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 | ||||||||