暫存器詳解

2021-07-26 16:55:08 字數 912 閱讀 2994

暫存器

注:名字以字母『e』開頭的暫存器表示32位,如eax 32位,ax 16位,al是低8位,ah是8-15位

32位cpu的8個通用暫存器:eax, ebx, ecx, edx, ebp, esp, esi, edi

資料暫存器eax, ebx, ecx, edx

eax:累加暫存器,是很多加法乘法指令的預設暫存器

ebx:基址暫存器,在記憶體定址時存放基位址

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

edx:資料暫存器,總是被用來放整數除法產生的餘數

段暫存器

ds: 段暫存器,指向當前執行著的程式的資料段。

es: 額外的段暫存器

ss: 棧段暫存器,指向棧段

索引暫存器esi, edi

esi:源索引暫存器

edi:目的索引暫存器

在很多字串操作指令中,ds:esi指向源串,而es:edi指向目標串

指標暫存器

ip:指令指標暫存器,儲存的是cpu下次要執行的指令的位址,cs:ip用來指示當前執行的指令位址,不能直接訪問cs,也不能直接訪問ip

bp:基址指標暫存器,也叫棧基址暫存器,儲存的是棧的棧底指標,經常被用作高階語言函式呼叫的「框架指標」(frame pointer)。

乙個標準的函式起始**如下:

push ebp;儲存當前ebp

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

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

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

sp:esp暫存器儲存的棧的棧頂指標,始終指向棧頂。

暫存器(通用暫存器)

因為學習使用的是王爽的 組合語言 第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...

CS 暫存器 和 IP 暫存器

下面將要介紹的是一組非常非常重要的暫存器,即 cs ip cs ip 兩個暫存器指示了 cpu 當前將要讀取的指令的位址,其中cs 為 段暫存器,而ip 為指令指標暫存器。什麼叫做指示了 cpu 當前將要讀取的指令呢?在 8086 cpu 中,為什麼 cpu 會自動的執行指令呢?這些指令肯定是存放在...