(一)32位cpu所含有的暫存器有:
1、資料暫存器。4個:eax、ebx、ecx、edx。
2、變址暫存器(index register)。2個:esi、edi。
3、指標暫存器(pointer register)。2個:esp(extended stack pointer)、ebp(extended base pointer)。
ebp:基址指標暫存器,儲存當前執行緒的棧底指標,該指標永遠指向系統棧最上面乙個棧幀的底部。
4、段暫存器。6個:es(附加段暫存器extra segment register)、cs(**段暫存器code segment register)、ss(堆疊段暫存器stack segment register)、ds(資料段暫存器data segment register)、fs(附加段暫存器extra segment register)、gs(附加段暫存器extra segment register) 。
5、指令指標暫存器。1個:eip(instruction pointer)。
6、標誌暫存器。1個:eflags)。
(二)32位、16位cpu寄存品區別:
32位cpu包含了16位cpu的所有暫存器,並把通用暫存器、指令指標和標誌暫存器從16位擴充成32位,此外還增加了2個16位的段暫存器:fs和gs。
在16位cpu中,ax、bx、cx和dx不能作為基址和變址暫存器來存放儲存單元的位址,但在32位cpu中,其32位暫存器eax、ebx、ecx和edx不僅可傳送資料、暫存資料儲存算術邏輯運算結果,而且也可作為指標暫存器, 所以,這些32位暫存器更具有通用性。
(三)各種暫存器作用。
1、資料暫存器。用來儲存運算元和運算結果等資訊。暫存器ax和al通常稱為累加器(accumulator),可用於乘、除、輸入/輸出等操作,它們的使用頻率很高; 暫存器bx稱為基位址暫存器(base register),可作為儲存器指標來使用; 暫存器cx稱為計數暫存器(count register),在迴圈和字串操作時,要用它來控制迴圈次數,在位操作中,當移多位時,要用cl來指明移位的位數;暫存器dx稱為資料暫存器(data register),在進行乘、除運算時,它可作為預設的運算元參與運算,也可用於存放i/o的埠位址。
2、變址暫存器。主要用於存放儲存單元在段內的偏移量,用它們可實現多種儲存器運算元的定址方式,為以不同的位址形式訪問儲存單元提供方便。 變址暫存器不可分割成8位暫存器。作為通用暫存器,也可儲存算術邏輯運算的運算元和運算結果。它們可作一般的儲存器指標使用。在字串操作指令的執行過程中,對它們有特定的要求,而且還具有特殊的功能。
3、指標暫存器。主要用於存放堆疊內儲存單元的偏移量,用它們可實現多種儲存器運算元的定址方式,為以不同的位址形式訪問儲存單元提供方便。 指標暫存器不可分割成8位暫存器。作為通用暫存器,也可儲存算術邏輯運算的運算元和運算結果。它們主要用於訪問堆疊內的儲存單元,並且規定:bp為基指標暫存器,用它可直接訪問堆疊中的資料;sp為堆疊指標暫存器,用它只可訪問棧頂。
高階語言使用ebp引用堆疊上的函式引數和區域性變數,一般不用於普通運算和資料傳輸。通常稱為擴充套件幀指標暫存器。
esp定址堆疊(一種系統記憶體結構)上的資料,極少用於普通的運算和資料傳輸,通常稱之為擴充套件堆疊指標暫存器。
4、段暫存器。段暫存器是根據記憶體分段的管理模式而設定的。記憶體單元的實體地址由段暫存器的值和乙個偏移量組合而成的,這樣可用兩個較少位數的值組合成乙個可訪問較大物理空間的記憶體位址。
32位cpu有兩個不同的工作方式:實方式和保護方式。在每種方式下,段暫存器的作用是不同的。有關規定簡單描述如下:
實方式: 前4個段暫存器cs、ds、es和ss與先前cpu中的所對應的段暫存器的含義完全一致,記憶體單元的邏輯位址仍為「段值:偏移量」的形式。為訪問某記憶體段內的資料,必須使用該段暫存器和儲存單元的偏移量。
保護方式: 在此方式下,情況要複雜得多,裝入段暫存器的不再是段值,而是稱為「選擇子」(selector)的某個值。
5、指令指標暫存器。存放下次將要執行的指令在**段的偏移量。在具有預取指令功能的系統中,下次要執行的指令通常已被預取到指令佇列中,除非發生轉移情況。所以,在理解它們的功能時,不考慮存在指令佇列的情況。 在實方式下,由於每個段的最大範圍為64k,所以,eip中的高16位肯定都為0,此時,相當於只用其低16位的ip來反映程式中指令的執行次序。
6、標誌暫存器。
彙編暫存器 8086
一 組合語言中,為什麼si和di不能同時使用彙編 其實你可以想一下,這兩個暫存器的意思,si源變址暫存器,di目地變址暫存器,既然是變址暫存器,那麼他們肯定是在某個位址的基礎上進行偏移變化,由此我們就得出了需要基址暫存器。你要是把這兩個暫存器同時使用,那你位址變化的基址都沒有,你該怎麼變化呢?你在誰...
彙編3 暫存器
3.1記憶體中字的儲存 任何兩個位址連續的記憶體單元,n號和n 1號單元,可以將它們看成兩個記憶體單元,也可以看成乙個位址為n的字單元中的高位位元組單元和低位位元組單元。3.2段位址暫存器 ds是段位址暫存器,裡面儲存的是16位的資料,代表當前段位址。不能直接通過mov指令將資料存入ds中,mov ...
彙編 標誌暫存器
我們已經接觸過像ax bx cx si di ss cs等暫存器了,但是在8086cpu中有乙個比較特殊的暫存器 標誌暫存器 flag 2.基本介紹 與其他暫存器不同的是,標誌暫存器中儲存的不是資料,而是標誌狀態字 psw 而且其他暫存器都是作為乙個整體在使用,我們常說某某暫存器中放著某個資料,但是...