Subsections

3 命令一覧

3.1 アセンブラ命令

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

注意

3.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 なにも実行されない命令. 変化しない.

3.3 マクロ命令

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

ホームページ: Yamamoto's laboratory
著者: 山本昌志
Yamamoto Masashi
2006-02-08


no counter