命令語 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 の状態をフラグレジスターに設定
教科書の例題を実行したときのメモリーとレジスターの内容を表
1示す.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 の状態をフラグレジスターに設定
教科書の例題を実行したときのメモリーとレジスターの内容を表 3示す.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 | ||||||||