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