0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

介紹8個(gè)32位通用寄存器

冬至子 ? 來(lái)源:半同桌 ? 作者:lanlan ? 2023-09-20 14:58 ? 次閱讀

一般我們分析的程序大多都是32位的,所以這里就先介紹x86匯編,也就是32位下的匯編,64位下的匯編后續(xù)會(huì)介紹。

x86匯編一共有8個(gè)32位通用寄存器,名稱分別為:EAX,EBX,ECX,EDX,ESP,EBP,ESI,EDI。

這些寄存器用來(lái)在程序運(yùn)行過(guò)程中的算術(shù)運(yùn)算和數(shù)據(jù)傳輸。其中EAX,EBX,ECX,EDX這四個(gè)寄存器又可以分為低16位,高8位和低8位,這樣分的目的是為了傳輸不同字節(jié)大小的數(shù)據(jù)。

比如說(shuō)一個(gè)字節(jié)的數(shù)據(jù),也就是8位,那么就可以放到寄存器的低8位中;一個(gè)四字節(jié) 32位的數(shù)據(jù),剛好就可以放到一個(gè)寄存器中。

下面是EAX,EBX,ECX,EDX這四個(gè)寄存器的低16位,高8位,低8位的表示方法

1.jpg

剩下的4個(gè)通用寄存器只能用32位和16位名稱來(lái)訪問(wèn)

1.jpg

這些寄存器不需要死記硬背,在以后的分析過(guò)程中就會(huì)慢慢熟悉。

雖然這8個(gè)通用寄存器都是用來(lái)存儲(chǔ)數(shù)據(jù),但是還是有一些區(qū)別的:

EAX:乘除指令默認(rèn)使用EAX寄存器保存結(jié)果數(shù)據(jù);計(jì)算加法的時(shí)候結(jié)果也是保存在EAX中;函數(shù)調(diào)用完成后返回值也是默認(rèn)保存在EAX中

imul:乘法指令

imul 操作數(shù)1,操作數(shù)2 ,表示操作數(shù)1*操作數(shù)2,并把結(jié)果放到操作數(shù)1中

可以看到下面的乘法操作都是用EAX保存結(jié)果

圖片

圖片

圖片

圖片

加法操作也是把結(jié)果放到EAX中

圖片

圖片

ECX:默認(rèn)作為循環(huán)計(jì)數(shù)器,用來(lái)記錄循環(huán)次數(shù)

EBP/ESP:這兩個(gè)寄存器一般是用來(lái)記錄棧的棧頂和棧底,EBP的值是指向棧底的指針,ESP的值是指向棧頂?shù)闹羔?/p>

ESI/EDI:這兩個(gè)寄存器大多是用在串操作指令中,比如字符串拷貝等操作

ESI就是擴(kuò)展源變址寄存器(extended source index),EDI是擴(kuò)展目的寄存器(extended destination index)

下面是一個(gè)字符串拷貝的匯編偽代碼:

MOV ECX,EAX     ;把字符串長(zhǎng)度放到ECX中,用來(lái)計(jì)數(shù)
INC ECX         ;因?yàn)橛辛阕止?jié),計(jì)數(shù)器+1
MOV ESI,SOURCE  ;SOURCE 是源字符串的地址
MOV EDI,TARGET  ;TARGET 是用來(lái)保存復(fù)制后字符串的地址,也就是目的字符串
CLD             ;方向標(biāo)志清零,ESI和EDI沿著正向(地址增大的方向)遞增
                ;也就是字符串的處理是由前往后
REP MOVSB       ;復(fù)制字符串,按字節(jié)傳送數(shù)據(jù)

除了這8個(gè)通用寄存器外,還有一個(gè)寄存器使用的很多,這就是EIP(指令指針寄存器),這個(gè)寄存器的作用就是保存了下一條將要執(zhí)行指令的地址,更改EIP的值可以改變程序的執(zhí)行流程

