編碼:自動加法器(二)

1 前言

??本文是基于《編碼》戚绕、《穿越計算機的迷霧》兩部著作進行讀后整理的記錄性博客鉴逞。對書中較為重要的內(nèi)容進行歸納整理進行二次創(chuàng)作约巷,略去了繁瑣的講述細節(jié)偎痛,力求簡明扼要。


編碼:一種由若干符號和規(guī)則組成的系統(tǒng)独郎,用來向計算機表述指令踩麦。

2 正文

2.1 累加器

??在前面的文章中已經(jīng)介紹了自動加法器,并結合我們的需求進行構建氓癌,但就目前而言谓谦,我們構造的自動加法器還存在一些問題。本文我們接著上文的設備贪婉,對我們的設備進行優(yōu)化反粥。

??在之前的介紹中,我們每個操作碼在存儲器中占 1 個字節(jié)∑S兀現(xiàn)在除了 Halt 操作碼外才顿,我希望每一個指令在存儲器中僅占據(jù) 3 個字節(jié)的空間,其中第一個字節(jié)為代碼本身尤蒿,另外的兩個字節(jié)用來存放 1 個 16 位存儲器單元地址郑气。

例如我們的 Load 指令,后兩個字節(jié)保存的地址用來指明數(shù)據(jù) RAM 陣列的一個存儲單元腰池,該單元存放的是需要被加載到累加器中的字節(jié)渠啤。對于Add,Subtract膀哲,Add with Carry,Subtract with Borrow 指令來說匕争,該地址指明的存儲單元所保存的是要從累加器中加上或減去的字節(jié)。對于 Store 指令來說爷耀,該地址指明的是累加器中的內(nèi)容將要保存到的存儲單元地址甘桑。

??當加法器對兩個數(shù)進行求和時,為了執(zhí)行這個操作歹叮,需要按下面的方式設置代碼 RAM 陣列和數(shù)據(jù) RAM 陣列跑杭。

??在改進的自動加法器中,每條指令(除了 Halt 指令)需要 3 個字節(jié)咆耿。

??每一條指令的代碼(除了 Halt 指令)后跟兩個字節(jié)德谅,用來指明數(shù)據(jù) RAM 陣列中 16 位的存儲地址。

??有了這種指令附帶地址的設定萨螺,我們之前的存儲方式就可以不用那么規(guī)整了窄做。在前面的介紹中,我們針對計算分別保存低字節(jié)和高字節(jié)的計算結果慰技。如下圖所示椭盏,是我們之前的一個示例,76ABh + 232Ch吻商,就計算時高低字節(jié)分開存儲并計算掏颊。

??現(xiàn)在,我們可以采用一種更加合理的方式來保存這兩個操作數(shù)及其運算結果艾帐,可能會把它們保存到我們從未用到過的存儲區(qū)域乌叶。

??這 6 個存儲單元不必像上圖中這樣全都連在一起,它們可以分散在整個 64 KB 數(shù)據(jù) RAM 陣列的任意位置柒爸。為了把這些地址中的數(shù)相加准浴,代碼 RAM 陣列中的指令必須用以下方式設置捎稚。

??可以看到,保存在地址 4001h 和 4003h 處的兩個低字節(jié)數(shù)先執(zhí)行加法晰奖,其結果保存在 4005h 地址處。兩個高字節(jié)數(shù)(分別保存在 4000h 和 4002h 處)通過 Add withCarry 指令相加腥泥,其結果保存在地址 4004h 處啃匿。如果去掉 Halt 指令并向代碼 RAM 中加入更多指令蛆楞,隨后的計算可以通過引用地址很方便地使用原來的那些操作數(shù)及其結果。

??實現(xiàn)該設計的關鍵是把代碼 RAM 陣列的數(shù)據(jù)輸出到 3 個 8 位鎖存器中夹厌。每個鎖存器保存該 3 字節(jié)指令的一個字節(jié)。第一個鎖存器保存指令代碼本身臂聋,第二個鎖存器保存地址的高字節(jié)或南,第三個鎖存器保存地址的低字節(jié)。第二個和第三個鎖存器的輸出構成了數(shù)據(jù) RAM 陣列的 16 位地址肄方。

