命令セット
(instruction set)
仮想コンピュータ 命令セット
ニーモニック
書 式
命令コード
動 作
Z
C
入出力
IN
IN
0000 0010
Input port → Acc
OUT
OUTT
0000 0011
Acc → Output port
アキュムレータ
操作
CLR
CLR
0000 0001
0 → Acc
1
INC
INC
0000 0100
Acc + 1 → Acc
DEC
DEC
0000 0101
Acc - 1 → Acc
SFT_L
SFT_L
0000 1000
C ← [76543210] ← 0
SFT_R
SFT_R
0000 1001
0 → [76543210] → C
インデックス
レジスタ
操作
SET_X
SET_X adr
1010 xxxx
adr → Ix
INC_X
INC_X
0000 0110
Ix + 1 → Ix
DEC_X
DEC_X
0000 0111
Ix - 1 → Ix
リード/ライト
READ
READ adr, READ IX
0001 xxxx
M → Acc
WRITE
WRITE adr, WRITE IX
0010 xxxx
Acc → M
メモリ
INC_M
INC_M adr, INC_M IX
1000 xxxx
M + 1 → M
DEC_M
DEC adr, DEC_M IX
1001 xxxx
M - 1 → M
算術演算
ADD
ADD adr, ADD IX
0011 xxxx
Acc + M → Acc
SUB
SUB adr, SUB IX
0100 xxxx
Acc - M → Acc
CMP
CMP adr, CMP IX
0101 xxxx
Acc - M
論理演算
AND
AND adr, AND IX
0110 xxxx
Acc AND M → Acc
OR
OR adr, OR IX
0111 xxxx
Acc OR M → Acc
NOT
NOT
0000 1010
NOT Acc → Acc
分岐
JMP
JMP adr
1011 xxxx
adr → PC
条件分岐
JEZ
JEZ adr
1100 xxxx
(Z=1) adr → PC
JNZ
JNZ adr
1101 xxxx
(Z=0) adr → PC
JCS
JCS adr
1110 xxxx
(C=1) adr → PC
JCC
JCC adr
1111 xxxx
(C=0) adr → PC
その他
NOP
NOP
0000 0000
no operation
疑似命令
STORE
STORE adr, n
n → M
END
END
CPU Stop.
Z: ゼロフラグ。演算・処理結果が 0 になったとき 1 になる。 C: キャリーフラグ。キャリーが発生したとき 1 になる。
: 変化する。
: 変化なし。
1
: 1 になる。
シフト命令。 SFT_L 命令では最下位ビットに 0 が入り、アキュムレータの各ビットは左に 1 ビットシフトして、 最上位ビットは C フラグに入る。 SFT_R 命令はその逆で、右にシフトする。
adr はオペランド。 10進数、16進数、2進数 での表記ができる。 明示的に区別する場合は、10進数には "%"、16進数には "$"、2進数には "#" の識別子をつける。 (例: %13 $D #1101 etc. いずれも 10 進数での 13 を表す。)
2 進数を使用する場合は、識別子の有無にかかわらず、4 桁表記でなければならない。
STORE 命令はアセンブル時に指定アドレスのメモリに指示された数値が書き込まれる。プログラムの実行とは無関係。 adr はアドレス、 n は書き込む数値。 (例: 13 番地に 133 を書き込む場合は、 "STORE 13, 133" とする。) "%"、 "$"、 "#" の識別子によって 10進数、16進数、2進数 で表記ができるが、 識別子を省略すると 10 進数とみなされる。
プログラムの終了を表す疑似命令で、プログラムの最終行に必須。
関連事項:
仮想コンピュータ
仮想コンピュータの使い方
アセンブラ仕様
命令
プログラム例>
資料 (PDF)