彙編學習1

彙編器:彙編語言 –>機器語言
連接器:把彙編器創建的多個單獨文件連接成可執行程序
彙編語言和機器語言一一對應

1.數位進制

  1. 二進制
    左高右低。

  2. 整數存儲
    字節Byte:8位
    字word:2字節,2Byte。16位
    雙字doubleword:4字節。32位
    八字節:8字節。64位

  3. 補碼
    一個數的補碼就是它的相反數(一個數與它的補碼相加和爲0),
    求補碼:取反加一

  4. 字符存儲
    ASCII, 用低7位,最高位創建私有字符
    ANSI字符集,256字符,後128特殊字符
    Unicode標準,:UTF-8, UTF-16, UTF-32
    ASCII字符串

2.處理器

1. IA-32:始於80386
2. 微機結構:
這裏寫圖片描述
clock:時鐘用於CPU的內部操作和其他系統部件的同步
Cu:控制單元協調執行機器指令時各個步驟的次序
ALU:算術邏輯單元執行算術運算和邏輯運算

mem stor unit:內存存儲單元存放指令和數據

總線:傳送數據,並行線
數據總線:CPU內存間傳送指令和數據
控制總線:用二進制信號同步連接到系統總線上的所有設備的動作
地址總線:如果當前指令要在CPU和內存間傳送數據,地址總線上保持着指令和數據的地址

時鐘:固定廢品率產生脈衝,一個完整時間脈衝(兩個下降沿間間隔)所需要的時間是 機器週期 (機器指令使用的最基本的時間單位

3. 指令週期
單條機器指令的執行可以被分解爲一系列的獨立操作,這些操作構成指令執行的一個週期
程序開始執行前必須首先裝入 內存指令指針 包含要執行的下一條指令的地址指令隊列 存放若干條將要執行的指令,

三個步驟:
1.取指,控制單元從 指令隊列 中取得指令並遞增指令指針(EIP)的值,指令指針也稱爲程序計數器
2.解碼,控制單元對指令解碼,把輸入操作數傳遞給ALU,並向算術邏輯單元發送信號指明要執行的操作
*取操作數(額外步驟),控制單元從內存中讀操作數,複製到內部寄存器中
3.執行,算術邏輯單元執行指令,送出運算輸出結果,更新反應處理器狀態的狀態標誌
*存儲輸出操作數(額外),存儲數據到內存中。
這裏寫圖片描述

4. 流水線
指令執行 每一步 佔用 一個 時鐘週期, 但處理器可以並行執行其他步驟。

Intel 486 6級流水線:

  1. 總線接口單元BIU:訪問存儲器提供輸入輸出
  2. 代碼預取單元:從BIU接收機器指令並將其插入稱爲指令隊列的存儲區域
  3. 指令解碼單元:對預取隊列中的機器指令進行解碼,將他們翻譯爲微代碼
  4. 執行單元:執行指令解碼單元產生的微代碼
  5. 分段部件:把邏輯地址轉換爲線性地址並進行保護檢查
  6. 分頁部件:把線性地址轉換爲物理地址,進行頁保護檢查

n*k模型:
這裏寫圖片描述

k+(n-1)模型:
這裏寫圖片描述

k + n 模型:超標量流水線
這裏寫圖片描述

5. 內存讀取
步驟由cpu內部時鐘控制

週期1:內存操作數的地址被放到地址總線ADDR上
週期2:讀取線(RD)設爲低(0),通知存儲器要讀取一個值
週期3:cpu等待一個週期,給存儲器時間響應。這個時鐘週期內,內存控制器把數據放在數據線
(DATA) 上。
週期4:讀取線(RD)變爲一,通知cpu在數據總線(DATA)上讀取數據
這裏寫圖片描述

3.IA-32體系結構

1. 操作模式

  1. 保護模式
    程序被賦予了獨立的內存區域(稱爲),處理器阻止程序訪問分配段之外的其他內存
  2. 虛擬8086模式
    (保護模式的特例)在保護模式下,執行多個虛擬8086任務,即在 安全的多任務環境下運行實地址模式的軟件 ,即使一個如 MS-DOS 程序崩潰試圖向系統內存寫入數據,也不會影響同時運行的其他程序
  3. 實地址模式
    實地址模式實現了 Intel 8086 處理器的程序設計環境,可用於運行那些需要直接訪問系統內存和硬件設備MS-DOS 程序。* 實地址模式下運行的程序可能導致操縱系統掛起 *
  4. 系統管理模式

2. 基本執行環境

1. 地址空間
保護模式下,IA-32最高可訪問4GB內存,32位無符號整數尋址上限。(32-bit address)
實地址程序只能訪問1MB內存(20-bit address)
保護模式下虛擬8086模式運行多個程序,每個程序都能訪問獨立 1MB內存區域(20-bit address)

2. 寄存器
這裏寫圖片描述

還有更多的寄存器之後會學習到

3. 歷史

  1. Intel 8086:16位寄存器16位數據總線 1MB內存
  2. Intel 8088 :8位數據總線,其餘同上
  3. Intel 80286: 24位地址,16MB內存

IA-32系列:

  1. Intel 386 : 32位寄存器,32位地址總線,32位外部數據通道, 每個程序4GB線性地址空間
  2. Intel 486:流水線技術,同時處理多條指令

奔騰:32位地址,64位內部數據通道

奔騰4,Xeon

4. CISC RISC
這裏寫圖片描述
CISC:
高級運算,微代碼解釋器,複雜指令
RISC:
精簡指令,少,硬件直接解碼執行

4.IA-32內存管理

  1. 實模式
    20位地址線,訪問1MB內存,
    如何用8086的16位寄存器存放20位的地址
    分段內存方案:
    所有內存被分爲多個64kb區域,這些區域稱爲
    所以,實際地址等於 16位段的基地址加上16位的偏移地址
    這裏寫圖片描述
    注意:每個段在被表示時省略了最後一個0C000實際上是從C0000開始的段

如:80250h = 8000:0250
08F1:0100 = 08F1h * 10h + 0100h = 09010h

  1. 保護模式
    每個程序可尋址4GB內存,0~FFFFFFFF

平坦分段模式

基址,界限,段描述符,全局描述符表GDT, 0040*1000=00040000
10000*1000=10000000

多段模式
局部描述符表LDT,基址,界限計算同上

分頁 (IA-32)
段分割爲多頁,
一頁:4096字節
分頁機制允許同時運行的程序使用的總內存 遠大於計算機的物理內存,
所有頁的集合合稱虛擬內存
分頁機制(使用後備磁盤存儲)
一個程序越依賴分頁機制,運行也可能越慢

補:
1.EFLAGS擴展標誌,
2.FPU浮點單元:高速浮點算數運算
3.視頻適配器:視頻控制器+視頻顯示存儲器(顯存)
4.存儲器:
這裏寫圖片描述

發佈了24 篇原創文章 · 獲贊 2 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章