4 命令一覧

4.1 アセンブラ命令

機能 書式 動作内容 フラグレジスタの変化
プログラム開始 START [実行開始番地] プログラムの開始を示す。プログラムの最初に、必ず書かなくてはならない。  
プログラム終了 END プログラムの終わりを示す。ラベルは使えない。プログラムの最後に、必ず書かなくてはならない。  
定数格納 DC n 10進定数をラベルのアドレスに格納  
DC #h 16進定数をラベルのアドレスに格納
DC '文字列' 文字列をラベルのアドレスから格納
DC ラベル名 ラベル名が示すアドレスを格納
領域の確保 DS n ラベル名で示すアドレスからn語領域を確保  

注意

4.2 機械語命令

機能 書式 動作内容 フラグレジスタの変化
ロード LD r1,r2 レジスタr2の値をレジスタr1にコピー コピーされた値に従い以下のようになる。
OF 0:常にゼロが設定される
SF 1:負の時(第15ビットが1)
0:正の時(第15ビットが0)
ZF 1:ゼロの時(全てのビットが0)
0:ゼロ以外
LD r,adr[,x] アドレスadr[,x]の主記憶の内容をレジスタrにコピー
ストア ST r,adr[,x] レジスタrの内容を主記憶装置のアドレスadr[,x]にコピーする 変化なし
ロードアドレス LAD r,adr[,x] 主記憶装置のアドレス値adr[,x]をレジスタrにコピーする。 変化なし
算術加算 ADDA r1,r2 レジスタr1r2の符号付き加算
r1 $ \leftarrow$r1+r2
演算結果の値に従い以下のようになる。
OF 1:結果が-3276832767の範囲外
0:範囲内
SF 1:負(第15ビットが1)
0:正(第15ビットが0)
ZF 1:ゼロ(全てのビットが0)
0:ゼロ以外
ADDA r,adr[,x] レジスタrと主記憶装置(アドレスadr[,x])の内容を符号付加算
r $ \leftarrow$r+adr[,x]の内容
算術減算 SUBA r1,r2 レジスタr1r2の符号付き減算
r1 $ \leftarrow$r1-r2
SUBA r,adr[,x] レジスタrと主記憶装置(アドレスadr[,x])の内容を符号付減算

r $ \leftarrow$r-adr[,x]の内容

