基本命令の解説

ニモニック オペコード バイト数 RTL 処理内容
レジスタ間転送
LD AC, B 00010000 1 AC ← B  
LD B, AC 00010001 1 B ← AC  
LD WA, X 00010100 1 WA ← X  
LD X, WA 00010101 1 X ← WA  
LD AC, WA 00011000 1 AC ← low(WA)  
LDH AC, WA 00011001 1 AC ← high(WA)  
LD WA, AC 00011010 1 WA ← AC 上位8ビットは0
LDH WA, AC 00011011 1 high(WA) ← AC  
LD AC, X 00011100 1 AC ← low(X)  
LDH AC, X 00011101 1 AC ← high(X)  
LD X, AC 00011110 1 low(X) ← AC  
LDH X, AC 00011111 1 high(X) ← AC  
LD AC, arg 10010000 2 AC ← arg  
LD arg, AC 10010001 2 arg ← AC (おそらく意味のない命令)
LD AC, (arg) 10010010 3 AC ← (arg)  
LD AC, label

alias LD AC, (arg) ラベルが表すアドレスの内容をACに代入
LD (arg), AC 10010011 3 (arg) ← AC  
LD label, AC

alias LD (arg), AC  
LD WA, arg 10011000 3 WA ← arg argをWAに代入
LD WA, (arg) 10011010 3 WA ← (arg) アドレスargの内容をWAに代入
LD WA, label

alias LD WA, (arg) ラベルが表すアドレスの内容をWAに代入
LD WA, (label)

alias LD WA, (arg) ラベルが表すアドレスの内容をWAに代入
LD (arg), WA 10011011 3 (arg) ← WA WAをアドレスargに書き込み
LD label, WA

alias LD (arg), WA  
LD (label), WA

alias LD (arg), WA  
LD X, arg 10011100 3 X ← arg Xに即値を代入
LDA X, label
  alias LD X, arg ラベルが表すアドレスをXに代入
LD X, (arg) 10011110 3 X ← (arg) アドレスargの内容をXに代入
LD X, label
  alias LD X, (arg) ラベルが表すアドレスの内容をXに代入
LD (arg), X 10011111 3 (arg) ← X Xをアドレスargに書き込み
LD label, X

alias LD (arg), X  
LD (label), X

alias LD (arg), X  
LD X, PC 00010111 1 X ← PC  
インクリメント/デクリメント
INC AC 00100000 1 AC ← AC + 1  
INC B 00100001 1 B ← B + 1 フラグは変化しない
INC X 00100101 1 X ← X + 1 フラグは変化しない
DEC AC 00101000 1 AC ← AC - 1  
DEC B 00101001 1 B ← B - 1 フラグは変化しない
DEC X 00101101 1 X ← X - 1 フラグは変化しない
加算
ADD AC, B 01000010 1 AC ← AC + B  
ADD AC, (X) 01000110 1 AC ← AC + (X)  
ADD AC, arg 11000000 2 AC ← AC + arg  
ADD AC, (arg) 11000010 3 AC ← AC + (arg)  
ADD AC, label

alias ADD AC, (arg)  
ADC AC, B 01000011 1 AC ← AC + B + C  
ADC AC, (X) 01000111 1 AC ← AC + (X) + C  
ADC AC, arg 11000001 2 AC ← AC + arg + C  
ADC AC, (arg) 11000011 3 AC ← AC + (arg) + C  
ADC AC, label

alias ADC AC, (arg)  
ADD WA, X 01001100 1 WA ← WA + X  
ADD WA, arg 11001000 3 WA ← WA + arg  
ADC WA, X 01001101 1 WA ← WA + X + C  
ADC WA, arg 11001001 3 WA ← WA + arg + C  
減算
SUB AC, B 01010010 1 AC ← AC - B  
SUB AC, (X) 01010110 1 AC ← AC - (X)  
SUB AC, arg 11010000 2 AC ← AC - arg  
SUB AC, (arg) 11010010 3 AC ← AC - (arg)  
SUB AC, label

alias SUB AC, (arg)  
SBC AC, B 01010011 1 AC ← AC - B - C  
SBC AC, (X) 01010111 1 AC ← AC - (X) - C  
SBC AC, arg 11010001 2 AC ← AC - arg - C  
SBC AC, (arg) 11010011 3 AC ← AC - (arg) - C  
SBC AC, label

