4. 表情符号数学
用有序步骤组合加法、减法和乘法。
1. 预测与跟踪
运行试做程序前,预测输出,并跟踪最先执行的三条指令。按需要记录相关寄存器、标志或内存,再逐步执行进行比较。
LOAD 10 ADD 5 PRINT MUL 2 SUB 4 PRINT HALT
加入输入队列: 无
初始化内存: 所有字节初始为零
试做预测答案
输出: 15, 26
| 指令 | 执行前 PC | 执行后 PC | 执行前 R0 | 执行后 R0 | 相关状态 | 输出 |
|---|---|---|---|---|---|---|
| LOAD | 0 | 1 | 0 | 10 | {"registers":[10,0,0,0,0,0,0,0],"flags":{"zero":false,"negative":false,"overflow":false},"sp":255,"stack":[],"callStack":[],"loopStack":[],"memoryReads":[],"memoryWrites":[]} | 无 |
| ADD | 1 | 2 | 10 | 15 | {"registers":[15,0,0,0,0,0,0,0],"flags":{"zero":false,"negative":false,"overflow":false},"sp":255,"stack":[],"callStack":[],"loopStack":[],"memoryReads":[],"memoryWrites":[]} | 无 |
| 2 | 3 | 15 | 15 | {"registers":[15,0,0,0,0,0,0,0],"flags":{"zero":false,"negative":false,"overflow":false},"sp":255,"stack":[],"callStack":[],"loopStack":[],"memoryReads":[],"memoryWrites":[]} | 15 |
2. 构建与检查
读取整数 x,输出 (x + 5) × 2 − 4。程序必须适用于每个提供的输入,包括负数。
必需的指令类型: INPUT, ADD, MUL, SUB
挑战示例答案
INPUT ADD 5 MUL 2 SUB 4 PRINT HALT
实际检查器测试数据
案例 1
- 输入
0- 初始内存
所有字节初始为零- 预期输出
6
案例 2
- 输入
-3- 初始内存
所有字节初始为零- 预期输出
0
案例 3
- 输入
12- 初始内存
所有字节初始为零- 预期输出
30
3. 解释机器
计算 (x+5)×2−4 时,为什么 MUL 必须在 ADD 后?
推理与教学说明
每个操作改变累积结果;颠倒 ADD 和 MUL 对多数 x 会改变表达式。