LoginSignup
1
0

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