alias SBC AC, (arg)  
SUB WA, X 01011100 1 WA ← WA - X  
SUB WA, arg 11011000 3 WA ← WA - arg  
SBC WA, X 01011101 1 WA ← WA - X - C  
SBC WA, arg 11011001 3 WA ← WA - arg - C  
論理演算
AND AC, AC 01100000 1 AC ← AC & AC ビット単位論理積
AND AC, B 01100100 1 AC ← AC & B  
AND AC, (X) 01101000 1 AC ← AC & (X)  
AND AC, arg 11100000 2 AC ← AC & arg  
AND AC, (arg) 11100010 3 AC ← AC & (arg)  
AND AC, label

alias AND AC, (arg)  
OR AC, AC 01100001 1 AC ← AC | AC ビット単位論理和
OR AC, B 01100101 1 AC ← AC | B  
OR AC, (X) 01101001 1 AC ← AC | (X)  
OR AC, arg 11100001 2 AC ← AC | arg  
OR AC, (arg) 11100011 3 AC ← AC | (arg)  
OR AC, label

alias OR AC, (arg)  
XOR AC, AC 01100010 1 AC ← AC ^ AC ビット単位排他的論理和
XOR AC, B 01100110 1 AC ← AC ^ B  
XOR AC, (X) 01101010 1 AC ← AC ^ (X)  
XOR AC, arg 11100100 2 AC ← AC ^ arg  
XOR AC, (arg) 11100110 3 AC ← AC ^ (arg)  
XOR AC, label

alias XOR AC, (arg)  
AND WA, X 01101100 1 WA ← WA & X ビット単位論理積
AND WA, arg 11101000 3 WA ← WA & arg  
OR WA, X 01101101 1 WA ← WA | X ビット単位論理和
OR WA, arg 11101001 3 WA ← WA | arg  
XOR WA, X 01101110 1 WA ← WA ^ X ビット単位排他的論理和
XOR WA, arg 11101011 3 WA ← WA ^ arg  
シフト
SRR AC 00110000 1
桁上げつき論理右シフト
SLR AC 00110001 1
桁上げつき論理左シフト
SRA AC 00110010 1
算術右シフト
SRR WA 00111000 1
桁上げつき論理右シフト
SLR WA 00111001 1
桁上げつき論理左シフト
SRA WA 00111010 1
算術右シフト
分岐
JMP X 00001000 1 PC ← X  
JMP (X) 00001001 1 PC ← (X)  
JMP arg 10000000 3 PC ← arg  
JMP (arg) 10000010 3 PC ← (arg)  
JMP label

alias JMP arg  
JMP (label)

alias JMP (arg)  
JC arg 10001000 3 PC ← arg if C = 1  
JNC arg 10001001 3 PC ← arg if C = 0  
JZ arg 10001010 3 PC ← arg if Z = 1  
JNZ arg 10001011 3 PC ← arg if Z = 0  
JS arg 10001100 3 PC ← arg if S = 1  
JNS arg 10001101 3 PC ← arg if S = 0  
JC label     alias JC arg  
JNC label     alias JNC arg  
JZ label     alias JZ arg  
JNZ label     alias JNZ arg  
JS label     alias JS arg  
JNS label     alias JNS arg  
比較
CPR AC, arg 11110000 2 AC - arg 大小比較
TST AC, arg 11110001 2 AC & arg ビット検査
CPR WA, arg 11111000 3 WA - arg 大小比較
TST WA, arg 11111001 3 WA & arg ビット検査
その他
NEG AC 00000100 1 AC ← -AC ACの符号反転
CMP AC 00000101 1 AC ← ~AC ACの各ビット反転(0←→1)
NEG WA 00001100 1 WA ← -WA WAの符号反転
CMP WA 00001101 1 WA ← ~WA WAの各ビット反転(0←→1)
SWPHL WA 00001111 1 high(WA) ⇔ low(WA) WAの上位バイトと下位バイトの交換
NOP 00000000 1
無処理
HLT 00000001 1 H ← 1 プロセッサ停止
SCF 00000010 1 C ← 1 キャリー(桁上げ)フラグのセット
RCF 00000011 1 C ← 0 キャリー(桁上げ)フラグのリセット