??從存儲器中取出指令的過程稱為取指令(instruction fetch)权她。在我們設計的加法器中,每一條指令的長度是 3 個字節(jié)逝薪。因為每次從存儲器取回一個字節(jié),所以取每條指令需要的時間為 3 個時鐘周期(對應三個鎖存器的時鐘信號)拾徙。此外感局,一個完整的指令周期需要 4 個時鐘周期询微。這些變化必然使得控制信號更加復雜。機器響應指令碼做一系列操作的過程稱為執(zhí)行(execute)指令书聚。

這里同前面文章介紹的類似藻雌,省略了對代碼對電路的實際連接,實現(xiàn)這些并不復雜驯杜。這里為了突出重點做个,對部分內(nèi)容進行了省略滚局。其實藤肢,我們完全可以根據(jù)指令對應的操作碼嘁圈,設計出連接各個位置的電路結構蟀淮。

??在前面構建設備的過程中我們使用了兩種 RAM 陣列,一個用來存放指令碼温学,另一個用來存放操作數(shù)據(jù)仗岖,這種設計使得我們設計的加法器的結構清晰览妖。但現(xiàn)在我們使用 3 個字節(jié)長的指令格式讽膏,而且第二個和第三個字節(jié)用來指明了操作數(shù)的存儲地址,因此就沒有必要再使用兩個獨立的 RAM 陣列俐末。操作碼和操作數(shù)可以存放在同一個 RAM 陣列卓箫。

??為了實現(xiàn)這個設計垄潮,我們需要一個 2-1 選擇器來確定如何對 RAM 陣列尋址弯洗。通常,和前面的方式相同藐吮,我們用一個 16 位的計數(shù)器來計算地址炎码。數(shù)據(jù) RAM 陣列的輸出仍然連接到 3 個鎖存器秋泳,分別用來保存指令代碼及其對應操作數(shù)的 16 位地址,其 16 位的地址輸出是 2-1 選擇器的第二種輸入歉闰。地址被鎖存后卓起,可以通過選擇器將其作為 RAM 陣列的地址輸入。

通常,指令從 0000h 開始存放奕筐,這是因為當計數(shù)器復位后從該位置訪問 RAM 陣列离赫。最后的 Halt 指令存放在 000Ch 地址渊胸。我們可以把這 3 個操作數(shù)及它們的運算結果保存在RAM 陣列的任何地址。下圖演示了如何把兩個 8 位數(shù)相加胖翰,然后從結果中再減去一個 8 位數(shù)切厘。


??假設在使用的過程中迂卢,我們發(fā)現(xiàn)需要在原來的結果中再加兩個數(shù)而克,你可以向存儲器中輸入一些新的指令以替代原有的指令员萍,我們也可以選擇在原指令的地址后增加一些新的指令。

??第一步要做的就是把 000Ch 地址處的 Halt 指令替換為一個 Load 指令螃壤。但你仍然需要增加兩條 Add 指令,一條 Store 指令冤馏,以及一條新的 Halt 指令逮光。唯一的問題是墩划,現(xiàn)在 0010h 地址已經(jīng)保存了一些數(shù)據(jù)乙帮,因此需要把這些數(shù)據(jù)轉(zhuǎn)移到較高的地址空間中察净,然后還需要修改那些指向這些地址空間的指令。

在當前的例子中沟涨,我們選擇從 0020h 地址開始存放新的指令裹赴,并從 0030h 處開始存放新的操作數(shù)據(jù)诀浪。



注意雷猪,第一條 Load 指令所指向的地址為 0013h求摇,這個位置保存著第一次運算的結果。
現(xiàn)在验夯,兩部分指令的位置分別起始于地址 0000h 和 0020h挥转,而兩部分操作數(shù)據(jù)的地址分別起始于 0010h 和 0030h。我們希望自動加法器從 0000h 開始執(zhí)行所有指令完成計算任務党窜。

在上述的地址存放序列中幌衣,我們需要移除 000Ch 處的 Halt(停止)指令暇务,這里的移除指的是用其他代碼替換它垦细。但僅僅是替換是不夠的括改,它可能導致一些問題:不論我們用什么來替換 Halt 指令家坎,保存在地址 000Ch 的字節(jié)都會被當做指令代碼虱疏。而且從這個位置開始做瞪,每隔 3 個字節(jié)的地址都會被當做指令代碼進行處理。

??針對上述問題著拭,我們選擇使用一個新的指令 Jump(跳轉(zhuǎn))來替代 Halt 指令儡遮,如下指令表所示:

