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小电脑啦。