彙編學習筆記之暫存器綜述

2021-07-10 05:27:13 字數 1752 閱讀 2957

暫存器是cpu的組成部分。因為在cpu內部,所以cpu對其讀寫速度是最快的,不需要io傳輸,但同時也決定了此類暫存器數量有限,有限到幾乎每個暫存器都有自己的名字,而且有些還有多個名字。

ia-32構架提供了16個基本暫存器,這16個基本暫存器可以歸納為如下幾類:

通用暫存器;

段暫存器;

狀態和控制暫存器;

指令暫存器;

1.1 通用暫存器

eax------累加和結果暫存器

ebx------資料指標暫存器

ecx------迴圈計數器

edx------i/o指標

esi------源位址暫存器

edi------目的位址暫存器

esp------堆疊指標

ebp------棧指標暫存器

32位通用暫存器有八個:eax/ebx/ecx/edx/esi/edi/esp/ebp.

這八個暫存器低16位分別有別名:ax/bx/cx/dx/si/di/sp/bp.

其中ax/bx/cx/dx的高八位有別名ah/bh/ch/dh,低八位有別名al/bl/cl/dl.

64-bit模式下暫存器擴充套件為rax/rbx/rcx/rdx/rsi/rdi/rsp/rbp/r8/r9/r10/r11/r12/r13/r14/r15.

其中r8/r9/r10/r11/r12/r13/r14/r15是64bit模式新加入的暫存器.

1.2 段暫存器

段暫存器cs/ds/es/fs/gs/ss,儲存16位的段選擇子,乙個段選擇子制定乙個段在記憶體的指標,以便在記憶體訪問段,訪問方式與記憶體模式有關.

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

ds(data segment),es,fs,gs:資料段暫存器

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

es(extra segment):附加段暫存器。

1.3 狀態和控制暫存器eflags

這個暫存器表示意義非常豐富,程式不恩那個直接操作該暫存器,由操作指令操作。

除去保留位,其他每位都代表乙個具體的含義,其中bits 0/2/4/6/7/11 是狀態位,標識了某些操作後的狀態,8/9/10是控制標識位。

cf(bit0)------進製標識

pf(bit2)------奇偶標識

af(bit4)------輔助進製標識

zf(bit6)------零標識

sf(bit7)------符號標識

of(bit11)------溢位標識

tf(bit8)------陷阱標識

if(bit9)------中斷標識

df(bit10)------方向標識

64bit模式下,該暫存器被擴充套件為64位:rflags,但32位保留未被使用,低32位含義不變。

1.4 指令暫存器eip

eip------標識當前程序將要執行指令位置.

在64位模式下擴充套件為rip64位指令暫存器.

1.5 控制暫存器

cr0,cr2,cr3,cr4

1.6 系統表指標暫存器

idtr------中斷描述符表資訊

gdtr------全域性描述符表資訊

ldyr------區域性描述符表資訊

1.7 任務暫存器

儲存任務的狀態資訊tss

1.8 除錯暫存器

dr0-dr7 控制和允許監視程序的除錯操作

1.9 x87 fpu暫存器

1.10 mmx暫存器

1.11 xmm暫存器

(略)

彙編學習筆記(2)暫存器

本篇文章是組合語言 王爽 一書的學習筆記,對應書中的第 二 三章,暫存器。cpu主要是由運算器 暫存器和控制器組成,這一篇筆記主要是暫存器相關知識的學習總結,考慮到通用性,用8086cpu來學習。本次筆記共涉及8086cpu中的7個暫存器 總數14個 分別是ax,bx,cs,ip,ds,ss,sp。...

彙編 學習筆記(一) 暫存器(二)

全稱 16位 高8位低8位 axah albx bhbl cxch cldx dhdl ax 累加器。這是個16位的暫存器,可以拆成ah 高位置的8位 和al 低位置的8位 來用,通常用在相乘或相除存放運算結果 另外還有i o字串。bx 基位址暫存器。同上可以拆成bh和bl,主要用在間接 基底 定址...

彙編學習 暫存器1

典型的cpu由運算器 控制器 暫存器等器件構成,這些器件靠內部匯流排進行資訊傳送。匯流排分為內部匯流排和外部匯流排,內部匯流排實現cpu內部各個器件的聯絡,外部匯流排實現cpu和主機板上其他器件的聯絡 程式設計師通過改變各種暫存器的內容來實現對cpu的控制 在進行資料傳送或運算時,要注意指令的兩個操...