第一章 初識彙編———基礎知識的掌握
這學期我們修讀了組合語言這門課,學習之前我很疑惑為什麼學校要讓我們先接觸c和c++這類高階語言再讓我們學習彙編這門低階語言課,於是帶著許多的疑問,我走上了彙編的道路。彙編課程使用的教材是王爽的組合語言,這本書採用以8086cpu為**處理器的pc機來進行學習,下面我們步入正題!
翻開書的第一章是對基礎知識的介紹,在章節的開頭,我了解到,組合語言是直接在硬體上工作的低階組合語言,要想有效地應用組合語言對硬體系統程式設計,就必須要了解硬體系統的結構。所以在第一章我們會學習硬體系統結構,為日後的課程打好基礎。
計算機程式語言的演進
1.1機器語言
機器語言是機器指令的集合。機器指令是0和1構成的二進位制資訊。機器語言直接面向機器,與機器的硬體操作一一對應。其優點是計算機可以直接識別、執行,使用機器語言可以充分發揮計算機的硬體功能;而它的缺點是因為每一種微處理器有自己的硬體設計和內部結構,需要不同的電平脈衝來控制,所以每一種微處理器都有自己的機器指令集,所以依賴機器硬體。難以記憶,直接使用機器語言編制程式極易出錯,並且難以除錯。
電平脈衝
在上面的例項中,組合語言和c語言十分簡短易懂的**卻要用那麼冗雜的機器碼去表示,可見機器碼的晦澀難懂和不易查錯和除錯。
1.2組合語言
由於機器指令的難以辨別和記憶,機器指令的助記符———組合語言誕生了。組合語言的主體是由彙編指令組成的,
彙編指令和機器指令的差別在於指令的表示方法上。
不同的cpu有不同的彙編指令。
組合語言由以下3類組成:
1、彙編指令(機器碼的助記符)
2、偽指令 (由編譯器執行)
3、其它符號(由編譯器識別)。組合語言的核心是彙編指令,它決定了組合語言的特性。
3. 計算機硬體系統的基本結構
馮諾依曼體系結構
計算機系統的組成
1.3儲存器和儲存單元
cpu 是計算機的核心部件.它控制整個計算機的運作並進行運算,要想讓乙個cpu 工作,就必須向它提供指令和資料。而指令和資料在儲存器中存放,也就是平時所說的記憶體。在一台pc機中記憶體的作用僅次於cpu,離開了記憶體,效能再好的cpu也無法工作。磁碟不同於記憶體,磁碟上的資料或程式如果不讀到記憶體中,就無法被cpu 使用。儲存器被劃分為若干個儲存單元,每個儲存單元從0開始順序編號。如下圖所示:
在記憶體或磁碟上,指令和資料都以二進位制形式存在, 在形式上沒有任何區別。如下圖所示:
cpu要想進行資料的讀寫,必須和外部器件(標準的說法是晶元)進行三類資訊的互動:1.
儲存單元的位址(位址資訊)2.
器件的選擇,讀或寫命令(控制資訊)3.
讀或寫的資料(資料資訊)
匯流排是計算機各種功能部件之間傳送資訊的公共通訊幹線,它是由導線組成的傳輸線束, 按照計算機所傳輸的資訊種類,計算機的匯流排可以劃分為資料匯流排、位址匯流排和控制匯流排,分別用來傳輸資料、資料位址和控制訊號。匯流排是一種內部結構,它是cpu、記憶體、輸入、輸出裝置傳遞資訊的公用通道,主機的各個部件通過匯流排相連線,外部裝置通過相應的介面電路再與匯流排相連線,從而形成了計算機硬體系統。在計算機系統中,各個部件之間傳送資訊的公共通路叫匯流排,微型計算機是以匯流排結構來連線各個功能部件的。
資料匯流排:在cpu與ram之間來回傳送需要處理或儲存的資料,寬度決定了cpu與其它器件進行資料傳送時的資料傳送量。
控制匯流排:將微處理器控制單元的訊號,傳送到周邊裝置,其寬度決定了cpu對系統中其它器件的控制能力。
記憶體位址空間:也稱為定址空間,與cpu位址匯流排的寬度直接相關,表示cpu所能尋找到的最大位址空間範圍。設乙個cpu的位址匯流排寬度為n,那麼可以定址2的n次方個記憶體單元,這2的n次方個可尋到的記憶體單元就構成這個cpu的記憶體位址空間。
cpu在操控這些獨立的物理儲存器時,把它們統一當作乙個邏輯儲存器看待。這個邏輯儲存器即記憶體位址空間。每個物理儲存器在這個邏輯儲存器中占有一段位址空間;cpu在這段位址空間中讀寫資料,實際上就是在相對應的物理儲存器中讀寫資料。不同的計算機系統的記憶體位址空間分配情況是不同的。
檢測點1.1
(1)1個cpu的定址能力為8kb,那麼它的位址匯流排的寬度為 13位。
解題過程:1kb=1024b,8kb=1024b*8=2^n,n=13。
(2)1kb的儲存器有 1024 個儲存單元,儲存單元的編號從 0 到 1023 。
解題過程:儲存器的容量是以位元組為最小單位來計算的,1kb=1024b。
(3)1kb的儲存器可以儲存 8192(2^13) 個bit, 1024個byte。
解題過程:8bit=1byte,1024byte=1kb(1kb=1024b=1024b*8bit)。
(4)1gb是 1073741824 (2^30) 個byte、1mb是 1048576(2^20) 個byte、1kb是 1024(2^10)個byte。
解題過程:1gb=1073741824b(即2^30)1mb=1048576b(即2^20)1kb=1024b(即2^10)。
(5)8080、8088、80296、80386的位址匯流排寬度分別為16根、20根、24根、32根,則它們的定址能力分別為: 64 kb、 1mb、 16 mb、 4 gb。
解題過程:乙個cpu有n根位址線,則可以說這個cpu的位址匯流排的寬度為n。這樣的cpu最多可以尋找2的n次方個記憶體單元。(乙個記憶體單元=1byte)。
(6)8080、8088、8086、80286、80386的資料匯流排寬度分別為8根、8根、16根、16根、32根。則它們一次可以傳送的資料為: 1b、 1 b、 2 b、 2 b、 4 b。
解題過程:8根資料匯流排一次可以傳送8位二進位制資料(即乙個位元組)。
(7)從記憶體中讀取1024位元組的資料,8086至少要讀 512 次,80386至少要讀 256 次。
解題過程:8086的資料匯流排寬度為16根(即一次傳送的資料為2b)1024b/2b=512,同理1024b/4b=256。
(8)在儲存器中,資料和程式以 二進位制 形式存放。
解題過程:在儲存器中指令和資料沒有任何區別,都是二進位制資訊。
組合語言第一章總結
組合語言是直接在硬體之上工作的程式語言 1.1 機器語言 機器語言是機器指令的集合。電子計算器的機器指令是一列二進位制數字,計算機將之改變為一列高低電平,以使計算器的電子器件受到驅動,進行計算。cpu central processing unit,處理單元 執行機器指令,cpu是一種微處理器。每一...
《組合語言》筆記第一章
看了王爽的 組合語言 感覺寫的很好,真的是通俗易懂,為了大家也可以快速瀏覽一下組合語言,我特意將筆記一章一章寫出來。獨樂了不如眾樂樂,不會組合語言的程式設計師不是好程式設計師!一 基礎知識 1.1.組合語言由三類指令組成 1 彙編指令 機器語言的助記符,有對應的機器語言 2 偽指令 沒有對應的機器碼...
組合語言第一章 初始
組合語言是一種占用空間少,執行速度快,直接控制硬體能力強,開發周期長且可移植性差的語言。建立二進位制數描述一切的觀念,二進位制數可以表示,數值,文字,影象,聲音,程式。其含義只能由使用這些資訊的人進行解釋。首先的知識點是對進製計數的概念,和不同進製之間的相互轉換。由十進位製到r進製的轉換 整數部分 ...