80386的暫存器 摘

2021-04-15 11:24:31 字數 1680 閱讀 7007

80386的暫存器可以分為8組:通用暫存器,段暫存器,指令指標暫存器,標誌暫存器,系統位址暫存器,控制暫存器,除錯暫存器,測試暫存器,它們的寬度都是32位的。本篇主要介紹80386的暫存器。

a1.general register(通用暫存器)

eax,ebx,ecx,edx,esi,edi,esp,ebp,它們的低16位就是8086的ax,bx,cx,dx,si,di,sp,bp,它們的含義如下:

eax:累加器

ebx:基址暫存器

ecx:計數器

edx:資料暫存器

ebp:基址指標暫存器

esp:堆疊指標暫存器

這些暫存器可以將低16位單獨訪問,也就是8086的ax,bx,cx,dx,si,di,sp,bp,在訪問這些暫存器的低16位(ax,bx,cx,dx,si,di,sp,bp),它

們的高16位不受影響,同時和8086一樣對於ax,bx,cx,dx這四個暫存器來講,可以單獨訪問它們的高8位和低8位(ah,al,bh,bl,ch,cl,dh,dl)

a2:segment register(段暫存器)

除了8086的4個段外(cs,ds,es,ss),80386還增加了兩個段fs,gs,這些段暫存器都是16位的,它們的含義如下:

cs:**段(code segment)

ds:資料段(data segment)

es:附加資料段(extra segment)

ss:堆疊段(stack segment)

fs:附加段

gs 附加段

a3:instruction pointer(指令指標暫存器)

a4:flag register(標誌暫存器)

eflags,和8086的16位標誌暫存器相比,增加了4個控制位,不過這4個控制位它們在實模下不起作,這四個控制位分別是:

a.iopl(i/o privilege level),i/o特權級字段,它的寬度為2bit,它指定了i/o指令的特權級。如果當前的特權級別在數值上小於或等於iopl,那麼i/o指令可執行。否則,將發生乙個保護性異常。

b.nt(nested task):控制中斷返回指令iret,它寬度為1位。nt=0,用堆疊中儲存的值恢復eflags,cs和eip從而實現中斷返回;nt=1,則通過任務切換實現中斷返回。

c.rf(restart flag):重啟標誌,它的寬度是1位。它主要控制是否接受除錯故障。rf=0接受,rf=1忽略。如果你的程式每一條指令都被成功執行,那麼rf會被清0。而當接受到乙個非除錯故障時,處理器置rf=1。

d.vm(virtual machine):虛擬8086模式(用軟體來模擬8086的模式,所以也稱虛擬機器)。vm=0,處理器工作在一般的保護模式下;vm=1,工作在v8086模式下。

其它16個標誌位的含義和8086一樣,在這裡也重溫一遍:

e.cf(carry flag):進製標誌位,由clc,stc兩標誌位來控制

f.pf(parity flag):奇偶標誌位

g.af(assistant flag):輔助進製標誌位

h.zf(zero flag):零標誌位

i.sf(singal flag):符號標誌位

j.if(interrupt flag):中斷允許標誌位,由cli,sti兩條指令來控制

k.df(direction flag):向量標誌位,由cld,std兩條指令來控制

l.of(overflow flag):溢位標誌位。

80386控制暫存器

控制暫存器 80386有4個32位控制暫存器,分別命名為cr0 cr1 cr2 cr3。但cr1被保留,供今後開發的處理器使用,在80386中不能使用cr1,否則將引起無效指令操作異常。cr0包含指示處理器工作方式的控制位,包含啟用和禁用分頁管理機制的控制位,包含控制浮點協處理器操作的控制位。cr2...

80386的暫存器組成

寫這篇文章,完全是因為學習保護模式需要這些知識,讀者完全可以走馬觀花,大致看看有什麼內容,知道需要的時候來查這篇文章就可以了,完全沒有必要抵抗著睏意非要把這篇文章認真看完,記住裡面每乙個暫存器裡每一位的定義,但是以後的文章如果需要,一定要記得回來查查相關的內容。80386共提供7種型別的32位暫存器...

80386的暫存器組成

原作 寫這篇文章,完全是因為學習保護模式需要這些知識,讀者完全可以走馬觀花,大致看看有什麼內容,知道需要的時候來查這篇文章就可以了,完全沒有必要抵抗著睏意非要把這篇文章認真看完,記住裡面每乙個暫存器裡每一位的定義,但是以後的文章如果需要,一定要記得回來查查相關的內容。80386共提供7種型別的32位...