文章目錄
- 基礎知識
- 概念
- CPU 對存盤器的讀寫
- 地址總線
- 資料總線
- 控制總線
- 主板
- 介面卡
- 各類存盤器芯片
- 記憶體地址空間
基礎知識
學習匯編主要是:學習匯編的編程思想,掌味訓器運行的思維;
匯編語言是直接在硬體上作業的編程語言,首先要了解硬體系統的結構,才能有效的應用匯編語言對其編程,
概念
-
匯編課程的研究重點:
如何利用硬體系統的編程結構和指令集有效靈活的控制系統進行作業; -
匯編語言的主體是匯編指令;
-
匯編指令和機器指令的差別在于指令的表示方法上:
匯編指令是機器指令便于記憶的書寫格式; -
匯編語言是機器指令的助記符;
-
匯編語言的組成:
- 匯編指令(機器碼的助記符):
MOV AX,BX; - 偽指令(由編譯器執行);
- 其他符號(由編譯器識別,如:+ - * /);
匯編語言的核心是匯編指令,他決定了匯編語言的特性;
- 匯編指令(機器碼的助記符):
CPU 對存盤器的讀寫
暫存器:簡單的講是 CPU 中可以存盤資料的器件,一個 CPU 中有多個暫存器,AX 是其中一個暫存器的代號,BX 是另一個暫存器的代號,
CPU 要想進行資料的讀寫,必須和外部器件(即芯片)進行三類資訊的互動:
- 地址資訊:存盤單元的地址;
- 控制資訊:芯片的選擇,讀或寫命令;
- 資料資訊:讀或寫的資料;
那么 CPU 是通過什么將地址、資料和控制資訊傳到存盤芯片中的呢?
- 電子計算機能處理、傳輸的資訊都是電信號,電信號當然要用導線傳送,
在計算機中專門有連接 CPU 和其他芯片的導線,通常稱為總線,邏輯上劃分為:
- 地址總線;
- 資料總線;
- 控制總線;

地址總線
CPU 是通過地址總線來指定存盤單元的,
地址總線上能傳送多少個不同的資訊,CPU就可以對多少個存盤單元進行尋址,

一個 CPU 有 N 根地址總線,則可以說這個 CPU 的地址總線的寬度為 N,這樣的 CPU 最多可以尋找 2n 個記憶體單元,
資料總線
CPU 與記憶體或其它器件之間的資料傳送是通過資料總線來進行的,資料總線的寬度決定了CPU和外界的資料傳送速度,
8位資料總線上傳送的資訊:

16位資料總線上傳送的資訊:

控制總線
CPU 對外部器件的控制是通過控制總線來進行的,在這里控制總線是個總稱,控制總線是一些不同控制線的集合,有多少根控制總線,就意味著 CPU 提供了對外部器件的多少種控制,所以,控制總線的寬度決定了 CPU 對外部器件的控制能力,
控制總線上發送的控制資訊:

