1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

chip8 アセンブラ 命令セット

Last updated at Posted at 2018-11-26

#chip8 アセンブラ 命令セット

#転送命令

CLS					dispクリア
DRW Vx, Vy, nibble	Vx, Vy <- sprite
LD Vx, byte			Vx <- byte
LD Vx, Vy			Vx <- Vy
LD I, addr			I <- addr 
LD Vx, DT			Vx <- delay timer
LD Vx, K			Vx <- Key
LD DT, Vx			delay timer <- Vx
LD ST, Vx			sound timer <- Vx
LD F, Vx			memory[I..] <- sprite
LD B, Vx			memory[I..] <- BCD(Vx)
LD [I], Vx			memory[I0:Ix] <- V0:Vx
LD Vx, [I]			V0:Vx <- memory[I0:Ix]

#ビット操作命令

OR Vx, Vy			Vx <- Vx or Vy
AND Vx, Vy			Vx <- Vx and Vy
XOR Vx, Vy			Vx <- Vx xor Vy
SHR Vx, Vy		Vx <- Vx >> Vy
SHL Vx, Vy		Vx <- Vx << Vy

#算術命令

ADD Vx, byte		Vx <- Vx + byte
ADD Vx, Vy			Vx <- Vx + Vy
ADD I, Vx			I <- I + Vy
SUB Vx, Vy			Vx <- Vx - Vy
SUBN Vx, Vy			Vx <- Vy - Vx
RND Vx, byte		Vx <- rnd(byte)

#分岐命令

RET					pc <- stack
SYS addr			pc <- addr
JP addr				pc <- addr
JP V0, addr			pc <- V0 + addr
CALL addr			stack <- pc, pc <- addr
SE Vx, byte			if (Vx == byte) pc += 2
SE Vx, Vy			if (Vx == Vy) pc += 2
SNE Vx, byte		if (Vx != byte) pc += 2
SNE Vx, Vy			if (Vx != Vy) pc += 2
SKP Vx				if (key(Vx) == 1) pc += 2
SKNP Vx				if (key(Vx) != 1) pc += 2

#補足
命令長は、2バイト。固定。
レジスタは、V0からVFの16個で、8bit
VFレジスタは、算術演算命令実行時のキャリーフラグ
スタックは、16個。
アドレスレジスタとして、Iレジスタで12ビット
プログラムは、アドレス0200h番地から実行
出力は、64×32ピクセルのグラフィック機能
4×5ピクセルのフォントパターンを内蔵しています。(0-F)
入力は、キー、16個あります。
2つの8ビットタイマがあります。
一つはディレイタイマ、もう一つはサウンドタイマと呼ばれます。

以上。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?