暫存器概念整理

2021-07-04 22:17:11 字數 1976 閱讀 9620

一直以來對暫存器的名稱、作用比較模糊,今天抽時間整理了下。

(一)  通用暫存器

作用:傳送和暫存資料,參與算數和邏輯運算。

(1)通用暫存器

16位的有8個:ax(accumulator),bx(base),cx(count),dx(data),bp(basepointer),sp(stack pointer),si(source index),di(destination index)

對應的32位為:eax,ebx,ecx,edx,ebp,esp,esi,edi

eax,ebx,ecx,edx為通用暫存器,其低16位為ax,bx,cx,dx,再進一步,每乙個還能分成兩個8位,如ax:ah-al,bx:bh-bl等。他們除能作為普通資料暫存器使用外,他們還有特殊作用:

ax為累加器,進行乘除運算,字的輸入輸出,中間結果的快取

bx基位址暫存器,除了作為通用暫存器,其主要功能是定址,存放偏移位址,與段暫存器結合使用。

cx為計數器,控制迴圈次數以及cl存放移位的位數

dx為資料暫存器,在乘除運算時,可以作為預設運算元參與運算。

si、di為變址暫存器,儲存單元在段內的偏移量,實現不同的定址方式。si儲存器指標、串指令中的源運算元指標。di儲存器指標、串指令中的目的運算元指標。

bp、sp為指標暫存器,bp

是基指標暫存器,當使用

[bp]

時,且沒有顯式給出段位址時,則預設使用

ss段暫存器中的段位址。(bx、

si、di預設使用

ds段暫存器)sp是棧指標暫存器,存放了指向棧頂的指標。

(二)控制暫存器

(2)指令指標暫存器

ip(instruction pointer),32位為eip,存放下次要執行的指令在**段中的偏移量

(3)標誌位暫存器

flag,32位為eflag, flag暫存器中的資料是按位起作用的,flag暫存器中儲存的資訊通常又被稱為程式狀態字(psw)

位數標誌

ofdf

iftf

sfzf

afpf

cf全稱

overflow flag

direction flag

interrupt

-enable flag

trap flag

sign flag

zero flag

auxiliary carry flag

parity flag

carry flag

意義溢位標誌

方向標誌

中斷允許標誌

追蹤標誌

符號標誌(結果是否為負數)

零標誌位(結果是否為0)

輔助進製標誌

奇偶標誌(結果中1的個數)

進製標誌

(參考內容:

(三)段暫存器

根據記憶體分段的管理模式而設立段暫存器。16位cpu的段暫存器分別是:

cs:(code segment)               **段暫存器

ss:(stack segment)堆疊段暫存器

ds:(datasegment)資料段暫存器

fs:附加段暫存器(標誌段暫存器)

gs:附加段暫存器(全域性段暫存器)

關於fs暫存器,當系統執行在ring3時,fs 值為指向的段是 gdt 中的 0x38 段,基位址為 當前執行緒 的執行緒環境塊( teb ),所以該段也被稱為「teb 段」。當系統執行在ring0時,fs 指向的段是 gdt 中的 0x30 段,該位址指向系統的處理器控制區域( kpcr )。這個區域中儲存這處理器相關的一些重要資料值,如 gdt 、 idt 表的值等等。

(參考博文

對於訪問某個段的程式,必須將段選擇符載入到乙個段暫存器中,通過段選擇符去定位段描述符表中的乙個段描述符來指定乙個段,段描述符中包含訪問乙個段的所有資訊,包括段基址、段長度、段屬性等。

(段選擇符、段描述符參考:

8086cpu中,只有bx,si,di,bp可以以[..]的方式使用

ARM暫存器整理

arm有37個暫存器,31個通用暫存器 r0 r15 32位 和6個狀態暫存器 1.通用暫存器 使用者模式 系統模式 特權模式 中止模式 未定義指令模式 外部中斷模式 快速中斷模式。可分為 未備份暫存器r0 r7 備份暫存器 r8 r14 程式計數器 pc r15 注 r0 r7在所有模式下指的同一...

VIM基礎概念(暫存器)

於 現在已經可以熟練使用vim的大多數基本命令 功能來進行專案 的開發了,但是在專案的開發過程中,依然會感覺到一些操作效率比較低,比如通過h j k l來進行游標的大範圍移動這類操作,顯然vim提供了更高效的命令操作方式。最近經常需要完成的工作就是需要在 之間來回的複製 貼上 搜尋和替換,常用的d ...

暫存器的「位址」概念

暫存器的位址就是 記憶體位址 分為 機器語言 指令仍用這種位址指定乙個運算元的位址或一條指令的位址。這種 定址方式 在intel的分段結構中表現得尤為具體,它使得ms dos或windows程式設計師把程式分為若干段。每個邏輯位址都由乙個段和偏移量組成。線性位址是乙個32位的 無符號整數 可以表達高...