From Nand To Tetris 从与非门到俄罗斯方块

30、P1 W4 U4.9 作业4 讲解

2019-08-10  本文已影响0人  shazizm

视频:
如果本次课程对应的 Coursera 的视频打不开,可以点击下面链接
P1W4U4.9 - Project 4 Overview

经过了第4周的机器语言的折磨。
下周,第5周就是激动人心的 HACK电脑大组装了,将会把之前1、2、3周学习逻辑单元都用上,组装出Hack小电脑。

之所以在第5周之前要安排一周Hack机器语言的学习,是为了更好的从一个整理来理解Hack硬件,Hack汇编语言,Hack机器语言,会发现 指令 和 硬件 是 息息相关。

这周第4周主要讲了底层的机器语言,但同时也是为了让我们对硬件有更好的理解。

本周作业,只有两个:

写一个代数计算的程序。mult.asm
写一个 键盘 和 屏幕 交互的程序。fill.asm

作业:一个乘法,一个交互

乘法

如下图:写一个程序 使 R0 * R1 的结果写入 R2

提示:循环 和 加法

关于乘法,老师说在 nand2tetris 的Part2 软件部分,会实现一个Hack小操作系统,其中就有一些重要的数学库,而这些数学库大部分都会用到乘法。

R2 = R0 * R1

交互

如下图:写一个程序 当键盘上,任意键按下时,就黑屏。抬起键,就白屏。

提示:写一个循环,一直监听键盘,然后对应做出反应。黑屏,就是把所有屏幕映射区的寄存器,全部写-1。

按下键盘任意键,黑屏

写码标准姿势

老师给了一个写代码的基本工作流。如下图

如果语法有错误,CPUEmulator会提示你哪行出错了。方便找到对应指令。

工作流

如果说上图的工作流有点废话的话。

下图的最佳实践还是很值得注意的。

能用 “别名” 和 变量 表示存储器的“门牌号”。就千万不要用具体的地址数字。
别名 和 变量,起名字的时候要能让人看懂啥意思。
变量用小写。
别名用大写。
用缩进?使排版美观。
写汇编前,可以打打草稿(伪代码)。

变量小写,别名大写

那么下周第5周,终于可以来完成Hack小电脑啦。

上一篇下一篇

猜你喜欢

热点阅读