汇编语言介绍,内存和总线的初步认识
1、機器語言和匯編語言
機器語言是機器指令的集合。機器指令展開來說就是一個可以正確執(zhí)行的命令,電子計算機的機器指令是一列二進制數(shù)字,計算機將之轉(zhuǎn)變?yōu)橐涣懈叩碗娖?#xff0c;以使計算機的電子器件受到驅(qū)動,進行計算。
在我們通常的PC中,有一個芯片來完成上面的計算機的功能。這個芯片就是我們常說的CPU(Central Processing Unit,中央處理單元)。
每一種微處理器,由于硬件設(shè)計和內(nèi)部結(jié)構(gòu)的不同,就需要用不同的電平脈沖來控制,使它工作。所以每一種微處理器都有自己的機器指令集,也就是機器語言。
由于機器語言書寫和記憶都比較麻煩,所以產(chǎn)生了匯編語言。匯編語言的主體是匯編指令。匯編指令和機器指令的差別在于指令的表示方法上。匯編指令是機器指令便于記憶的書寫格式。
//操作:寄存器BX的內(nèi)容送到AX中 機器指令: 1000100111011000 匯編指令: mov ax,bx匯編語言出現(xiàn)以后,程序員使用匯編指令編寫程序。但是計算機能讀懂的只有機器指令,所以需要有一個能夠?qū)R編指令轉(zhuǎn)換成機器指令的翻譯程序,我們稱之為編譯器。程序員用匯編語言寫出源程序,再用匯編編譯器將其編譯為機器碼,由計算機最終執(zhí)行。過程如下圖。
那么,匯編語言的指令有哪些呢?一共有三類:
(1)匯編指令: 機器碼的助記符,有對應(yīng)的機器碼。
(2)偽指令: 沒有對應(yīng)的機器碼,由編譯器執(zhí)行,計算機并不執(zhí)行。
(3)其他符號: 如+、-、*、/等,由編譯器識別,沒有對應(yīng)的機器碼。
匯編語言的核心是匯編指令,它決定了匯編語言的特性。
?
2、CPU是怎么工作的
CPU是計算機的核心部件,控制整個計算機的運作并進行運算。要想讓一個CPU工作,就必須向它提供指令和數(shù)據(jù)。指令和數(shù)據(jù)在存儲器中存放,也就是常說的內(nèi)存,離開了內(nèi)存,性能再好的CPU也無法工作。磁盤不同于內(nèi)存,磁盤上的數(shù)據(jù)或程序如果不讀到內(nèi)存,就無法被CPU使用。所以我們首先需要了解CPU如何從內(nèi)存中讀取信息和寫入信息。
?
存儲器被劃分為若干個存儲單元,每個存儲單元從0開始順序編號。一個存儲單元是一個Byte,一個Byte是8個bit,就是8位,也就是8個0/1值,例如10001111就是一個Byte。
在內(nèi)存和磁盤上,數(shù)據(jù)和指令沒有任何區(qū)別,都是0/1二進制信息,關(guān)鍵是CPU在工作的時候把有的信息看作指令,有的信息看作數(shù)據(jù),為同樣的信息賦予了不同的意義。
CPU要想進行數(shù)據(jù)的讀寫,必須和外部部件(標準的說法是芯片)進行下面3類信息的交互。
a) 存儲單元的地址(地址信息)
b) 器件的選擇,讀或?qū)懙拿?控制信息)
c) 讀或?qū)懙臄?shù)據(jù)(數(shù)據(jù)信息)
CPU從內(nèi)存中讀取數(shù)據(jù),就要將地址、數(shù)據(jù)和控制信息傳到內(nèi)存芯片中。在計算機中專門有連接CPU和其他芯片的導(dǎo)線,通常稱為總線,根據(jù)傳送信息的不同,從邏輯上分為地址總線、控制總線和數(shù)據(jù)總線3類。
例如CPU從3號單元中讀取數(shù)據(jù)的過程如下。
1) CPU通過地址線將地址信息3發(fā)出。
2) CPU通過控制線發(fā)出內(nèi)存讀命令,選中存儲區(qū)芯片,并通知它,將要從中讀取數(shù)據(jù)。
3) 存儲器將3號單元中的數(shù)據(jù)8通過數(shù)據(jù)線送入CPU。
寫操作與讀操作類似,例如向3號單元寫入數(shù)據(jù)26。
1)CPU通過地址線將地址信息3發(fā)出。
2)CPU通過控制線發(fā)出內(nèi)存讀命令,選中存儲區(qū)芯片,并通知它,將要從中寫入數(shù)據(jù)。
3)CPU通過數(shù)據(jù)線將數(shù)據(jù)26送入內(nèi)存的3號單元中。
?
到此我們知道了CPU是如何進行數(shù)據(jù)讀寫的,那么如何命令計算機進行數(shù)據(jù)讀寫呢?答案就是向CPU輸入能夠驅(qū)動它進行工作的電平信息(機器碼)。
例如對于8086CPU,下面的機器碼能夠完成從3號單元讀數(shù)據(jù)
機器碼: 101000010000001100000000對應(yīng)的匯編指令 MOV AX,[3] 含義: 從3號單元讀取數(shù)據(jù)送入寄存器AX
?
一個CPU有N根地址線,則可以說這個CPU的地址總線的寬度為N。這樣的CPU最多可以尋找2的N次方個內(nèi)存單元。
數(shù)據(jù)總線的寬度決定了CPU和外界的數(shù)據(jù)傳送速度。8根數(shù)據(jù)總線一次可傳送一個8位二進制數(shù)據(jù),16根數(shù)據(jù)總線一次可傳送兩個字節(jié)。
控制總線是一些不同控制線的集合,有多少根控制總線,就意味著CPU提供了對外部器件的多少種控制。所以控制總線的寬度決定了CPU對外部器件的控制能力。
?
計算機系統(tǒng)中,所有可以用程序控制其工作的設(shè)備,必須受到CPU的控制。CPU對外部設(shè)備不能直接控制,直接控制這些設(shè)備進行工作的是插在擴展插槽上的接口卡。擴展插槽通過總線和CPU相連,所以接口卡也通過總線同CPU相連。CPU可以直接控制這些接口卡,從而實現(xiàn)CPU對外設(shè)的間接控制。簡言之,就是CPU通過總線向接口卡發(fā)送命令,接口卡根據(jù)CPU的命令控制外設(shè)進行工作。
?
一臺PC機裝有多個存儲器芯片,它們從讀寫屬性上分為隨機存儲器(RAM)和只讀存儲器(ROM),RAM可讀可寫,但必須帶電存儲,關(guān)機后存儲的內(nèi)容丟失,ROM只能讀取不能寫入,關(guān)機后其中的內(nèi)容不丟失。這些存儲器從功能和連接上可分為以下幾類。
1)隨機存儲器
用于存放供CPU使用的絕大部分程序和數(shù)據(jù),主隨機存儲器一般由兩個位置上的RAM組成,裝在主板上RAM和插在擴展插槽上的RAM。
2)裝有BIOS(Basic Input/Output System,基本輸入輸出系統(tǒng))的ROM
BIOS是由主板和各類接口卡廠商提供的軟件系統(tǒng),可以通過它利用該硬件設(shè)備進行最基本的輸入輸出。
3)接口卡上的RAM
某些接口卡需要對大批量輸入輸出數(shù)據(jù)進行暫時存儲,在其上裝有RAM。最典型的是顯示卡上的RAM,一般稱為顯存。
PC機中各類存儲器的邏輯連接
?
上述的存儲器,在物理上是獨立的器件,但是都是和CPU的總線相連,CPU對它們進行讀寫的時候都通過控制線發(fā)出內(nèi)存讀寫命令。也就是說,CPU在操控它們的時候,把它們都當(dāng)作內(nèi)存對待。也就是說,對于CPU而言,系統(tǒng)中的所有存儲器中的存儲單元處于一個統(tǒng)一的邏輯存儲器中,它的容量受CPU尋址能力的限制。如下圖所示。
?
所以,我們在基于一個計算機硬件系統(tǒng)編程的時候,必須知道這個系統(tǒng)中的內(nèi)存地址空間分配情況。因為當(dāng)我們想在某類存儲器中讀寫數(shù)據(jù)的時候,必須知道它的第一個單元的地址和最后一個單元的地址,才能保證讀寫操作是在預(yù)期的存儲器中進行。
不同計算機系統(tǒng)的內(nèi)存地址空間的分配情況是不同的,下圖展示了8086PC機內(nèi)存地址空間分配的基本情況。
上圖表示,從地址0~9FFFF的內(nèi)存單元讀取數(shù)據(jù),實際上就是在讀取主隨機存儲器中的數(shù)據(jù);向地址A0000~BFFFF的內(nèi)存單元寫數(shù)據(jù),就是想顯存中寫入數(shù)據(jù),這些數(shù)據(jù)會被顯示卡輸出到顯示器上;向地址C0000~FFFFF的內(nèi)存單元中寫入數(shù)據(jù)的操作是無效的,因為這等于改寫只讀存儲器中的內(nèi)容。
轉(zhuǎn)載于:https://www.cnblogs.com/gkp307/p/9907950.html
總結(jié)
以上是生活随笔為你收集整理的汇编语言介绍,内存和总线的初步认识的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: FF称签约美国百年顶级投行Stifel;
- 下一篇: 性能测试、负载测试、压力测试的区别