22. 位掩码与标志
用 AND 选择单个位,用 OR 设置位。
1. 预测与跟踪
运行试做程序前,预测输出,并跟踪最先执行的三条指令。按需要记录相关寄存器、标志或内存,再逐步执行进行比较。
LOAD 13 AND 5 PRINT OR 2 PRINT HALT
加入输入队列: 无
初始化内存: 所有字节初始为零
试做预测答案
输出: 5, 7
| 指令 | 执行前 PC | 执行后 PC | 执行前 R0 | 执行后 R0 | 相关状态 | 输出 |
|---|---|---|---|---|---|---|
| LOAD | 0 | 1 | 0 | 13 | {"registers":[13,0,0,0,0,0,0,0],"flags":{"zero":false,"negative":false,"overflow":false},"sp":255,"stack":[],"callStack":[],"loopStack":[],"memoryReads":[],"memoryWrites":[]} | 无 |
| AND | 1 | 2 | 13 | 5 | {"registers":[5,0,0,0,0,0,0,0],"flags":{"zero":false,"negative":false,"overflow":false},"sp":255,"stack":[],"callStack":[],"loopStack":[],"memoryReads":[],"memoryWrites":[]} | 无 |
| 2 | 3 | 5 | 5 | {"registers":[5,0,0,0,0,0,0,0],"flags":{"zero":false,"negative":false,"overflow":false},"sp":255,"stack":[],"callStack":[],"loopStack":[],"memoryReads":[],"memoryWrites":[]} | 5 |
2. 构建与检查
读取 0 到 255 的一个字节。使用 AND 5,将其第 0 和第 2 位以数字掩码形式输出。
必需的指令类型: INPUT, AND
挑战示例答案
INPUT AND 5 PRINT HALT
实际检查器测试数据
案例 1
- 输入
7- 初始内存
所有字节初始为零- 预期输出
5
案例 2
- 输入
10- 初始内存
所有字节初始为零- 预期输出
0
案例 3
- 输入
20- 初始内存
所有字节初始为零- 预期输出
4
案例 4
- 输入
255- 初始内存
所有字节初始为零- 预期输出
5
3. 解释机器
掩码 5 选择什么?
推理与教学说明
二进制 00000101 选择第 0、2 位,清除其他位。它不是在数值上减去其他值。