??通常情況下自動加法器是以順序方式對 RAM 陣列尋址的鄙币。Jump 指令改變了機器的這種尋址方式蹂随,取而代之的是從某個指定的地址開始尋址糙及。這種指令有時也被稱作分支(branch)指令或者 Goto 指令,即 “轉(zhuǎn)到另一個位置”唇聘。

??在上面的例子中迟郎,我們可以用一個 Jump 指令來替換 000Ch 地址處的 Halt 指令宪肖。

因此在上面的例子中控乾,自動加法器仍然從 0000h 地址開始,依次執(zhí)行一條 Load 指令壤短,一條 Add 指令久脯,一條 Subtract 指令和一條 Store 指令镰吆。之后執(zhí)行一條 Jump 指令万皿,跳轉(zhuǎn)至地址 0020h 繼續(xù)依次執(zhí)行一條 Load 指令相寇,兩條 Add 指令,一條 Store 指令婆赠,最后執(zhí)行一條 Halt 指令休里。

??Jump 指令通過作用于 16 位計數(shù)器實現(xiàn)其功能妙黍。無論何時瞧剖,只要自動加法器遇到 Jump 指令,計數(shù)器就會被強制輸出該 Jump 指令后的 16 位地址浇借。這可以通過 16 位計數(shù)器的 D 型邊沿觸發(fā)器的預置(Pre)和清零(Clr)輸入來實現(xiàn)妇垢。

在正常的操作下闯估,Pre 和 Clr 端的輸入都應該是 0吼和。但是纹安,當 Pre = 1厢岂,Q = 1阳距;當 Clr = 1筐摘,則 Q = 0咖熟。

如果你希望向一個觸發(fā)器加載一個新的值(用 A 表示,代表地址)郭赐,可以像下圖所示這樣連接捌锭。


通常观谦,置位信號為 0豁状。此時,觸發(fā)器的預置端輸入為 0告私,在復位信號不為 1 的情況下驻粟,清零信號也為 0蜀撑。在這種情況下剩彬,觸發(fā)器就可以獨立清零喉恋,而不受置位信號的影響轻黑。當置位信號為 1 時氓鄙,如果 A 為 1,則清零(Clr)輸入為 0升酣,預置(Pre)輸入為 1噩茄;如果 A 為 0绩聘,則預置(Pre)輸入 0君纫,清零(Clr)輸入為 1芹彬。這就意味著 Q 端將被設置為與 A 端相同的值(需要注意舒帮,和前面一樣,這里的置位和復位不能同時為 1)枉阵。將 Q 端置為與 A 端相同的值兴溜,能夠使得我們的計數(shù)器從我們傳入的數(shù)值位開始計數(shù)耻陕,因為計數(shù)器隨著振蕩器的交替信號逐漸遞增诗宣。

??我們需要為 16 位計數(shù)器的每一位設置一個這樣的觸發(fā)器召庞。一旦加載了某個特定的值篮灼,計數(shù)器就會從該值開始計數(shù)。

??這對我們之前設計的電路改動并不大存皂,從 RAM 陣列鎖存得到的 16 位地址既可以作為 2-1 選擇器(它允許該地址作為 RAM 陣列的地址輸入)的輸入,也可以作為 16 位計數(shù)器置位信號的輸入它改。

其實到這里我們會發(fā)現(xiàn)整個電路體系省略了較多的具體細節(jié)央拖,比如我們知道某些輸出可以作為某個結構的輸入鲜戒,但這些具體如何去實現(xiàn)呢遏餐?這里只能大致了解其工作原理,不必深究失都。

??顯然粹庞,只有當指令代碼為 30h(Jump) 并且其后的 16 位地址被鎖存時庞溜,我們才必須確保置位信號為 1流码。這樣才能保證跳轉(zhuǎn)功能的實現(xiàn),根據(jù)指令后接的地址傳入計數(shù)器和存儲器(RAM 陣列)赏胚,而計數(shù)器作為存儲器(RAM 陣列)的地址輸入觉阅,可以實現(xiàn)從給定位置開始后續(xù)的指令的操作典勇。

??Jump 指令的確很有用割笙。但與之相比伤溉,一個在我們想要的情況下跳轉(zhuǎn)的指令更加有用乱顾,這種指令稱做條件跳轉(zhuǎn)(Conditional Jump)宫静。

