先看一下計(jì)算機(jī)運(yùn)行過(guò)程的示意圖:
就拿我們寫(xiě)的App來(lái)說(shuō), 它是躺在我們手機(jī)磁盤(pán)里的, 當(dāng)我們點(diǎn)擊App的時(shí)候, 程序啟動(dòng), 我們寫(xiě)的那些代碼就會(huì)被讀進(jìn)內(nèi)存里, 然后CPU會(huì)讀取內(nèi)存中的數(shù)據(jù), 并控制終端設(shè)備, 相反, 終端設(shè)備的一些交互會(huì)由CPU轉(zhuǎn)換成數(shù)據(jù)寫(xiě)進(jìn)內(nèi)存里. (你可以大致這么理解).
那么, 匯編就是研究?jī)?nèi)存與CPU交互的關(guān)鍵所在, 計(jì)算機(jī)不懂什么高級(jí)語(yǔ)言, 匯編語(yǔ)言, 它知道的就是0, 1, 0, 1這些高頻低頻的電信號(hào), 那么我們的高級(jí)語(yǔ)言是怎么轉(zhuǎn)換成0, 1, 0, 1這些的呢? 匯編可以說(shuō)起到了承上啟下的作用:
匯編語(yǔ)言經(jīng)過(guò)編譯得到機(jī)器語(yǔ)言, 這樣計(jì)算機(jī)就能夠讀懂了, 機(jī)器語(yǔ)言經(jīng)過(guò)反編譯會(huì)得到匯編語(yǔ)言. 因?yàn)橐粭l匯編指令就對(duì)應(yīng)一條機(jī)器指令, 所以我們可以通過(guò)一系列機(jī)器指令來(lái)推斷出匯編的指令.
好了, 既然硬件中最為重要的就是內(nèi)存和CPU, 匯編指令大部分也是與內(nèi)存和CPU相關(guān)的, 那么內(nèi)存與CPU之間是怎么交互的呢?
這里就要提到總線的概念:
每一個(gè)CPU芯片都有許多管腳, 這些管腳和總線相連, CPU通過(guò)總線跟外部器件進(jìn)行交互, 總線就是一根根導(dǎo)線的集合. 那么總線的寬度就決定了數(shù)據(jù)傳輸?shù)哪芰?
就像一根水管, 越粗, 流通的水量就越大. 我們可以理解為通量
總線的寬度越寬, 數(shù)據(jù)傳輸?shù)耐烤驮酱?/h5>
總線分為以下三種:
總線的分類
-
地址總線的寬度決定了CPU的尋址能力, 這是什么意思呢?
地址總線的寬度決定了CPU的尋址能力, 這是什么意思呢?
我們可以把內(nèi)存理解為一個(gè)蜂巢快遞的柜子, 你要找到快遞的柜子, 就必須給柜子編號(hào), 那么尋址能力就是給柜子編號(hào)的能力, 編了號(hào), 你才能找到對(duì)應(yīng)的柜子.
如果地址總線為1根, 那么尋址能力就是2^1, 要么0 , 要么1.尋址能力即為2.
如果地址總線為10根, 那么尋址能力就是2^10, 就是1024, 意思就是可以給柜子編號(hào)從0~1023.
那么8086CPU的地址總線為20根, 那么尋址能力就是2^20, 即(210)2, 即1024* 1024, 就是1M的尋址能力.
-
那么, 數(shù)據(jù)總線的寬度決定了什么呢? 就是我剛才說(shuō)的, 數(shù)據(jù)傳輸?shù)耐?/h5>
8086CPU的數(shù)據(jù)總線寬度是16, 可以傳輸?shù)臄?shù)據(jù)的長(zhǎng)度是多少呢?
內(nèi)存的最小但愿就是字節(jié)(byte), 一個(gè)字節(jié)是用8個(gè)比特位(bit)來(lái)表示的, 那么數(shù)據(jù)總線寬度為16, 就是8個(gè)bit位的2倍, 可以傳輸2個(gè)字節(jié)的數(shù)據(jù).
假設(shè)現(xiàn)在有89D8H這一個(gè)16進(jìn)制數(shù)據(jù), 我想從內(nèi)存中讀取出來(lái), 或者寫(xiě)到內(nèi)存中去, 如果是8088的CPU, 將放電幾次呢? 如果是8086的CPU, 又將放電幾次呢?
首先, 1個(gè)16進(jìn)制的數(shù)相當(dāng)于2^4, 那么就是4個(gè)bit位, 那么兩位16進(jìn)制數(shù), 對(duì)于二進(jìn)制來(lái)說(shuō), 就是(2^4) * (2^4), 就是16個(gè)比特位, 8個(gè)比特位是1個(gè)字節(jié), 那么2位的16進(jìn)制數(shù)就相當(dāng)于兩個(gè)字節(jié),
8088的數(shù)據(jù)總線寬度是8 , 相當(dāng)于一次放電傳輸8個(gè)bit位的數(shù)據(jù), 就是一個(gè)字節(jié),
如果傳輸2個(gè)字節(jié)的數(shù)據(jù), 需要放電2次
而8086的數(shù)據(jù)總線寬度是16, 所以, 它只需一次放電就可以傳輸2個(gè)字節(jié)的數(shù)據(jù).
我要開(kāi)始盜圖來(lái)說(shuō)明問(wèn)題啦:
-
最后一種, 控制總線的寬度決定了CPU對(duì)其他器件的控制能力, 可以有多少種控制
未完待續(xù)...