前面所講的記憶體讀或寫命令是由幾根控制線綜合發出的:
- 其中有一根名為讀信號輸出控制線負責由 CPU 向外傳送讀信號,CPU 向該控制線上輸出低電平表示將要讀取資料;
- 有一根名為寫信號輸出控制線負責由 CPU 向外傳送寫信號,
小結
(1)匯編指令是機器指令的助記符,同機器指令一一對應,
(2)每一種 CPU 都有自己的匯編指令集,
(3)CPU 可以直接使用的資訊在存盤器中存放,
(4)在存盤器中指令和資料沒有任何區別,都是二進制資訊,
(5)存盤單元從零開始順序編號,
(6)一個存盤單元可以存盤 8 個 bit (用作單位寫成“b”),即 8 位二進制數,
(7)每一個CPU芯片都有許多管腳,這些管腳和總線相連,也可以說,這些管腳引出總線,一個CPU可以引出三種總線的寬度標志了這個CPU的不同方面的性能:
- 地址總線的寬度決定了 CPU 的尋址能力;
- 資料總線的寬度決定了 CPU 與其它器件進行資料傳送時的一次資料傳送量;
- 控制總線寬度決定了 CPU 對系統中其它器件的控制能力,
檢測
(1)1個CPU的尋址能力為8KB,那么它的地址總線的寬度為 13位 ,
(2)1KB的存盤器有 1024 個存盤單元,存盤單元的編號從 0 到 1023 ,
(3)1KB的存盤器可以存盤 8192(2^13) 個bit, 1024 個Byte,
(4)1GB是 1073741824 (2^30) 個Byte、1MB是 1048576(2^20) 個Byte、1KB是 1024(2^10) 個Byte,
(5)8080、8088、80296、80386的地址總線寬度分別為16根、20根、24根、32根,則它們的尋址能力分別為: 64 (KB)、 1 (MB)、 16 (MB)、 4 (GB),
(6)8080、8088、8086、80286、80386的資料總線寬度分別為8根、8根、16根、16根、32根,則它們一次可以傳送的資料為: 1 (B)、 1 (B)、 2 (B)、 2 (B)、 4 (B),
(7)從記憶體中讀取1024位元組的資料,8086至少要讀 512 次,80386至少要讀 256 次,
(8)在存盤器中,資料和程式以 二進制 形式存放,
主板
在每一臺 PC 機中,都有一個主板,主板上有核心器件和一些主要器件,
這些器件通過總線(地址總線、資料總線、控制總線)相連,
介面卡
計算機系統中,所有可用程式控制其作業的設備,必須受到 CPU 的控制,
CPU 對外部設備不能直接控制,如顯示幕、音箱、列印機等,直接控制這些設備進行作業的是插在擴展插槽上的介面卡,
各類存盤器芯片
從讀寫屬性上看分為兩類
- 隨機存盤器(RAM);
- 只讀存盤器(ROM);
從功能和連接上分類:
- 隨機存盤器 RAM
- 裝有 BIOS 的 ROM;
- 介面卡上的 RAM;
BIOS:Basic Input/Output System,基本輸入輸出系統,BIOS 是由主板和各類介面卡(如:顯卡、網卡等)廠商提供的軟體系統,可以通過它利用該硬體設備進行最基本的輸入輸出,在主板和某些介面卡上插有存盤相應 BIOS 的 ROM,

記憶體地址空間
什么是記憶體地址空間呢?
- 一個CPU的地址線寬度為10,那么可以尋址1024個記憶體單元,這1024個可尋到的記憶體單元就構成這個CPU的記憶體地址空間;
- 對CPU來講,系統中的所有存盤器中的存盤單元都處于一個統一的邏輯存盤器中,它的容量受CPU尋址能力的限制,這個邏輯存盤器即是我們所說的記憶體地址空間,
將各類存盤器看作一個邏輯存盤器:
-
所有的物理存盤器被看作一個由若干存盤單元組成的邏輯存盤器;
-
每個物理存盤器在這個邏輯存盤器中占有一個地址段,即一段地址空間;
-
CPU在這段地址空間中讀寫資料,實際上就是在相對應的物理存盤器中讀寫資料,

假設,上圖中的記憶體空間地址段分配如下:
- 地址0~7FFFH的32KB空間為主隨機存盤器的地址空間;
- 地址8000H~9FFFH的8KB空間為顯存地址空間;
- 地址A000H~FFFFH的24KB空間為各個 ROM 的地址空間,
不同的計算機系統的記憶體地址空間分配情況是不同的,
8086PC 機的記憶體地址空間分配:
擴展
如下圖所示:

按照正常情況,q 的值應該為21的,這是為什么呢,讓我們看一下編譯器是如何對源代碼進行匯編的;

可以清晰地看見,編譯器從 0040105D 到 0040106C 先是對 j 進行了兩次加1操作,并非是我們想的那樣子,(這是編譯器自帶的優化操作),所以最終就變成了 7+7+8 = 22;
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/299746.html
標籤:其他