??這里我們通過一個例子來引出相應的內(nèi)容:怎樣讓自動加法器進行兩個 8 位數(shù)的乘法運算孤里?例如捌袜,我們?nèi)绾卫米詣蛹臃ㄆ鞯玫较?A7h(167)與 1Ch(28)相乘這種簡單運算的結果呢琢蛤?

乘法運算可以轉(zhuǎn)換為加法,例如 4 × 3 = 4 + 4 + 4迂猴。除法也可以進行轉(zhuǎn)換沸毁,例如 13 ÷ 4 即為 13 - 4 = 9 -》9 - 4 = 5 -》5 - 4 = 1息尺,那么可知 13 ÷ 4 = 3···1

??我們首先確定要把乘數(shù)和乘積存放在什么地址搂誉。為了方便起見静檬,把示例中涉及的 3 個數(shù)均表示為 16 位數(shù)拂檩。(1004h 和 1005h 分別存儲高低字節(jié)的計算結果)

??同樣我們需要將乘法轉(zhuǎn)換為加法稻励,因此上述計算即為把 28 個 A7h 累加父阻,下圖演示了如何把 A7h 累加:

這里需要注意的是:這里的計算過程是和前面一樣分高低字節(jié)進行的。因此會有 1005h+1001h望抽,1004h+1000h加矛。

??當上述指令執(zhí)行完成之后,存儲器 1004h 和 1005h 地址保存的 16 位數(shù)與 A7h 乘以 1 的結果相同煤篙,按照我們之前的想法需要把這 6 條指令連續(xù)輸入 27 次荒椭。對于此,我們可以選擇把這些指令連續(xù)輸入,也可以在 0012h 處保存一個 Halt 指令狸棍,然后將復位鍵連續(xù)按 28 次得到最終結果身害。

??上述介紹的兩種方式都存在將枯燥的過程重復多次執(zhí)行,如果使用我們的 Jump 指令草戈,這個指令將使得計數(shù)器再次從 0000h 處開始計數(shù)塌鸯。

??第一次執(zhí)行完指令之后,位于存儲器的 1004h 和 1005h 地址的 16 位數(shù)等于 A7h 乘 1唐片,然后 Jump 指令使下一條指令從存儲器頂部開始執(zhí)行丙猬。第二次執(zhí)行指令后涨颜,該 16 位數(shù)等于 A7h 乘 2,最后其結果可以等于 A7h 乘 1Ch茧球。但是庭瑰,這個過程不會停止下來,它會一直反復執(zhí)行下去抢埋。

??我們需要的是這樣一種 Jump 指令弹灭,它只讓這個過程重復執(zhí)行所需要的次數(shù),這種指令就是條件跳轉(zhuǎn)指令揪垄。要實現(xiàn)它穷吮,要做的第一步是增加一個與進位鎖存器類似的 1 位鎖存器。該鎖存器被稱為零鎖存器(Zero latch)饥努,這是因為只有當 8 位加法器的輸出全部為 0 時捡鱼,它鎖存的值才是 1。

這里的進位鎖存器即為我們在介紹用 8 位累加器計算 16 位二進制數(shù)的計算時酷愧,將 16 位數(shù)分成高低字節(jié)分別計算驾诈,并利用一個鎖存器將低字節(jié)的進位輸出保存作為高字節(jié)的進位輸入。

??使或非門的輸出為 1 的唯一方法是其所有的輸入全為 0伟墙。與進位鎖存器的時鐘輸入一樣翘鸭,只有當 Add、Subtract戳葵、Add with Carry就乓、Subtract with Borrow 這些指令執(zhí)行時,零鎖存器才鎖存 1 個數(shù)拱烁,該數(shù)稱做零標志位(Zero flag)生蚁。注意,它是以一種似乎是相反的方式工作的:當加法器的輸出全為 0 時戏自,零標志位等于 1邦投;當加法器的輸出不全為 0 時,零標志位等于 0擅笔。

??有了進位鎖存器和零鎖存器以后志衣,我們可以為指令表新增 4 條指令。

??例如猛们,非零轉(zhuǎn)移指令(Jump If Not Zero)只有在零鎖存器的輸出為 0 時才會跳轉(zhuǎn)到指定的地址念脯。換言之,如果上一步的加法弯淘、減法绿店、進位加法、或者借位減法等運算的結果為 0 時,將不會發(fā)生跳轉(zhuǎn)假勿。為了實現(xiàn)這個設計借嗽,只需要在常規(guī)跳轉(zhuǎn)命令的控制信號之上再加一個控制信號:如果指令是 Jump If Not Zero,那么只有當零標志位是 0 時转培,16 位計數(shù)器才被觸發(fā)恶导。

