全球最实用的IT互联网信息网站!

AI人工智能P2P分享&下载搜索网页发布信息网站地图

当前位置:诺佳网 > 电子/半导体 > 嵌入式技术 >

介绍8个32位通用寄存器

时间:2023-09-20 14:58

人气:

作者:admin

标签: 8个  通用  介绍  寄存器  32位 

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

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

温馨提示:以上内容整理于网络,仅供参考,如果对您有帮助,留下您的阅读感言吧!
相关阅读
本类排行
相关标签
本类推荐

CPU | 内存 | 硬盘 | 显卡 | 显示器 | 主板 | 电源 | 键鼠 | 网站地图

Copyright © 2025-2035 诺佳网 版权所有 备案号:赣ICP备2025066733号
本站资料均来源互联网收集整理,作品版权归作者所有,如果侵犯了您的版权,请跟我们联系。

关注微信