28. 迷你目标游戏
用保存的状态与计分规则制作三轮游戏。
打开本课 →
1. 预测与跟踪
运行试做程序前,预测输出,并跟踪最先执行的三条指令。按需要记录相关寄存器、标志或内存,再逐步执行进行比较。
STORE 5 200
LOAD [200] R1
LOAD 0 R2
LOOP 3
INPUT
CMP R1
JUMP_IF_ZERO hit
JUMP next
hit: LOAD R2
ADD 1
COPY R0 R2
next: NOP
RETURN
LOAD R2
STORE 201
PRINT
HALT
加入输入队列: 5, 2, 5
初始化内存: 200: 5
2. 构建与检查
内存 200 包含目标字节。恰好读取三次猜测,计算匹配次数,保存到内存 201,并输出该分数一次。
必需的指令类型: INPUT, CMP, LOOP, STORE, JUMP_IF_ZERO
起始程序
LOAD [200] R1
LOAD 0 R2
LOOP 3
INPUT
CMP R1
#
RETURN
LOAD R2
STORE 201
PRINT
HALT
你的程序与笔记
3. 解释机器
猜对和猜错时,哪些状态改变?
29. 用栈实现缓冲区工具
结合输入、循环、栈和索引存储。
打开本课 →
1. 预测与跟踪
运行试做程序前,预测输出,并跟踪最先执行的三条指令。按需要记录相关寄存器、标志或内存,再逐步执行进行比较。
LOAD 3 R3
LOAD 10
PUSH
LOAD 20
PUSH
LOAD 30
PUSH
LOAD 0 R1
LOOP R3
POP
STORE R1
PRINT
LOAD R1
ADD 1
COPY R0 R1
RETURN
HALT
加入输入队列: 无
初始化内存: 所有字节初始为零
2. 构建与检查
读取 N(0–5),再恰好读取 N 个字节值。使用数据栈倒序排列它们。输出倒序结果,并从内存地址 0 开始保存。
必需的指令类型: INPUT, LOOP, PUSH, POP, STORE
起始程序
INPUT
COPY R0 R3
LOOP R3
#
RETURN
LOAD 0 R1
LOOP R3
#
RETURN
HALT
你的程序与笔记
3. 解释机器
为什么使用两个阶段?N=0 应怎样?
30. 你自己的迷你操作系统
将队列作业分派到可复用服务,并记录结果。
打开本课 →
1. 预测与跟踪
运行试做程序前,预测输出,并跟踪最先执行的三条指令。按需要记录相关寄存器、标志或内存,再逐步执行进行比较。
LOAD 4
CALL double
STORE 64
PRINT
LOAD 3
CALL square
STORE 65
PRINT
HALT
double: MUL 2
RETURN
square: MUL R0
RETURN
加入输入队列: 无
初始化内存: 所有字节初始为零
2. 构建与检查
读取 N(0–3),再读取 N 对(操作、数值)。操作 0 加倍,1 求平方,2 加一。通过 CALL 子程序分派。输出每个完整结果,并按作业顺序把结果字节存入地址 64、65、……。
必需的指令类型: INPUT, LOOP, CALL, CMP, STORE, RETURN
起始程序
INPUT
COPY R0 R3
LOAD 64 R2
LOOP R3
INPUT
COPY R0 R4
INPUT
COPY R0 R1
#
RETURN
HALT
double: MUL 2
RETURN
square: MUL R0
RETURN
increment: ADD 1
RETURN
你的程序与笔记
3. 解释机器
为什么输出 260 时,内存日志可以为 4?