??我們接著上面的乘法的實現(xiàn),補充相應的指令堡距。下圖中 0012h 地址之后的指令即兩個數(shù)相乘所用到的上表中的所有指令甲锡。

??第一次循環(huán)之后,位于地址 0004h 和 0005h 處的 16 位數(shù)等于 A7h 與 1 的乘積羽戒。在上圖中缤沦,地址 1003h 處的字節(jié)通過 Load 指令載入到累加器,該字節(jié)是 1Ch易稠。把這個數(shù)和 001Eh 地址的字節(jié)相加后缸废。FFh 與 1Ch 相加的結果與從 1Ch 中減去 1 的結果相同,都是 1Bh驶社,因為這個數(shù)不等于 0企量,所以零標志位是 0,1Bh 這個結果會存回到 1003h 地址亡电。下一條要執(zhí)行的指令是 Jump If Not Zero届巩,零標志位沒有置為 1,因此發(fā)生跳轉(zhuǎn)份乒。接下來要執(zhí)行的一條指令位于 0000h 地址恕汇。

FFh 與 1Ch 相加的結果與從 1Ch 中減去 1 的結果相同:因為我們這里的計算存在進位,但我們會對計算結果的進位舍棄或辖,保存的是進位后的數(shù)瘾英。以 53 + 99 為例:53 + 99 = 152,舍棄百分位得到結果 52颂暇,也即 53 + 99 - 100 = 52缺谴,相當于減去 1。而在 16 進制中耳鸯,F(xiàn)Fh 就相當于十進制中的 99湿蛔,也即在減法實現(xiàn)部分我們介紹的補數(shù),單個位置能取到的最大數(shù)县爬。只要加數(shù)(53)大于等于 1煌集,都能實現(xiàn)計算結果減 1 的效果。

??需要記住的是捌省,Store 指令不會影響零標志位的值。只有 Add碉钠、Subtract纲缓、Addwith Carry卷拘、Subtract with Borrow 這些指令才能影響零標志位的值,因此它的值與最近執(zhí)行上述某個指令時所設置的值相同祝高。經(jīng)過兩次循環(huán)后栗弟,1004h 和 1005h 地址所保存的 16 位數(shù)等于 A7h 與 2 的乘積。1Bh 與 FFh 的和等于 1Ah工闺,不為 0乍赫,因此仍然返回到頂部執(zhí)行。

不難發(fā)現(xiàn)陆蟆,這里的控制次數(shù)是通過每次相加后雷厂,1003h 位的被乘數(shù)減 1。

??當執(zhí)行到第 28 次循環(huán)時叠殷,1004h 和 1005h 地址保存的 16 位數(shù)等于 A7h 和 1Ch 的乘積改鲫。1003h 地址保存的值是 1,它和 FFh 相加的結果是 0林束,因此零標志位被置位像棘。Jump If Not Zero 指令不會再跳轉(zhuǎn),相反壶冒,下一條要執(zhí)行的指令即 Halt 指令缕题。這樣,我們就完成了全部的工作胖腾。

??通過上面的一步步地優(yōu)化我們得到了一個計算機烟零!條件跳轉(zhuǎn)指令將它與我們以往設計的加法器區(qū)別開來,能否控制重復操作或者循環(huán)是計算機和計算器的區(qū)別胸嘁。當然瓶摆,上述介紹了的僅僅為一個演示,我們可以對其進行進一步優(yōu)化性宏,使其能夠勝任更加復雜的運算(例如除法群井、開平方根、取對數(shù)毫胜、三角函數(shù)等)书斜。

??我們裝配的計算機屬于數(shù)字計算機(digital computer),因為它只處理離散數(shù)據(jù)(曾經(jīng)還有一種模擬信號計算機(analog computer)酵使,但現(xiàn)在已經(jīng)很少見了)荐吉。一臺數(shù)字計算機主要由 4 部分構成:處理器(processor)、存儲器(memory)口渔,至少一個輸入(input)設備和一個輸出(output)設備样屠。我們裝配的計算機中,存儲器是 64 KB 的 RAM 陣列,輸入和輸出設備分別是 RAM 陣列控制面板上的開關和燈泡痪欲。這些開關和燈泡可以讓我們向存儲器中輸入數(shù)據(jù)悦穿,并可以檢查運算結果。

