匯編語言:基本概念
1 機器語言和匯編語言
1.1 機器語言
機器指令展開來講就是一臺機器可以正確執(zhí)行的命令。電子計算機的機器指令是一列二進制數(shù)字。計算機將之轉(zhuǎn)變?yōu)橐涣懈叩碗娖?,以使計算機的電子器件受到驅(qū)動,進行運算。早期的程序設計均使用機器語言。程序員們將用0、1 數(shù)字編成的程序代碼打在紙帶或卡片上,1打孔,0 不打孔,再將程序通過紙帶機或卡片機輸入計算機,進行運算。
機器語言難于辨別和記憶, 給整個產(chǎn)業(yè)的發(fā)展帶來了障礙。于是匯編語言產(chǎn)生了。
1.2 匯編語言
匯編語言的主體是匯編指令。匯編指令和機器指令的差別在于指令的表示方法上。匯 編指令是機器指令便于記憶的書寫格式
例如:機器指令1000100111011000表示把寄存器BX的內(nèi)容送到AX 中。匯編指令則寫成mov ax,bx
。這樣的寫法與人類語言接近,便于閱讀和記憶。
「編譯器」 是能夠?qū)R編指令轉(zhuǎn)換成機器指令的翻譯程序,程序員用匯編語言寫出源程序,再用匯編編譯器將其編譯為機器碼,由計算機最終執(zhí)行。
2 CPU對存儲器的讀寫
2.1 概述
CPU要從內(nèi)存中讀數(shù)據(jù),首先要指定 「存儲單元的地址」 。另外還要指明它要對 「哪一個器件」 進行操作,進行 「哪種操作」 ,是從中讀出數(shù)據(jù),還是向里面寫入數(shù)據(jù)。
即CPU要想進行數(shù)據(jù)的讀寫,必須和外部器件(標準的說法是芯片)進行下面3類信息的交互。
- 存儲單元的地址(地址信息);
- 器件的選擇,讀或?qū)懙拿睿刂菩畔ⅲ?
- 讀或?qū)懙臄?shù)據(jù)(數(shù)據(jù)信息)。
在計算機中專門有為CPU和其他部件之間提供信息(地址信息、控制信息、數(shù)據(jù)信息)的傳輸通道,通常稱為總線??偩€從物理上來講,就是一根根導線的集合。根據(jù)傳送信息的不同,總線從邏輯上又分為3類,地址總線、控制總線和數(shù)據(jù)總線。8086CPU有20條地址總線、16條控制總線和16條數(shù)據(jù)總線。
要讓一個計算機或微處理器工作,應向它輸入能夠驅(qū)動它進行工作的電平信息(機器碼)。例如:傳送3 號單元的內(nèi)容入AX
- 機器碼:10100001 00000011 00000000
- 對應的匯編指令:MOV AX,[3]
2.2 地址總線
「地址總線(AB)」 用來傳遞地址信息。因地址總是從CPU送出去的,所以地址總線通常是單向的。假設,一個CPU有10根地址總線,如圖所示,它發(fā)出地址信息11時10根地址線上傳送的高低電平信號的二進制信息就為11對應的二進制數(shù)00 0000 1011。
一 個 CPU有 N 根地址線,則可以說這個CPU的地址總線的寬度為N這樣的CPU最多可以尋找次方個內(nèi)存單元。8086CPU的20根地址線(A19A16,A15A0)可以全部用來給外部存儲器提供地址,所以8086可尋址的外部存儲器地址空間達字節(jié)即1MB。
2.3 數(shù)據(jù)總線
「數(shù)據(jù)總線(DB)」 用來傳輸數(shù)據(jù)。數(shù)據(jù)總線是雙向的,即數(shù)據(jù)既可以從CPU送到其他部件,也可以從其他部件送到CPU。
數(shù)據(jù)總線的寬度 決定了CPU和外界的數(shù)據(jù)傳送速度。8根數(shù)據(jù)總線一次可傳送一個8位二進制數(shù)據(jù)(即一個字節(jié)),16根數(shù)據(jù)總線一次可傳送兩個字節(jié)。
例如,8086有16根數(shù)據(jù)線,可一次傳送16位數(shù)據(jù),所以可一次傳送數(shù)據(jù)89D8H;而 8088只有 8 根數(shù)據(jù)線,一次只能傳8 位數(shù)據(jù),所以向內(nèi)存寫入數(shù)據(jù)89D8H時需要進行兩次數(shù)據(jù)傳送。
2.4 控制總線
「控制總線(CB)」 用來傳輸控制信號。其中包括CPU送往存儲器和輸入/輸出接口的控制信號,還包括其他部件送到CPU的信號。有多少根控制總線,就意味著CPU提供了對外部器件的多少種控制。所以,控制總線的寬度決定了CPU對外部器件的控制能力。
3 各類存儲器芯片
3.1 隨機存儲器和只讀存儲器。
一臺PC機中,裝有多個存儲器芯片,這些存儲器芯片從物理連接上看是獨立的、不同的器件。從讀寫屬性上看分為兩類:隨機存儲器(RAM)和只讀存儲器(ROM)。
「隨機存儲器」 可讀可寫,但必須帶電存儲,關(guān)機后存儲的內(nèi)容丟失; 「只讀存儲器」 只能讀取不能寫入, 關(guān)機后其中的內(nèi)容不丟失。下展示了 PC系統(tǒng)中各類存儲器的邏輯連接情況。
3.2 內(nèi)存地址空間
CPU在操控存儲器的時候,把它們都當作內(nèi)存來對待,把它們總的看作一個由若干存儲單元組成的一個邏輯存儲器,這個邏輯存儲器就是我們所說的內(nèi)存地址空間。每個物理存儲器在這個邏輯存儲器中占有一個地址段,即一段地址空間。CPU在這段地址空間中讀寫數(shù)據(jù),實際上就是在相對應的物理存儲器中讀寫數(shù)據(jù)。下圖展示了CPU將系統(tǒng)中各類存儲器看作一個邏輯存儲器的情況
內(nèi)存地址空間的大小受CPU地址總線寬度的限制。8086CPU的地址總線寬度為20, 可以傳送 個不同的地址信息,即可以定位個內(nèi)存單元,則8086PC的內(nèi)存地址空間大小為1MB。下圖展示了 8086PC機內(nèi)存地址空間分配的基本情況。
從地址0?9FFFF的內(nèi)存單元中讀取數(shù)據(jù),實際上就是在讀取主隨機存儲器中的數(shù)據(jù);向地址AOOOO-BFFFF的內(nèi)存單元中寫數(shù)據(jù),就是向顯存中寫入數(shù)據(jù), 這些數(shù)據(jù)會被顯示卡輸出到顯示器上;我們向地址C0000? FFFFF的內(nèi)存單元中寫入數(shù)據(jù)的操作是無效的,因為這等于改寫只讀存儲器中的內(nèi)容。
-
存儲器
+關(guān)注
關(guān)注
38文章
7644瀏覽量
166948 -
cpu
+關(guān)注
關(guān)注
68文章
11066瀏覽量
216617 -
計算機
+關(guān)注
關(guān)注
19文章
7649瀏覽量
90537 -
匯編語言
+關(guān)注
關(guān)注
14文章
412瀏覽量
36751 -
編譯器
+關(guān)注
關(guān)注
1文章
1659瀏覽量
50086
發(fā)布評論請先 登錄
ARM匯編語言入門
匯編語言程序設計下載

匯編語言編程藝術(shù)(PDF)

匯編語言自學教程
匯編語言程序結(jié)構(gòu)
Linux中的匯編語言
匯編語言學習課件_微處理器基礎(chǔ)知識
匯編語言學習課件_匯編語言程序組織
單片機基礎(chǔ)教程之匯編語言程序設計知識的詳細資料說明

評論