你的第一个程序
编写输出 42 的程序,再查看它的执行轨迹。
- 从指令面板插入 📥 LOAD。
- 在 LOAD 后写上数字 42。
- 在下一行添加 🖨️ PRINT。
- 在最后一行添加 ⏹️ HALT。
- 运行程序,确认实际输出窗口显示 42。
- 逐步执行,观察 R0、PC 和输出。
📥 42
🖨️
⏹️预期输出: 42
三十小步,走进计算机
理解概念,在可见 CPU 中试做,再解决由机器检查的挑战。从三条指令开始,最终完成自己的小程序。
无需账户或安装。只有程序通过全部挑战案例,才完成一课。进度和徽章留在此浏览器中。
进度在你的浏览器中载入。
完成一个单元即可获得徽章。徽章记录通过的挑战,而非访问次数。
隐私浏览、清除网站数据或更换设备可能删除本地记录。你可以按任意顺序学习。
单元 1 · 约 20 分钟
解释取指与执行、寄存器、PC、输出和停止。
已通过 0 / 3 个挑战
将数字送入 CPU,输出它,然后停止。
使用八个快速工作区,并保留需要的数值。
阅读轨迹,区分源代码行与指令地址。
单元 2 · 约 28 分钟
保存输入,用测试案例构建整数计算。
已通过 0 / 3 个挑战
单元 3 · 约 28 分钟
区分数值与地址,读取和写入字节存储。
已通过 0 / 3 个挑战
覆盖 R0 后,实际取回已经保存的字节。
将地址当作数据,读取查找表。
观察为什么内存数值会绕回,而寄存器不会。
单元 4 · 约 29 分钟
用比较、余数和带标签的路径表达决定。
已通过 0 / 3 个挑战
单元 5 · 约 34 分钟
使用有界循环、零次情况、计数器和累加器。
已通过 0 / 3 个挑战
单元 6 · 约 42 分钟
描述并检查阶乘、斐波那契和反向复制的不变量。
已通过 0 / 3 个挑战
单元 7 · 约 39 分钟
使用后进先出数据、调用帧和保存/恢复约定。
已通过 0 / 3 个挑战
单元 8 · 约 39 分钟
选择和翻转位,解释有符号 32 位行为。
已通过 0 / 3 个挑战
单元 9 · 约 45 分钟
区分调度策略、工作划分和处理程序状态恢复。
已通过 0 / 3 个挑战
单元 10 · 约 56 分钟
结合指令集,编写游戏、缓冲区工具和作业分派器。
已通过 0 / 3 个挑战
用保存的状态与计分规则制作三轮游戏。
结合输入、循环、栈和索引存储。
将队列作业分派到可复用服务,并记录结果。
欢迎首次编程的学习者
遵循简短步骤,预测输出。在实验室打开完全相同的程序,再完成相应课程挑战,检查自己的答案。
编写输出 42 的程序,再查看它的执行轨迹。
📥 42
🖨️
⏹️预期输出: 42
计算 10 + 5,观察累加器如何变化。
📥 10
➕ 5
🖨️
⏹️预期输出: 15
利用带标签的出口,从五倒数到一。
📥 5
again: 🖨️
➖ 1
❓ done
⏭️ again
done: ⏹️预期输出: 5, 4, 3, 2, 1