??在我們所設計的計算機中业踢,8 位反相器和 8 位加法器一起構成了算術邏輯單元(Arithmetic Logic Unit)栗柒,即 ALU。該 ALU 只能進行算術運算知举,最主要的是加法和減法運算瞬沦。在更加復雜的計算機中(我們會在后面的章節(jié)看到),ALU 還可以進行邏輯運算雇锡。

??我們的計算機是由繼電器逛钻、電線、開關遮糖,以及燈泡構造而成的绣的,這些東西都叫做硬件(hardware)。與之對應欲账,輸入到存儲器中的指令和數(shù)值被稱做軟件(software)屡江。在計算機領域,“軟件” 與 “計算機程序” 或 “程序” 等術語是同義的赛不,我們確定用一些指令讓計算機實現(xiàn)兩個數(shù)相乘的過程就是在進行計算機程序設計惩嘉。計算機程序設計有時也被稱做編寫代碼(writing code),或編碼(coding)踢故。

??能夠被處理器響應的操作碼(比如 Load 指令和 Store 指令的代碼 10h 和 11h)文黎,稱做機器碼(machine codes),或機器語言(machine language)殿较。

回顧我們第一篇文章中說到的我們在找尋一種能夠與計算機 “交流” 的方式耸峭,一種雙方都能理解的方式。計算機能夠理解和響應機器碼淋纲,其原理和人類能夠讀寫語言是類似的劳闹,是我們和計算機進行溝通的一種特殊的 “語言”。

??一直以來洽瞬,我們都在使用很長的短語來引用機器所執(zhí)行的指令本涕,比如 Add withCarry 指令。通常而言伙窃,機器碼都分配了對應的簡短助記符菩颖,這些助記符都用大寫字母表示,包括 2 個或 3 個字符为障。下面是一系列上述計算機大致能夠識別的機器碼的助記符晦闰。

??當這些助記符與另外一對短語結合使用時放祟,其作用更加突出。例如鹅髓,對于這樣一條長語句 “把 1003h 地址處的字節(jié)加載到累加器”舞竿,我們可以用如下簡潔的句子替代:

LOD  A,  [1003h]

??位于助記符右側的 A 和 [1003h] 稱為參數(shù)(argument),它們是這個 Load 指令的操作對象窿冯。參數(shù)由兩部分組成,左邊的操作數(shù)稱為目標(destination)操作數(shù)(A 代表累加器)确徙,右邊的操作數(shù)稱為源(source)操作數(shù)醒串。方括號 “[]” 表明要加載到累加器的不是 1003h 這個數(shù)值,而是位于存儲器地址 1003h 的數(shù)值鄙皇。

??類似的芜赌,指令 “把 001Eh 地址的字節(jié)加到累加器”:

ADD A,  [0010Eh]

“如果零標志位不是 1 則跳轉(zhuǎn)到 0000h 地址處” 這個冗長的語句可以簡明地表示為:

JNZ  0000h

??注意,這里沒有使用方括號伴逸,這是因為跳轉(zhuǎn)指令要轉(zhuǎn)移到的地址是 0000h缠沈,而不是保存于 0000h 地址的值,即 0000h 地址就是跳轉(zhuǎn)指令的操作數(shù)错蝴。

在編碼時最好不要使用實際的數(shù)字地址洲愤,因為它們是可變的。例如顷锰,如果要把數(shù)值保存在存儲器的 2000h~2005h 地址空間中柬赐,需要在程序中重復寫這些語句」僮希可以選擇用標號(label)來指代存儲器中的地址空間肛宋。

??有語言基礎的朋友可能已經(jīng)發(fā)現(xiàn)了,這里給出的是一種計算機程序設計語言束世,稱為匯編語言(assembly language)酝陈。它是全數(shù)字的機器語言和指令的文字描述的一種結合體。同時它用標號表示存儲器地址毁涉。這里就不針對這一門語言的內(nèi)容進行展開沉帮,了解即可。


3 小結

