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个寄存器就是今后逆向过程中接触最多的寄存器了,在以后的使用过程中会慢慢对这些寄存器有更多了解。

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

    关注

    30

    文章

    4426

    浏览量

    116104
  • 计数器
    +关注

    关注

    31

    文章

    1952

    浏览量

    91854
  • ESP
    ESP
    +关注

    关注

    0

    文章

    160

    浏览量

    33153
收藏 人收藏

    评论

    相关推荐

    ATtiny2313通用寄存器详解

    8 结果·输出两 8 操作数,输入一 16 结果·输出一 16 操作数,输入一 16 结果Figure 4 为CPU 32 通用工作
    发表于 11-04 07:21

    74HC595D_3态8位移位寄存器

    83态移位寄存器/输出锁存芯片,采用CMOS硅栅工艺。该器件包含一8串行输入与并行输出移位寄存器并提供一8D型存储寄存器,该存储
    发表于 07-12 11:54 14次下载

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

    8 寄存器: MODER、OTYPER、OSPEEDR、PUPDR、ODR、IDR 、AFRH 和 AFRL。MODER 寄存器(输入状态寄存器):STM32F4 最多有 9 组
    发表于 11-29 13:51 10次下载
    IO口配置常用的<b>8</b><b>个</b><b>寄存器</b> 1.6

    GPIO寄存器

    寄存器组成,如果芯片有GPIOA~GPIOI,9组那么一共有90寄存器如果配置一IO口需要2个位,那么刚好32寄存器配置一组IO口16IO口如果配置一IO口只需要1
    发表于 12-08 17:06 5次下载
    GPIO<b>寄存器</b>

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

    8通用移位寄存器;三态-74HC299
    发表于 02-16 20:28 1次下载
    <b>8</b><b>位</b><b>通用</b>移位<b>寄存器</b>;三态-74HC299

    4双向通用移位寄存器-74HC194

    双向通用移位寄存器-74HC194
    发表于 02-16 21:10 1次下载
    4<b>位</b>双向<b>通用</b>移位<b>寄存器</b>-74HC194

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

    8通用移位寄存器;三态-74HC299_Q100
    发表于 02-20 19:16 0次下载
    <b>8</b><b>位</b><b>通用</b>移位<b>寄存器</b>;三态-74HC299_Q100

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

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

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

    寄存器,32寄存器是什么意思  从X8086开始学了一年,第一
    发表于 03-08 17:26 1.7w次阅读

    dptr是什么寄存器_dptr由几个寄存器组成

    16的专用地址指针寄存器,由两独立的8寄存器组成。
    发表于 12-27 15:46 2.2w次阅读

    基于stm32的GPIO寄存器学习解析

    通用输入/输出 (General Purpose Input Output) 包括: 两
    的头像 发表于 01-11 09:03 1.2w次阅读
    基于stm32的GPIO<b>寄存器</b>学习解析

    AArch64寄存器介绍

    通用寄存器。除通用寄存器之外,本节还会介绍特殊寄存器、系统控制寄存器、处理状态、函数调用标准。
    的头像 发表于 08-24 09:57 3603次阅读

    解析CPU中的寄存器

    8寄存器在16寄存器中,而16寄存器在32寄存器中。
    发表于 09-19 10:10 1782次阅读

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

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

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

    通用寄存器(如累加通用寄存器等),单片机中还会有特定功能的寄存器,如定时寄存器、中断控制寄存器等等。这些寄存器通常都是特定位数的寄存器,例如8的计数
    的头像 发表于 04-08 14:46 3218次阅读