#概要
jsdoでchip8やってみた。
アセンブラを作ってみる。設計編
#ニーモニックを変える。
覚え安く、変える。
転送命令
CLS -> cls
DRW -> disp
LD -> load
ビット操作命令
OR -> or
AND -> and
XOR -> xor
SHR -> rshift
SHL -> lshift
算術命令
ADD -> add
SUB -> sub
SUBN -> nsub
RND -> rand
分岐命令
RET ->ret
SYS -> sys
JP -> goto
CALL -> call
SE -> eq
SNE -> neq
SKP ->keq
SKNP ->kneq
追加
nop -- no op
data byte -- data
補足
一行は、ラベル、スペース、スペース、第一オペランド、スペース、スペース、第二オペランド、スペース、スペース、第三オペランド、スペース、スペース、第四オペランド。
orgは無く、スタートアドレスは、0200H番地から、固定。
数値は、0-255の十進のみ。
レジスタは、v0-v15の16個とI(アドレス)。
#サンプルコード
012345を表示する。
load v2 5
load v1 3
load I 0
load v0 11
disp v0 v1 6
add v0 6
add I v2
disp v0 v1 6
add v0 6
add I v2
disp v0 v1 6
add v0 6
add I v2
disp v0 v1 6
add v0 6
add I v2
disp v0 v1 6
add v0 6
add I v2
disp v0 v1 6
#命令の組み立て方
レジスタは、4bit
アドレスは、12bit
2byte | |
---|---|
00E0 | CLS |
00EE | RET |
0nnn | SYS addr |
1nnn | JP addr |
2nnn | CALL addr |
3xkk | SE Vx, byte |
4xkk | SNE Vx, byte |
5xy0 | SE Vx, Vy |
6xkk | LD Vx, byte |
7xkk | ADD Vx, byte |
8xy0 | LD Vx, Vy |
8xy1 | OR Vx, Vy |
8xy2 | AND Vx, Vy |
8xy3 | XOR Vx, Vy |
8xy4 | ADD Vx, Vy |
8xy5 | SUB Vx, Vy |
8xy6 | SHR Vx {, Vy} |
8xy7 | SUBN Vx, Vy |
8xyE | SHL Vx {, Vy} |
9xy0 | SNE Vx, Vy |
Annn | LD I, addr |
Bnnn | JP V0, addr |
Cxkk | RND Vx, byte |
Dxyn | DRW Vx, Vy, nibble |
Ex9E | SKP Vx |
ExA1 | SKNP Vx |
Fx07 | LD Vx, DT |
Fx0A | LD Vx, K |
Fx15 | LD DT, Vx |
Fx18 | LD ST, Vx |
Fx1E | ADD I, Vx |
Fx29 | LD F, Vx |
Fx33 | LD B, Vx |
Fx55 | LD [I], Vx |
Fx65 | LD Vx, [I] |
以上。