??編碼:自動加法器(二)篇針對前面設計自動加法器進行改進薪丁,實現(xiàn)了更加復雜的功能遇西,并借此引出了指令和語言的相關概念。為了精簡內(nèi)容刪減了部分較為詳細的書寫严嗜,僅作為整理總結粱檀。

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市漫玄,隨后出現(xiàn)的幾起案子茄蚯,更是在濱河造成了極大的恐慌压彭,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,544評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件渗常,死亡現(xiàn)場離奇詭異壮不,居然都是意外死亡,警方通過查閱死者的電腦和手機皱碘,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,430評論 3 392
  • 文/潘曉璐 我一進店門询一,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人癌椿,你說我怎么就攤上這事健蕊。” “怎么了踢俄?”我有些...
    開封第一講書人閱讀 162,764評論 0 353
  • 文/不壞的土叔 我叫張陵缩功,是天一觀的道長。 經(jīng)常有香客問我都办,道長嫡锌,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,193評論 1 292
  • 正文 為了忘掉前任琳钉,我火速辦了婚禮势木,結果婚禮上,老公的妹妹穿的比我還像新娘槽卫。我一直安慰自己跟压,他們只是感情好,可當我...
    茶點故事閱讀 67,216評論 6 388
  • 文/花漫 我一把揭開白布歼培。 她就那樣靜靜地躺著震蒋,像睡著了一般。 火紅的嫁衣襯著肌膚如雪躲庄。 梳的紋絲不亂的頭發(fā)上查剖,一...
    開封第一講書人閱讀 51,182評論 1 299
  • 那天,我揣著相機與錄音噪窘,去河邊找鬼笋庄。 笑死,一個胖子當著我的面吹牛倔监,可吹牛的內(nèi)容都是我干的直砂。 我是一名探鬼主播,決...
    沈念sama閱讀 40,063評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼浩习,長吁一口氣:“原來是場噩夢啊……” “哼静暂!你這毒婦竟也來了?” 一聲冷哼從身側響起谱秽,我...
    開封第一講書人閱讀 38,917評論 0 274
  • 序言:老撾萬榮一對情侶失蹤洽蛀,失蹤者是張志新(化名)和其女友劉穎摹迷,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體郊供,經(jīng)...
    沈念sama閱讀 45,329評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡峡碉,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,543評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了驮审。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片鲫寄。...
    茶點故事閱讀 39,722評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖疯淫,靈堂內(nèi)的尸體忽然破棺而出塔拳,到底是詐尸還是另有隱情,我是刑警寧澤峡竣,帶...
    沈念sama閱讀 35,425評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站量九,受9級特大地震影響适掰,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜荠列,卻給世界環(huán)境...
    茶點故事閱讀 41,019評論 3 326
  • 文/蒙蒙 一类浪、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧肌似,春花似錦费就、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,671評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至固额,卻和暖如春眠蚂,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背斗躏。 一陣腳步聲響...
    開封第一講書人閱讀 32,825評論 1 269
  • 我被黑心中介騙來泰國打工逝慧, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人啄糙。 一個月前我還...
    沈念sama閱讀 47,729評論 2 368
  • 正文 我出身青樓笛臣,卻偏偏與公主長得像,于是被迫代替她去往敵國和親隧饼。 傳聞我的和親對象是個殘疾皇子沈堡,可洞房花燭夜當晚...
    茶點故事閱讀 44,614評論 2 353

推薦閱讀更多精彩內(nèi)容

  • 1 前言 ??本文是基于《編碼》、《穿越計算機的迷霧》兩部著作進行讀后整理的記錄性博客桑李。對書中較為重要的內(nèi)容進行歸...
    汪小魚閱讀 1,151評論 0 5
  • 自動化 這一張篇將是最讓人激動人心的一刻踱蛀。前面我們已經(jīng)解決了存儲窿给、加法矢洲、減法的問題荞膘,這里將之前的知識全部連起來。 ...
    紙簡書生閱讀 1,162評論 0 1
  • 第一次聽說這本書叉抡,是在今年過年的時候猬膨,在 bang 的博客上看到他對這本書的評價非常高角撞,他甚至感嘆到,如果學校里能...
    ShannonChenCHN閱讀 3,209評論 1 3
  • 前言 書名:《編碼:隱匿在計算機軟硬件背后的語言》英文名:Code: The Hidden Language of...
    AUTOBEAR閱讀 1,325評論 0 3
  • 第1章電筒對英文字母的編碼方式有畫圈勃痴,和字母對應亮光的次數(shù)方式谒所。這兩種方式效率不高,交流不方便沛申。 可以通過短亮劣领,長...
    草珊瑚_6557閱讀 367評論 0 0