視頻:
如果本次課程對應(yīng)的 Coursera 的視頻打不開踏堡,可以點擊下面鏈接
P1W4U4.4 - Hack Language Specification
到目前為止,課程講了
Hack 硬件架構(gòu)
(ROM存程序误证,CPU處理指令,RAM存數(shù)據(jù))
匯編語言
(A指令陆蟆,C指令)
機器語言
(這節(jié)講)
符號(匯編語言)
通過 匯編器(assember) 翻譯(tranlate)成
二進(jìn)制(機器語言)雷厂,然后CPU去 執(zhí)行(execute)
匯編器在第六周講。
A-指令改鲫,上節(jié)課講了,value可以是一個正的十進(jìn)制數(shù),這個數(shù)不能超過32767像棘。也可以是一個符號稽亏,指向一個正的十進(jìn)制數(shù)。
A-指令 同樣可以用 一個 16位的二進(jìn)制表示缕题。如下規(guī)定:
最左邊一位為0截歉,代表A-指令。其它15位代表數(shù)值(2^15-1 = 32767)
例如
@21 指令烟零,二進(jìn)制表示就是:如下圖右下角
0 000 000 000 010 101
也就是機器語言瘪松。
C-指令上節(jié)課也講述了它的使用,其中dest锨阿、comp宵睦、jump分別對應(yīng)16位里如下圖的位置。
最左邊一位為1墅诡,代表C-指令壳嚎,然后依次往右兩位沒用到,但是慣例設(shè)成1末早。
然后7位 藍(lán)色0011111 代表 comp (決定選擇哪些寄存器烟馅,參與什么運算)
然后3位 紅色010 代表 dest(決定結(jié)果存在哪里)
最后3位 綠色111 代表 jump(決定運算結(jié)果與0進(jìn)行那種判斷,跳轉(zhuǎn)位置需提前存在A寄存器)
具體的 comp然磷、dest郑趁、jump 對照表,如下圖
那么 Hack的程序 一般就是下圖的樣子缺脉。
一行行的指令
空行是可以的
//是注釋(//后面寫什么都不影響前面的指令)
最好不要直接用數(shù)值痪欲,可以設(shè)變量。(后面會講)
最后攻礼,我們寫好的匯編語言业踢,經(jīng)過匯編器,翻譯成0101xxx之后礁扮,加載到CPU就能執(zhí)行了知举。
這幾講完了Hack小電腦用到的兩種語言的轉(zhuǎn)換方式。
下節(jié)課太伊,講解如何 用Hack的語言 來 訪問 輸入輸出設(shè)備雇锡。