CHIP8模拟器的python3实现-2-指令介绍

本文详细介绍了CHIP8虚拟机的35条指令,包括调用、显示、条件判断、赋值等操作,以及如何使用寄存器和程序计数器进行各种运算和控制流程。同时还解释了如何在图形模式下进行屏幕滚动、绘制精灵和进行按键检测。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

CHIP8指令表

CHIP-8有35个指令,都为两字节长,以大端方式存储。指令表的指令格式规定如下:

NNN地址
NN8位常量
N4位常量
V寄存器
X和Y寄存器标识
PC程序计数器
I16位索引地址寄存器

CHIP-8包括SCHIP指令代码如下:

操作码类型功能描述
0NNN调用执行地址NNN的子程序
00CN显示滚动N行
00FB显示向右滚动4个像素
00FC显示向左滚动4个像素
00FD系统退出模拟器
00FE显示设置为CHIP-8图形模式
00FF显示设置为SCHIP图形模式
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字体表示
FX33BCD将VX中值的BCD码存入I中的地址内,百位在I,十位在I+1,个位在I+2
FX55地址将V0到VX的值存入I中地址为起始的内存空间
FX65地址将I中地址为起始的内容依次存入V0-VX
FX75地址将V0到VX(x<8)的值存入rpl中地址为起始的内存空间
FX85地址将rpl中地址为起始的内容依次存入V0-VX(x<8)

转载于:https://www.cnblogs.com/hwnzy/p/10748305.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值