Subsections
今まで,学習したCOMET IIの命令は,次の通りである.これを思い出して,本日の学習内
容と絡めて,理解を深める必要がある.
- アセンブラ命令
開始 |
START |
プログラムの先頭を示し,入口名と実行開始番地を定義 |
終了 |
END |
プログラムの終わりを明示 |
領域確保 |
DS |
プログラムで使うメインメモリーを予約 |
定義 |
DC |
メインメモリーの初期値設定 |
- 機械語命令
- データ転送命令
データ転送 |
LD |
メインメモリーやレジスターの内容を汎用レジスタに転送 |
データ転送 |
ST |
汎用レジスタのデータをメインメモリーへ転送 |
アドレス転送 |
LAD |
実効アドレスを汎用レジスターへ転送 |
- 算術,論理演算
算術加算 |
ADDA |
1語のデータを符号付き整数と見なし,加算を行う. |
論理加算 |
ADDL |
1語のデータを符号無し整数と見なし,加算を行う. |
算術減算 |
SUBA |
1語のデータを符号付き整数と見なし,減算を行う. |
算術減算 |
SUBL |
1語のデータを符号無し整数と見なし,減算を行う. |
論理積 |
AND |
1語のデータのビット毎の論理積の演算を行う. |
論理和 |
OR |
1語のデータのビット毎の論理和の演算を行う. |
排他的論理和 |
XOR |
1語のデータのビット毎の排他的論理和の演算を行う. |
これは,乗算や除算を行うときに使う.CASL IIのシフト命令は,次の通りである.
- レジスタの内容をシフトさせることにより,
倍したり,
倍する.レ
ジスターの内容は,符号付き整数として取り扱われる
算術左シフト |
SLA |
レジスタの内容を符号ビットを除き左にシフト.空きには0が入る. |
算術右シフト |
SRA |
レジスタの内容を符号ビットを除き左にシフト.空きには符号ビットが入る |
|
|
|
- レジスタの内容をシフトさせることにより,
倍したり,
倍する.レ
ジスターの内容は,符号なし整数として取り扱われる
論理左シフト |
SLL |
1語全てを,左にシフト.空きには0が入る |
論理右シフト |
SRL |
1語全てを,右にシフト.空きには0が入る |
|
|
|
比較とジャンプ命令は,セットで使われることが多く,数の比較を行い,その結果を受けて,処理の実行を変える.FORTRANやC言語では,
IF(A.GT.B)GO TO 200 if(a>b)goto next_step;
と書かれる構文とにている.A.GT.Bが比較命令で,IFとGO TOがジャンプ命令に相当する.
CASL IIの比較とジャンプの命令は,次の通りである.
- 整数の大小の比較命令を学習する.比較の結果は,フラグレジスタ(FR)を設定す
ることで示される.
算術比較 |
CPA |
データは符号付き整数と見なし,比較を行う. |
論理比較 |
CPL |
データは符号無し整数と見なし,比較を行う. |
- フラグレジスタ(FR)の値に基づいて,処理を分岐させる.
正分岐 |
JPL |
SFとZFがともに0の時,指定の実効アドレスに分岐 |
負分岐 |
JMI |
SFが1の時,指定の実効アドレスに分岐 |
非零分岐 |
JNZ |
ZFが0の時,指定の実効アドレスに分岐 |
零分岐 |
JZE |
ZFが1の時,指定の実効アドレスに分岐 |
オーバーフロー分岐 |
JOV |
OFが1の時,指定の実効アドレスに分岐 |
無条件分岐 |
JUMP |
無条件に,指定の実効アドレスに分岐 |
ホームページ:
Yamamoto's laboratory著者:
山本昌志
Yamamoto Masashi
2006-01-29