論理加算 ADDL r1,r2 レジスタr1r2の符号無し加算
r1 $ \leftarrow$r1+r2
演算結果の値に従い以下のようになる。
OF 1:結果が065535の範囲外
0:範囲内
SF 1:第15ビットが1)のとき
0:第15ビットが0)のとき
ZF 1:ゼロ(全てのビットが0)
0:ゼロ以外
ADDL r,adr[,x] レジスタrと主記憶装置(アドレスadr[,x])の内容を符号無し加算
r $ \leftarrow$r+adr[,x]の内容
論理減算 SUBL r1,r2 レジスタr1r2の符号無し減算
r1 $ \leftarrow$r1-r2
SUBL r,adr[,x] レジスタrと主記憶装置(アドレスadr[,x])の内容を符号無し減算
r $ \leftarrow$r-adr[,x]の内容
論理積 AND r1,r2 レジスタr1r2のビット毎の論理積を計算。結果はr1に格納。 演算結果の値に従い以下のようになる。
OF 0:常にゼロが設定される。
SF 1:第15ビットが1)のとき
0:第15ビットが0)のとき
ZF 1:ゼロ(全てのビットが0)
0:ゼロ以外
AND r,adr[,x] レジスタrと主記憶装置(アドレスadr[,x])の内容のビット毎の論理積を計算。結果は r1に格納。
論理和 OR r1,r2 レジスタr1r2のビット毎の論理和を計算。結果はr1に格納。
OR r,adr[,x] レジスタrと主記憶装置(アドレスadr[,x])の内容のビット毎の論理和を計算。結果は r1に格納。
排他的論理和 XOR r1,r2 レジスタr1r2のビット毎の排他的論理和を計算。結果はr1に格納。
XOR r,adr[,x] レジスタrと主記憶装置(アドレスadr[,x])の内容のビット毎の排他的論理和を計算。結果は r1に格納。
算術比較 CPA r1,r2 レジスタr1r2を符号付き整数として比較を行う。比較の結果は、FRに設定。 2つの整数の比較(以下の演算)を行う。
r1-r2
r-adr[,x]の内容
OF 0:常にゼロが設定される。
SF 1:負(第15ビットが1)のとき)
0:正(第15ビットが0)のとき)
ZF 1:等しい(全てのビットが0)
0:等しくない
CPA r,adr[,x] レジスタrと主記憶装置(アドレスadr[,x])を符号付き整数として比較。比較の結果は、FRに設定。
論理比較 CPL r1,r2 レジスタr1r2を符号無し整数として比較。比較の結果は、FRに設定。
CPL r,adr[,x] レジスタrと主記憶装置(アドレスadr[,x])を符号無し整数として比較。比較の結果は、FRに設定。
算術左シフト SLA r,adr[,x] レジスタrの内容を符号ビットを除き、adr[,x]の番地分、各ビットを左へシフト。空いたビットには0が入る。
OF :最後に送り出されたビットの値
SF 1:負の時(第15ビットが1)
0:正の時(第15ビットが0)
ZF 1:ゼロの時(全てのビットが0)
0:ゼロ以外
算術右シフト SRA r,adr[,x] レジスタrの内容を符号ビットを除き、adr[,x]の番地分、各ビットを右へシ フト。空いたビットには符号ビットと同じ値が入る。
論理左シフト SLL r,adr[,x] レジスタrの内容を、adr[,x]の番地分、各ビットを左へシ フト。空いたビットには0が入る。
論理右シフト SRL r,adr[,x] レジスタrの内容を、adr[,x]の番地分、各ビットを左へシ フト。空いたビットには0が入る。
正分岐 JPL adr[,x] フラグレジスタのSFZFの両方が0の時(比較の結果、正)、adr[,x]のアドレスへ分岐(実行が移動)する。 変化無し
負分岐 JMI adr[,x] フラグレジスタのSF1の時(比較の結果、負)、adr[,x]のアドレスへ分岐(実行が移動)する。
非零分岐 JNZ adr[,x] フラグレジスタのZF0の時(比較の結果、等しくない)、adr[,x]のアドレスへ分岐(実行が移動)する。
零分岐 JZE adr[,x] フラグレジスタのZF1の時(比較の結果、等しい)、adr[,x]のアドレスへ分岐(実行が移動)する。
オーバーフロー分岐 JOV adr[,x] フラグレジスタのOF1の時(オーバーフロー)、adr[,x]のアドレスへ分岐(実行が移動)する。
無条件分岐 JUMP adr[,x] 無条件に、adr[,x]のアドレスへ分岐(実行が移動)する。
プッシュ PUSH adr[,x] スタック領域に、adr[,x]のアドレスを格納する。 変化無し
ポップ POP r スタック領域からデータを取りだし、レジスタrに格納
コール CALL adr[,x] サブルーチンを呼び出す。adr[,x]に実行が移る。 変化無し
リターン RET サブルーチンから呼び出し元のルーチンへ実行が移る。
スーパーバイザーコール SVC adr[,x] OSの機能を呼び出す。マクロ命令のINOUTで使われている。 不定。OSに依存する。
ノーオペレーション NOP なにも実行されない命令。 変化しない。

4.3 マクロ命令

機能 書式 動作内容 フラグレジスタの変化
入力命令 IN ラベル1,ラベル2 入力領域(ラベル1)に入力装置から文字データを入れる。入力文字長は、ラベル2に入る。 不定。OSに依存
出力命令 OUT ラベル1,ラベル2 出力領域(ラベル1)の文字データ、ラベル2が示す数だけを出力装置に送る。 不定。OSに依存
レジスターの待避 RPUSH 汎用レジスター内容を、GR1 $ \rightarrow$GR7の順序でスタック領域に格 納。 不定。OSに依存
レジスターの復元 RPOP スタック領域の内容を、GR7 GR1の順序で汎用レジスタに格納。 不定。OSに依存

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


no counter