32位寄存器简介

本文详细介绍了x86汇编中的8个通用寄存器(EAX、EBX、ECX、EDX、ESP、EBP、ESI、EDI)及其在程序运行中的作用,包括数据传输、算数运算、循环计数、栈管理和字符串操作。EIP寄存器则用于存储下一条指令地址,控制程序执行流程。
摘要由CSDN通过智能技术生成

寄存器:
一般我们分析的程序大多数都是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位的表示方法
32位    16位    高8位    低8位
EAX        AX        AH        AL
EBX        BX        BH        BL
ECX        CX        CH        CL
EDX        DX        DH        DL
剩下的4个通用寄存器只能用32位和16位名称来访问
32位    16位
ESI        SI
EDI        DI
EBP        BP
ESP        SP

EAX:乘除指令默认使用EAX寄存器保存结果数据;计算加法的时候结果也是保存在eax中,函数调用完成后返回值也是默认保存在eax中
ECX:默认作为循环计数器,用来记录循环次数
EBP/ESP:这两个寄存器一般是用来记录栈顶和栈底,EBP的值是指向栈底的指针,esp的值是指向栈顶的指针
ESI/EDI:这两个寄存器大多是用在串操作指令中,比如字符串拷贝等操作
ESI就是扩展源变址寄存器(extended source index),EDI是扩展目的寄存器(extended destination index)

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值