CHIP指令表
CHIP-8有35个指令,都为两字节长,以大端方式存储。指令表的指令格式规定如下:
NNN:地址
NN:8位常量
N:4位常量
V:寄存器
X和Y:4位,标识寄存器
PC:程序计数器
I:16位索引地址寄存器
操作码 类型 功能描述
0NNN 调用 执行地址NNN的子程序
00E0 显示 清屏
00EE 跳转 从子程序返回
1NNN 跳转 跳转到地址NNN
2NNN 跳转 调用子程序NNN
3XNN 条件 如果VX等于NN则跳过下一条指令(通常时跳过一条跳转指令)
4XNN 条件 如果VX不等于NN则跳过下一条指令(同上)
5XY0 条件 如果VX的值等于VY则跳过下一条指令(同上)
6XNN 赋值 VX = NN
7XNN 赋值 VX += NN,进位标记不会改变
8XY0 赋值 VX = VY
8XY1 按位或 VX = VX | VY
8XY2 按位与 VX = VX & VY
8XY3 按位异或 VX = VX ^ VY
8XY4 运算 VX += VY,VX有进位(大于255)时VF为1,否则VF为0
8XY5 运算 VX -= VY,VX负数时VF为0,否则VF为1
8XY6 右移 VX >>= 1,VX最低位存入VF中
8XY7 运算 VX = VY - VX,VX负数时VF为0,否则VF为1
8XYE 左移 VX <<= 1,VX最高位存入VF中
9XY0 条件 如果VX不等于VY则跳过下一条指令(通常时跳过一条跳转指令)
ANNN 地址 将I设置为NNN
BNNN 跳转 跳转到地址V0+NNN,PC=V0+NNN
CXNN 随机数 VX = rand() & NN
DXYN 显示 在(VX,VY)绘制一个宽8像素、高N像素的精灵。每8个像素从I寄存器中的地址逐步读出一字节(8位),在执行该语句时I内的值不可以改变,如果像素反转为0则碰撞检测将VF置为1
EX9E 按键 跳过下一条指令,如果存储在VX的键值所应的键被按下
EXA1 按键 跳过下一条指令,如果存储在VX的键值所应的键没有被按下
FX07 定时器 获取延时寄存器的值
FX0A 按键 等待按键,将按键的值存入VX(阻塞指令,所有指令将等待该指令执行完
FX15 定时器 将VX的值存入延时寄存器
FX18 定时器 将VX的值存入声音寄存器
FX1E 地址 I += VX
FX29 地址 将VX中的精灵地址赋值给I,字符0-F由4X5字体表示
FX33 BCD 将VX中值的BCD码存入I中的地址内,百位在I,十位在I+1,个位在I+2
FX55 地址 将V0到VX的值存入I中地址为起始的内存空间
FX65 地址 将I中地址为起始的内容依次存入V0-VX
参考文献:CHIP-8 - Wikipedia