0x01基礎(chǔ)知識:
機器語言:
是機器指令的集合沿侈。
寄存器:
簡單地講是CPU中可以存儲數(shù)據(jù)的器件,一個CPU中有多個寄存器市栗。AX是其中一個寄存器的代號肋坚,BX是另一個寄存器的代號。
匯編語言的組成:
- 匯編指令:機器碼的助記符肃廓,有對應(yīng)的機器碼
- 偽指令:沒有對應(yīng)的機器碼智厌,由編譯器執(zhí)行,計算器并不執(zhí)行盲赊。
- 其他符號:如+铣鹏,-,*,/等哀蘑,由編譯器執(zhí)行诚卸,沒有對應(yīng)的機器碼。
存儲器:
即內(nèi)存绘迁,相當(dāng)于記憶的東西合溺,CPU無法直接使用硬盤的數(shù)據(jù),是CPU從內(nèi)存中獲取數(shù)據(jù)再進行處理的缀台。
指令和數(shù)據(jù):
在內(nèi)存或磁盤上棠赛,指令和數(shù)據(jù)沒有票任何區(qū)別,都是二進制信息膛腐。只有在CPU工作時有的信息看成指令睛约,有的信息看成數(shù)據(jù)。就像圍棋的棋子哲身,棋子在盒子里的時候沒有區(qū)別辩涝,只有當(dāng)他在博弈的時候棋子就有了不同的意義
存儲器單元(B/字節(jié)):
存儲器被劃分成若干個存儲單元,每個存儲單元從0開始順序編號勘天。里0-127怔揩。我們知道計算機最小的信息單位為BIT(比特)也就是一個二進制位,8個bit組成一個Byte(字節(jié))脯丝,微型機存儲器的存儲單元可以存儲一個Byte即8個二進制位商膊,一個存儲器可以存儲多少個Byte就表示可以存儲多少個單元
大容量單位轉(zhuǎn)化:
1024B=1KB 1024KB
CPU對存儲器的讀寫過程:
CPU想要進行數(shù)據(jù)的讀寫,必須和外部器件(標(biāo)準(zhǔn)的說話是芯片)進行信息交互
- 存儲單元的地址(地址信息)
- 器件的選擇巾钉,讀或?qū)懙拿睿刂菩畔ⅲ?/li>
- 讀或?qū)懙臄?shù)據(jù)(數(shù)據(jù)信息)
總線:
在計算機中專門有連接CPU和其他芯片的導(dǎo)線翘狱,統(tǒng)稱為總線秘案,又以他們的功能分類為三種
- 地址總線
- 控制總線
- 數(shù)據(jù)總線
CPU從內(nèi)存中讀取/讀寫數(shù)據(jù)的過程
- CPU通過地址線將地址信息3發(fā)出
- CPU通過控制總線發(fā)出內(nèi)存讀/寫命令砰苍,選中存儲芯片并通知它潦匈,將要讀/寫出數(shù)據(jù)
- 存儲器將3好單元的數(shù)據(jù)8通過數(shù)據(jù)線送入CPU/CPU通過數(shù)據(jù)線8送入內(nèi)存的3號單元中
地址總線:
CPU用來指定存儲器單元的數(shù)據(jù)線。一個CPU有N根地址線赚导,則可以說這個CPU的地址總線的寬度為N茬缩。這樣的CPU最多可以尋找2的N次方個內(nèi)存單元。
地址總線上發(fā)送的地址信息吼旧。
數(shù)據(jù)總線:
CPU與內(nèi)存或其他器件之間的數(shù)據(jù)傳送是通過數(shù)據(jù)總線來進行的凰锡。數(shù)據(jù)總線的寬度決定了CPU和外界 的數(shù)據(jù)傳送速度。8跟數(shù)據(jù)總線一次可以傳送8位二進制數(shù)據(jù)(即1B).16跟可以傳2B
控制總線:
控制總線是一些不同控制線的集合圈暗。有多少根控制總線掂为,就意味著CPU提供了多少外部器件的控制。所以控制總線的寬度決定了CPU對外部器件的控制能力
0x12 小結(jié)
- 匯編指令是機器指令的助記符员串,統(tǒng)計器指令一一對應(yīng)
- 每一種CPU都有自己的匯編指令集
- CPU可以直接使用的信息在存儲器中存放
- 在存儲器中指令和數(shù)據(jù)沒有任何區(qū)別勇哗,都是二進制信息
- 存儲單元從0開始編號
- 一個存儲單元可以存8個bit即八個二進制數(shù)
- 每一個CPU芯片都有許多管腳,這些管腳和總線相連寸齐。夜空而言說欲诺,這些管腳引出總線。一個CPU口而已引出3種總線的寬度標(biāo)志了這個CPU的不同方面的性能
- 地址總線的寬度決定了CPU的尋址能力
- 數(shù)據(jù)總線的寬度決定了CPU與外部器件進行數(shù)據(jù)傳輸時一次可以傳輸多少量
- 控制總線的寬度決定了CPU對系統(tǒng)中其他器件的控制能力
補充 1渺鹦,各類存儲器
- 隨機存儲器
用來存放供CPU使用的絕大部分程序和數(shù)據(jù)扰法,主隨機存儲器一般由兩個位置上的RAM組成,裝在主板上的RAM槽和擴展插槽上的RAM
- 裝有BIOS(Basic Input/Output System,基本輸入/輸出系統(tǒng))的ROM
BIOS是由主板和各類接口卡(如顯卡毅厚,網(wǎng)卡等)廠商提供的軟件系統(tǒng)塞颁,可以通過它利用該硬件設(shè)備進行最基本的輸入輸出。在主板和某些接口卡上插存儲相應(yīng)的BIOS的ROM
- 接口上的RAM
某些接口需要大批量的輸入吸耿,輸出數(shù)據(jù)進行暫時存儲殴边,在其上裝有RAM。最典型的的是顯卡上的RAM一般稱為顯存珍语。換句話說锤岸,我們將需要顯示的呃逆榮陪你過寫入顯存,就會出現(xiàn)在顯示器上板乙。
上面的存儲器都有以下兩點相同:
- 都是和CPU總線連接
- CPU對他們進行讀或?qū)懙臅r候都通過控制線發(fā)出內(nèi)存讀寫命令
也就是說CPU在對待他們就是把他們當(dāng)一個由若干個存儲單元組成的邏輯存儲器是偷,這個邏輯存儲器就是我們所說的內(nèi)存地址空間。
補充 2內(nèi)存地址空間
假設(shè)上圖的內(nèi)存地址空間的地址段分配如下:
- 地址0~7FFFH的32KB空間為主隨機存儲器的地址空間
- 地址8000H~9FFFH的8KB空間為顯存地址空間
- 地址A000H~FFFFH的24KB空間為各個ROM的地址空間
這樣CPU就就可以往各個ROM寫入募逞,但是A000H~FFFFH除外蛋铆,A000H-FFFFH單元實際上就是ROM存儲器的一個單元
地址空間大小受CPU地址總線寬度的閑置。8086CPU的地址總線寬度為20放接,這樣可以傳送2^20 個不同地址信息(大小從0至220-1)即可以定位2020個內(nèi)存單元刺啦,則8086PC的內(nèi)存地址空間大小為1MB。
最終運行程序的是CPU纠脾,我們用匯編語言編程的時候玛瘸,必須要從CPU的角度考慮問題蜕青,對CPU來講,系統(tǒng)中的所有存儲器中的存儲單元都處于一個系統(tǒng)的邏輯存儲器中糊渊,他的容量受CPU尋址能力的限制右核。在這個邏輯存儲器即使我們所說的內(nèi)存地址空加派。