COMETUの命令コード
r, r1,r2 : 汎用レジスタ(GR)。指定できるGRはGR0〜GR7まで。
adr : アドレス。指定できる値の範囲は0〜65535まで(16ビット)。
x : 指標レジスタとして用いるGR。指定できるGRはGR1〜GR7まで。
SP : スタックポインタ。スタックの最上段のアドレスを保持している。
FR : フラグレジスタ。OF(Overflow Flag), SF(Sign Flag), ZF(Zero Flag)の3ビットからなる。
以下の表で,[ ]内の指定は省略できることを示す。
また,( )は,( )内のレジスタ又はアドレスに格納されている内容を示す。
+L, -L は,それぞれ,論理加算,論理減算を示す。
FRの設定
○ :設定されることを示す。
○1:設定されることを示す。ただしオーバーフローフラグOFにはゼロ0が設定される。
○2:設定されることを示す。ただしオーバーフローフラグOFにはレジスタから最後に送り出されたビットの値が設定される
―:実行前の値が保持される。
* COMETとフラグレジスタの設定が異なっているので注意する
(特にLDとLADのフラグレジスタの設定はCOMETと逆)
命令の種類 |
命令コード |
オペランド |
命令の意味 |
|
FRの設定 |
ロード, |
LD |
r, adr [, x] |
load |
r ← (adr) |
○1 ― ― |
ロード (レジスタ間) |
LD |
r1, r2 |
load |
r1 ← (r2) |
○1 |
算術/論理加減算 |
ADDA |
r, adr [, x] |
add arithmetic |
r ← (r) + (adr) |
○ ○ ○ ○ |
算術/論理加減算 |
ADDA |
r1, r2 |
add arithmetic |
r1 ← (r1) + (r2) |
○ ○ ○ ○ |
論理演算 |
AND |
r, adr [, x] |
and |
r ← (r) AND (adr) |
○1 ○1 ○1 |
論理演算 |
AND |
r1, r2 |
and |
r1 ← (r1) AND (r2) |
○1 ○1 ○1 |
比較演算 |
CPA |
r, adr [, x] |
compare arithmetic |
(r)と(adr)の算術比較または |
○1 ○1 |
比較演算 |
CPA |
r1, r2 |
compare arithmetic |
(r1)と(r2)の算術比較または |
○1 ○1 |
シフト演算 |
SLA |
r, adr [, x] |
shift left arithmetic |
符号を除き(r)をadrビット左シフト |
○2 ○2 ○2 ○2 |
分岐 |
JMI |
adr [, x] |
jump on minus |
FRの値によって実効アドレスに分岐する |
― ― ― ― ― ― |
スタック操作 |
PUSH |
adr [, x] |
push |
SP ← (SP) -L 1, (SP) ← adr |
― ― |
コール |
CALL |
adr [, x] |
call subroutine |
SP ← (SP) -L 1, (SP) ← (PR), PR ← adr |
― |
リターン |
RET |
|
return from subroutine |
PR ← ( (SP) ), SP ← (SP) +L 1 |
― |
スーパバイザコール |
SVC |
adr [, x] |
supervisor call |
実効アドレスを引数として割り出しを行う。 |
― |
ノーオペレーション |
NOP |
|
no operation |
なにもしない |
― |
CASLUの命令の種類
命令は,
・ アセンブラ命令(START, END, DS, DC)
・ マクロ命令(IN, OUT)
・ 機械語命令(COMETUの命令)
からなる。
アセンブラ命令
START |
[実行開始番地] |
END |
|
DS |
語数 |
DC |
定数 [, 定数 …] |
マクロ命令
IN |
入力領域, 入力文字長領域 |
OUT |
出力領域, 出力文字長領域 |
RPUSH |
GRの内容を,GR1,GR2,…,GR7 の順序でスタックに格納する。 |
RPOP |
スタックの内容を順次取り出し,GR7,GR6,…,GR1 の順序でGRに 格納する |
詳しくは,情報処理技術者試験センターのホームページ https://www.jitec.ipa.go.jp/
の中の「出題範囲」→「アセンブラ言語の仕様」を参照のこと。
COMETとCOMETUの対応表
COMET |
COMETU |
LEA |
LAD (ただしLADはフラグレジスタを変化させないので注意) |
JMP |
JUMP |
JPZ |
JPL と JZE を組み合わせて使う |
ADD |
ADDA または ADDL |
SUB |
SUBA または SUBL |
EXIT |
RET |