8個(gè)通用寄存器加上一個(gè)指令指針寄存器EIP,這9個(gè)寄存器就是今后逆向過(guò)程中接觸最多的寄存器了,在以后的使用過(guò)程中會(huì)慢慢對(duì)這些寄存器有更多了解。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 寄存器
    +關(guān)注

    關(guān)注

    31

    文章

    5275

    瀏覽量

    119680
  • 計(jì)數(shù)器
    +關(guān)注

    關(guān)注

    32

    文章

    2248

    瀏覽量

    94192
  • ESP
    ESP
    +關(guān)注

    關(guān)注

    0

    文章

    181

    瀏覽量

    33814
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    ATtiny2313通用寄存器詳解

    個(gè) 8 結(jié)果·輸出兩個(gè) 8 操作數(shù),輸入一個(gè) 1
    發(fā)表于 11-04 07:21

    使用N+2個(gè)雙極繼電器的通用N寄存器電路圖

    使用N+2個(gè) 雙極繼電器的通用N寄存器電路圖
    發(fā)表于 06-30 13:18 ?657次閱讀
    使用N+2<b class='flag-5'>個(gè)</b>雙極繼電器的<b class='flag-5'>通用</b>N<b class='flag-5'>位</b><b class='flag-5'>寄存器</b>電路圖

    32寄存器,32寄存器是什么意思

    32寄存器,32寄存器是什么意思  從X8086開(kāi)始學(xué)了一年,第一個(gè)ASM的程序就是變32換16進(jìn)制的程序,不過(guò)現(xiàn)在叫我從新
    發(fā)表于 03-08 17:26 ?1.7w次閱讀

    74HC595D_3態(tài)8位移位寄存器

    74HC595是一顆高速CMOS 83態(tài)移位寄存器/輸出鎖存芯片,采用CMOS硅柵工藝。該器件包含一個(gè)
    發(fā)表于 07-12 11:54 ?14次下載

    IO口配置常用的8個(gè)寄存器 1.6

    IO 配置常用的 8 個(gè)寄存器: MODER、OTYPER、OSPEEDR、PUPDR、ODR、IDR 、AFRH 和 AFRL。MODER 寄存器(輸入狀態(tài)
    發(fā)表于 11-29 13:51 ?10次下載
    IO口配置常用的<b class='flag-5'>8</b><b class='flag-5'>個(gè)</b><b class='flag-5'>寄存器</b> 1.6

    AArch64寄存器介紹

    作為 RISC 架構(gòu),AArch64 提供了大量的通用寄存器。除通用寄存器之外,本節(jié)還會(huì)介紹特殊寄存器
    的頭像 發(fā)表于 08-24 09:57 ?5828次閱讀

    ARM通用寄存器及狀態(tài)寄存器詳解

    筆者來(lái)聊聊ARM通用寄存器以及狀態(tài)寄存器的認(rèn)識(shí)與理解。
    的頭像 發(fā)表于 01-06 14:58 ?6728次閱讀

    8通用移位寄存器;三態(tài)-74HC299

    8通用移位寄存器;三態(tài)-74HC299
    發(fā)表于 02-16 20:28 ?1次下載
    <b class='flag-5'>8</b><b class='flag-5'>位</b><b class='flag-5'>通用</b>移位<b class='flag-5'>寄存器</b>;三態(tài)-74HC299

    8通用移位寄存器;三態(tài)-74HC299_Q100

    8通用移位寄存器;三態(tài)-74HC299_Q100
    發(fā)表于 02-20 19:16 ?0次下載
    <b class='flag-5'>8</b><b class='flag-5'>位</b><b class='flag-5'>通用</b>移位<b class='flag-5'>寄存器</b>;三態(tài)-74HC299_Q100

    單片機(jī)工作寄存器作用 單片機(jī)常用專用寄存器

    除了通用寄存器(如累加、通用寄存器等),單片機(jī)中還會(huì)有特定功能的寄存器,如定時(shí)
    的頭像 發(fā)表于 04-08 14:46 ?7147次閱讀

    具有同步清除和3-St輸出的8通用移位/存儲(chǔ)寄存器數(shù)據(jù)表

    電子發(fā)燒友網(wǎng)站提供《具有同步清除和3-St輸出的8通用移位/存儲(chǔ)寄存器數(shù)據(jù)表.pdf》資料免費(fèi)下載
    發(fā)表于 05-14 10:38 ?0次下載
    具有同步清除和3-St輸出的<b class='flag-5'>8</b><b class='flag-5'>位</b><b class='flag-5'>通用</b>移位/存儲(chǔ)<b class='flag-5'>寄存器</b>數(shù)據(jù)表

    具有3態(tài)輸出的8通用移位/存儲(chǔ)寄存器數(shù)據(jù)表

    電子發(fā)燒友網(wǎng)站提供《具有3態(tài)輸出的8通用移位/存儲(chǔ)寄存器數(shù)據(jù)表.pdf》資料免費(fèi)下載
    發(fā)表于 05-14 10:57 ?0次下載
    具有3態(tài)輸出的<b class='flag-5'>8</b><b class='flag-5'>位</b><b class='flag-5'>通用</b>移位/存儲(chǔ)<b class='flag-5'>寄存器</b>數(shù)據(jù)表

    8通用移位/存儲(chǔ)寄存器數(shù)據(jù)表

    電子發(fā)燒友網(wǎng)站提供《8通用移位/存儲(chǔ)寄存器數(shù)據(jù)表.pdf》資料免費(fèi)下載
    發(fā)表于 05-16 10:55 ?0次下載
    <b class='flag-5'>8</b><b class='flag-5'>位</b><b class='flag-5'>通用</b>移位/存儲(chǔ)<b class='flag-5'>寄存器</b>數(shù)據(jù)表

    帶3態(tài)輸出的8通用移位/存儲(chǔ)寄存器SN54F299 SN74F299數(shù)據(jù)表

    電子發(fā)燒友網(wǎng)站提供《帶3態(tài)輸出的8通用移位/存儲(chǔ)寄存器SN54F299 SN74F299數(shù)據(jù)表.pdf》資料免費(fèi)下載
    發(fā)表于 05-22 10:11 ?0次下載
    帶3態(tài)輸出的<b class='flag-5'>8</b><b class='flag-5'>位</b><b class='flag-5'>通用</b>移位/存儲(chǔ)<b class='flag-5'>寄存器</b>SN54F299 SN74F299數(shù)據(jù)表

    寄存器有哪幾種?可以實(shí)現(xiàn)什么功能?

    寄存器是計(jì)算機(jī)中最基本的寄存器類型,用于存儲(chǔ)數(shù)據(jù)和指令。它們通常具有相同的大小和功能,可以用于執(zhí)行各種操作。通用寄存器的數(shù)量和大小因計(jì)算機(jī)架構(gòu)而異,但常見(jiàn)的有
    的頭像 發(fā)表于 07-12 10:32 ?724次閱讀