0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

介绍8个32位通用寄存器

冬至子 来源:半同桌 作者:lanlan 2023-09-20 14:58 次阅读

一般我们分析的程序大多都是32位的,所以这里就先介绍x86汇编,也就是32位下的汇编,64位下的汇编后续会介绍。

x86汇编一共有8个32位通用寄存器,名称分别为:EAX,EBX,ECX,EDX,ESP,EBP,ESI,EDI。

这些寄存器用来在程序运行过程中的算术运算和数据传输。其中EAX,EBX,ECX,EDX这四个寄存器又可以分为低16位,高8位和低8位,这样分的目的是为了传输不同字节大小的数据。

比如说一个字节的数据,也就是8位,那么就可以放到寄存器的低8位中;一个四字节 32位的数据,刚好就可以放到一个寄存器中。

下面是EAX,EBX,ECX,EDX这四个寄存器的低16位,高8位,低8位的表示方法

1.jpg

剩下的4个通用寄存器只能用32位和16位名称来访问

1.jpg

这些寄存器不需要死记硬背,在以后的分析过程中就会慢慢熟悉。

虽然这8个通用寄存器都是用来存储数据,但是还是有一些区别的:

EAX:乘除指令默认使用EAX寄存器保存结果数据;计算加法的时候结果也是保存在EAX中;函数调用完成后返回值也是默认保存在EAX中

imul:乘法指令

imul 操作数1,操作数2 ,表示操作数1*操作数2,并把结果放到操作数1中

可以看到下面的乘法操作都是用EAX保存结果

图片

图片

图片

图片

加法操作也是把结果放到EAX中

图片

图片

ECX:默认作为循环计数器,用来记录循环次数

EBP/ESP:这两个寄存器一般是用来记录栈的栈顶和栈底,EBP的值是指向栈底的指针,ESP的值是指向栈顶的指针

ESI/EDI:这两个寄存器大多是用在串操作指令中,比如字符串拷贝等操作

ESI就是扩展源变址寄存器(extended source index),EDI是扩展目的寄存器(extended destination index)

下面是一个字符串拷贝的汇编伪代码:

MOV ECX,EAX     ;把字符串长度放到ECX中,用来计数
INC ECX         ;因为有零字节,计数器+1
MOV ESI,SOURCE  ;SOURCE 是源字符串的地址
MOV EDI,TARGET  ;TARGET 是用来保存复制后字符串的地址,也就是目的字符串
CLD             ;方向标志清零,ESI和EDI沿着正向(地址增大的方向)递增
                ;也就是字符串的处理是由前往后
REP MOVSB       ;复制字符串,按字节传送数据

除了这8个通用寄存器外,还有一个寄存器使用的很多,这就是EIP(指令指针寄存器),这个寄存器的作用就是保存了下一条将要执行指令的地址,更改EIP的值可以改变程序的执行流程

8个通用寄存器加上一个指令指针寄存器EIP,这9个寄存器就是今后逆向过程中接触最多的寄存器了,在以后的使用过程中会慢慢对这些寄存器有更多了解。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 寄存器
    +关注

    关注

    31

    文章

    5305

    浏览量

    119906
  • 计数器
    +关注

    关注

    32

    文章

    2253

    浏览量

    94311
  • ESP
    ESP
    +关注

    关注

    0

    文章

    181

    浏览量

    33861
收藏 人收藏

    评论

    相关推荐

    ATtiny2313通用寄存器详解

    8 结果·输出两 8 操作数,输入一 1
    发表于 11-04 07:21

    使用N+2双极继电器的通用N寄存器电路图

    使用N+2 双极继电器的通用N寄存器电路图
    发表于 06-30 13:18 662次阅读
    使用N+2<b class='flag-5'>个</b>双极继电器的<b class='flag-5'>通用</b>N<b class='flag-5'>位</b><b class='flag-5'>寄存器</b>电路图

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

    32寄存器,32寄存器是什么意思  从X8086开始学了一年,第一ASM的程序就是变32换16进制的程序,不过现在叫我从新
    发表于 03-08 17:26 1.7w次阅读

    74HC595D_3态8位移位寄存器

    74HC595是一颗高速CMOS 83态移位寄存器/输出锁存芯片,采用CMOS硅栅工艺。该器件包含一
    发表于 07-12 11:54 14次下载

    IO口配置常用的8寄存器 1.6

    IO 配置常用的 8 寄存器: MODER、OTYPER、OSPEEDR、PUPDR、ODR、IDR 、AFRH 和 AFRL。MODER 寄存器(输入状态
    发表于 11-29 13:51 10次下载
    IO口配置常用的<b class='flag-5'>8</b><b class='flag-5'>个</b><b class='flag-5'>寄存器</b> 1.6

    AArch64寄存器介绍

    作为 RISC 架构,AArch64 提供了大量的通用寄存器。除通用寄存器之外,本节还会介绍特殊寄存器
    的头像 发表于 08-24 09:57 5923次阅读

    ARM通用寄存器及状态寄存器详解

    笔者来聊聊ARM通用寄存器以及状态寄存器的认识与理解。
    的头像 发表于 01-06 14:58 6889次阅读

    8通用移位寄存器;三态-74HC299

    8通用移位寄存器;三态-74HC299
    发表于 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>;三态-74HC299

    8通用移位寄存器;三态-74HC299_Q100

    8通用移位寄存器;三态-74HC299_Q100
    发表于 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>;三态-74HC299_Q100

    单片机工作寄存器作用 单片机常用专用寄存器

    除了通用寄存器(如累加通用寄存器等),单片机中还会有特定功能的寄存器,如定时
    的头像 发表于 04-08 14:46 7291次阅读

    具有同步清除和3-St输出的8通用移位/存储寄存器数据表

    电子发烧友网站提供《具有同步清除和3-St输出的8通用移位/存储寄存器数据表.pdf》资料免费下载
    发表于 05-14 10:38 0次下载
    具有同步清除和3-St输出的<b class='flag-5'>8</b><b class='flag-5'>位</b><b class='flag-5'>通用</b>移位/存储<b class='flag-5'>寄存器</b>数据表

    具有3态输出的8通用移位/存储寄存器数据表

    电子发烧友网站提供《具有3态输出的8通用移位/存储寄存器数据表.pdf》资料免费下载
    发表于 05-14 10:57 0次下载
    具有3态输出的<b class='flag-5'>8</b><b class='flag-5'>位</b><b class='flag-5'>通用</b>移位/存储<b class='flag-5'>寄存器</b>数据表

    8通用移位/存储寄存器数据表

    电子发烧友网站提供《8通用移位/存储寄存器数据表.pdf》资料免费下载
    发表于 05-16 10:55 0次下载
    <b class='flag-5'>8</b><b class='flag-5'>位</b><b class='flag-5'>通用</b>移位/存储<b class='flag-5'>寄存器</b>数据表

    带3态输出的8通用移位/存储寄存器SN54F299 SN74F299数据表

    电子发烧友网站提供《带3态输出的8通用移位/存储寄存器SN54F299 SN74F299数据表.pdf》资料免费下载
    发表于 05-22 10:11 0次下载
    带3态输出的<b class='flag-5'>8</b><b class='flag-5'>位</b><b class='flag-5'>通用</b>移位/存储<b class='flag-5'>寄存器</b>SN54F299 SN74F299数据表

    寄存器有哪几种?可以实现什么功能?

    寄存器是计算机中最基本的寄存器类型,用于存储数据和指令。它们通常具有相同的大小和功能,可以用于执行各种操作。通用寄存器的数量和大小因计算机架构而异,但常见的有
    的头像 发表于 07-12 10:32 834次阅读