8086 8088 CPU暫存器組

2022-03-14 13:56:38 字數 2644 閱讀 4842

今天來回顧一下8086/8088 cpu暫存器組的知識。其實8086彙編還是很久以前學過的,win32彙編也接觸過一些,但是由於長時間不碰,生疏了不少。今後可以花點時間總結總結,梳理一下以前學習過的知識,儘管暫時還用不上,但這樣就便於以後需要用到的時候很容易撿起來。我知道裡大多數人都是搞web或者手機開發的,相信用彙編的人也不多,不過工作之餘學一學彙編,了解一些計算機底層的知識,對自己的「身心」是有幫助的。希望自己能堅持把8086彙編完整地寫完,如果有精力還可以寫一寫win32彙編。

這一節先從8086/8088 cpu暫存器組開始說起。

說到8086/8088 cpu暫存器組,它們的特點就是都是16位的,不論是通用暫存器、段暫存器還是標誌暫存器。

8086/8088包括四個16位資料暫存器,兩個16位指標暫存器,兩個16位變址暫存器,乙個16位指令指標暫存器,四個16位段暫存器,乙個16位標誌暫存器。總共有14個暫存器,這14個暫存器分成四組。我從《80x86組合語言程式設計教程》電子版上截了一張圖,它描繪了這14個暫存器的名稱和分組情況。

通用暫存器

何謂通用暫存器,簡單來說就是經常用到的暫存器。按照上圖我們不難發現,資料暫存器、指標暫存器和變址暫存器統稱為通用暫存器。這些暫存器除了各自規定的專門用途外,它們均可用於傳送和暫存資料,可以儲存算術邏輯運算中的運算元和運算結果。

資料暫存器

資料暫存器主要用來儲存運算元或運算結果等資訊,它們的存在節省了為訪問運算元所需占用匯流排和訪問儲存器的時間。

四個16位的資料暫存器均可分解成八個獨立的8位暫存器,這八個8位的暫存器有各自的名稱,均可獨立訪問。比如:ax暫存器可以分解為ah暫存器和al暫存器,其中ah暫存器就是ax暫存器的高8位,al暫存器就是ax暫存器的低8位。其他暫存器類推。

這四個資料暫存器除了它們通用的功能以外,還有其他專門的用途。

變址和指標暫存器

變址和指標暫存器主要用於存放某個儲存單元位址的偏移,或某組儲存單元開始位址的偏移,即作為儲存器指標使用。

作為通用暫存器,它們也可以儲存16位算術邏輯運算中的運算元和運算結果,有時運算結果就是需要的儲存單元位址的偏移。注意,16位的變址暫存器和指標暫存器不能分解成8位暫存器使用。

si和di暫存器稱為變址暫存器。在字串操作中,規定由si(source index)給出源指標,由di(destination index)給出目的指標。當然,si和di也可作為一般儲存器指標使用。

bp和sp暫存器稱為指標暫存器。bp(base pointer)主要用於給出堆疊中資料區基址的偏移,sp(stack pointer)通常只作為堆疊指標使用,即儲存堆疊棧頂位址的偏移。

段暫存器

8086/8088 cpu依賴其內部的四個段暫存器實現定址1m位元組實體地址空間(20條位址線)。8086/8088把1m位元組位址空間分成若干邏輯段,當前使用段的段值存放在段暫存器中。

8086/8088 cpu的4個段暫存器分別稱為**段(code segment)暫存器cs、資料段(data segment)暫存器ds、堆疊段(stack segment)暫存器ss、附加段(extra segment)暫存器es。那麼就有四個當前使用段可直接訪問,這四個當前段分別稱為**段、資料段、堆疊段和附加段。

控制暫存器

指令指標暫存器

8086/8088 cpu中的指令指標ip(instruction pointer)給出接著要執行的指令在**段中的偏移,通過cs:ip即可訪問cpu要執行的下一條指令。

標誌暫存器

雖然標誌暫存器是16位,但實際包含了9個標誌,主要用於反映處理器的狀態和運算結果的某些特徵。各標誌在標誌暫存器中的位置如下所示。

標識暫存器又稱程式狀態暫存器(program status word)。它是乙個存放條件碼標誌位控制標誌系統標誌的暫存器。

1)條件碼標誌用來記錄程式中執行結果的狀態資訊,它們是根據有關指令的執行結果由cpu自動設定的。由於這些狀態資訊往往作為後續條件轉移指令的轉移控制條件,所以為條件碼。它包括以下6位:

2)控制標誌位為方向標誌(direction flag, df),在串指令中控制處理資訊的方向用。當df位為1時,每次操作後使變址暫存器si和di減小,這樣就使串處理從高位址向低位址方向處理。當df位為0時,則使si和di增大,使串處理從低位址向高位址方向處理。

3)系統標誌位可以用於i/o、可遮蔽中斷、程式除錯、任務切換和系統工作方式等的控制。一般應用程式不必關心或修改這些位的狀態,只有系統程式設計師或需要編制底層i/o裝置控制等程式時才需要訪問其中的有關位。

8086暫存器組

學習源於 ibm pc 組合語言程式設計 傳說中的cpu有很多組成部分 其中一部分叫作暫存器 cpu裡面有很暫存器 暫存器作用是什麼?顧名思義,就是寄與存資料啦 它的訪問速度比在儲存器快很多 組合語言需要用到暫存器,有一部分暫存器用到,有一部分用不到 因此分為程式可見暫存器,程式不可見暫存器 程式可...

彙編 暫存器組

暫存器組 一 暫存器組 資料暫存器 指標暫存器和變址暫存器稱為通用暫存器,除了各自規定的專門用途之外,還可以用於傳送和暫存資料,可以儲存算術邏輯運算中的運算元和運算結果。通用暫存器專門用途 8086 8088cpu的四個段暫存器均是16位的,分別稱為 段,資料段,堆疊段和附加段暫存器組。依賴這四個段...

CPU暫存器操作方式

cpu暫存器的讀取方式,其實就是讀取某個位址中儲存的資料,只不過這個位址是晶元廠商規定好用於特定功能的。一般ide都會提供暫存器的標頭檔案,可以參考晶元的程式設計手冊,手冊中都有每個模組的暫存器定義,以及位址說明,如果你不想使用標頭檔案定義可以自己手動編寫,例如你想訪問乙個32位的暫存器位址為0xe...