暫存器知識

2021-07-06 02:38:51 字數 1978 閱讀 5382

一般暫存器:ax、bx、cx、dx

ax:累積暫存器,bx:基底暫存器,cx:計數暫存器,dx:資料暫存器

索引暫存器:si、di

si:**索引暫存器,di:目的索引暫存器

堆疊、基底暫存器:sp、bp

sp:堆疊指標暫存器,bp:基底指標暫存器

eax、ecx、edx、ebx:為ax,bx,cx,dx的延伸,各為32位元

esi、edi、esp、ebp:為si,di,sp,bp的延伸,32位元

eax, ebx, ecx, edx, esi, edi, ebp, esp等都是x86 組合語言中cpu上的通用暫存器的名稱,是32位的暫存器。如果用c語言來解釋,可以把這些暫存器當作變數看待。

比方說:add eax,-2 ; //可以認為是給變數eax加上-2這樣的乙個值。

這些32位暫存器有多種用途,但每乙個都有「專長」,有各自的特別之處。

eax 是"累加器"(accumulator), 它是很多加法乘法指令的預設暫存器。

ebx 是"基位址"(base)暫存器, 在記憶體定址時存放基位址。

ecx 是計數器(counter), 是重複(rep)字首指令和loop指令的內定計數器。

edx 則總是被用來放整數除法產生的餘數。

esi/edi分別叫做"源/目標索引暫存器"(source/destination index),因為在很多字串操作指令中, ds:esi指向源串,而es:edi指向目標串.

ebp是"基址指標"(base pointer), 它最經常被用作高階語言函式呼叫的"框架指標"(frame pointer). 在破解的時候,經常可以看見乙個標準的函式起始**:

push ebp ;儲存當前ebp

mov ebp,esp ;ebp設為當前堆疊指標

sub esp, *** ;預留***位元組給函式臨時變數.

...這樣一來,ebp 構成了該函式的乙個框架, 在ebp上方分別是原來的ebp, 返回位址和引數. ebp下方則是臨時變數. 函式返回時作 mov esp,ebp/pop ebp/ret 即可.

esp 專門用作堆疊指標,被形象地稱為棧頂指標,堆疊的頂部是位址小的區域,壓入堆疊的資料越多,esp也就越來越小。在32位平台上,esp每次減少4位元組。

386部分暫存器:

狀態和控制暫存器組除了eflags、eip ,還有四個32位的控制暫存器,它們是cr0,cr1,cr2和cr3。

這幾個暫存器中儲存全域性性和任務無關的機器狀態。

cr0中包含了6個預定義標誌,0位是保護允許位pe(protedted enable),用於啟動保護模式,如果pe位置1,則保護模式啟動,如果pe=0,則在實模式下執行。1位是監控協處理位mp(moniter coprocessor),它與第3位一起決定:當ts=1時操作碼wait是否產生乙個「協處理器不能使用」的出錯訊號。第3位是任務轉換位(task switch),當乙個任務轉換完成之後,自動將它置1。隨著ts=1,就不能使用協處理器。cr0的第2位是模擬協處理器位 em (emulate coprocessor),如果em=1,則不能使用協處理器,如果em=0,則允許使用協處理器。第4位是微處理器的擴充套件型別位et(processor extension type),其內儲存著處理器擴充套件型別的資訊,如果et=0,則標識系統使用的是287協處理器,如果 et=1,則表示系統使用的是387浮點協處理器。cr0的第31位是分頁允許位(paging enable),它表示晶元上的分頁部件是否允許工作。

cr1是未定義的控制暫存器,供將來的處理器使用。

cr2是頁故障線性位址暫存器,儲存最後一次出現頁故障的全32位線性位址。

cr3是頁目錄基址暫存器,儲存頁目錄表的實體地址,頁目錄表總是放在以4k位元組為單位的儲存器邊界上,因此,它的位址的低12位總為0,不起作用,即使寫上內容,也不會被理會。

這幾個暫存器是與分頁機制密切相關的,因此,在程序管理及虛擬記憶體管理中會涉及到這幾個暫存器,讀者要記住cr0、cr2及cr3這三個暫存器的內容。

esp:暫存器存放當前執行緒的棧頂指標

ebp:暫存器存放當前執行緒的棧底指標

彙編暫存器知識

一 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...

暫存器(通用暫存器)

因為學習使用的是王爽的 組合語言 第3版 因此也只能提到8086cpo的暫存器。對於其他而言,原理都是相通的。對於8086暫存器,有14個暫存器,主要是 ax bx cx dx si di sp bp ip cs ss ds es psw。一 通用暫存器 8086的通用暫存器有ax bx cx dx...

暫存器,標誌暫存器

涉及硬體傳輸資料的,往往包含以下內容 1.資料傳輸引腳 資料放 2.控制引腳 怎麼控制 3.狀態引腳 結果如何 暫存器相當於cpu內部的儲存單元,可能是連續排列,相當於 c語言中的陣列。一 8個通用暫存器 16 bit accumulate axah alr0 count cxch clr1 dat...