汇编语言里 eax, ebx, ecx, edx, esi, edi, ebp, esp

原创 2012年03月23日 10:21:17

汇编语言里 eax, ebx, ecx, edx, esi, edi, ebp, esp

www.diybl.com    时间 : 2011-03-30  作者:网络   编辑:hawk 点击:  233 [ 评论 ]


 

eax, ebx, ecx, edx, esi, edi, ebp, esp等都是X86 汇编语言中CPU上的通用寄存器的名称,是32位的寄存器。如果用C语言来解释,可以把这些寄存器当作变量看待。

比方说: add eax,-2 ;    //可以认为是给变量eax加上-2这样的一个值。

这些32位寄存器有多种用途,但每一个都有“专长”,有各自的特别之处。

EAX  是"累加器"(accumulator), 它是很多加法乘法指令的缺省寄存器。

EBX  是"基地址"(base)寄存器, 在内存寻址时存放基地址。

ECX  是计数器(counter), 是重复(REP)前缀指令和LOOP指令的内定计数器。

EDX  则总是被用来放整数除法产生的余数。

ESI/EDI 分别叫做"源/目标索引寄存器"(source/destination index),因为在很多字符串操作指令中, DS:ESI指向源串,而ES:EDI指向目标串.

EBP 是"基址指针"(BASE POINTER), 它最经常被用作高级语言函数调用的"框架指针"(frame pointer). 在破解的时候,经常可以看见一个标准的函数起始代码:
  
  push ebp ; 保存当前ebp
  mov ebp,esp ; EBP设为当前堆栈指针
  sub esp, xxx ; 预留xxx字节给函数临时变量.
  ...
  
  这样一来,EBP 构成了该函数的一个框架, 在EBP上方分别是原来的EBP, 返回地址和参数. EBP下方则是临时变量. 函数返回时作 mov esp,ebp/pop ebp/ret  即可.

ESP  专门用作堆栈指针,被形象地称为栈顶指针,堆栈的顶部是地址小的区域,压入堆栈的数据越多,ESP也就越来越小。在32位平台上,ESP每次减少4字节。


EAX、EBX、ECX、EDX、ESI、EDI、ESP、EBP 寄存器详解

参考一: EAX、ECX、EDX、EBX寄存器的作用 一般寄存器:AX、BX、CX、DX AX:累积暂存器,BX:基底暂存器,CX:计数暂存器,DX:资料暂存器 索引暂存器...
  • zhu2695
  • zhu2695
  • 2013年11月19日 00:03
  • 3001

EAX、ECX、EDX、EBX、ESI、EDI、ESP、EBP寄存器

一般寄存器:AX、BX、CX、DX AX:累积暂存器,BX:基底暂存器,CX:计数暂存器,DX:资料暂存器 索引暂存器:SI、DI SI:来源索引暂存器,DI:目的索引暂存器 堆叠、基...
  • huang_123_456
  • huang_123_456
  • 2013年11月13日 09:13
  • 744

函数开始处的MOV EDI, EDI的作用

0:000> u TextOutA-0x0a L 10  GDI32!NtGdiTransparentBlt+0xa:  77efc43f ff12            call    dword ...
  • zang141588761
  • zang141588761
  • 2017年04月19日 10:12
  • 513

EAX、ECX、EDX、EBX寄存器的作用

一般寄存器:AX、BX、CX、DX AX:累积暂存器,BX:基底暂存器,CX:计数暂存器,DX:资料暂存器 索引暂存器:SI、DI SI:来源索引暂存器,DI:目的索引暂存器 堆叠、基底暂存器:S...
  • tiger_ibm
  • tiger_ibm
  • 2013年04月02日 10:25
  • 5437

汇编语言里 eax, ebx, ecx, edx, esi, edi, ebp, esp这些都是什么意思啊?

汇编语言里 eax, ebx, ecx, edx, esi, edi, ebp, esp这些都是什么意思啊? eax, ebx, ecx, edx, esi, edi, ebp, e...
  • fengyuanye
  • fengyuanye
  • 2016年04月10日 20:06
  • 733

汇编语言里 eax, ebx, ecx, edx, esi, edi, ebp, esp这些都是什么意思啊?

eax, ebx, ecx, edx, esi, edi, ebp, esp等都是X86 汇编语言中CPU上的通用寄存器的名称,是32位的寄存器。如果用C语言来解释,可以把这些寄存器当作变量看待。 ...
  • gettogetto
  • gettogetto
  • 2017年08月06日 20:24
  • 349

汇编语言里 eax, ebx, ecx, edx, esi, edi, ebp, esp这些都是什么意思啊?

eax, ebx, ecx, edx, esi, edi, ebp, esp等都是X86 汇编语言中CPU上的通用寄存器的名称,是32位的寄存器。如果用C语言来解释,可以把这些寄存器当作变量看待。 ...
  • hzhenx1989
  • hzhenx1989
  • 2013年06月20日 14:59
  • 375

x86寄存器问题

16位 自Intel 8086和8088起,有14个16比特寄存器。其中四个(AX, BX, CX, DX)是通用目的(尽管每个寄存器都有附加目的;举个例子:只有CX可以被用来当作loop(循环)指...
  • wang010366
  • wang010366
  • 2016年07月24日 17:58
  • 1855

eax, ebx, ecx, edx, esi, edi, ebp, esp等都是X86 汇编语言中CPU上的通用寄存器的名称

eax, ebx, ecx, edx, esi, edi, ebp, esp等都是X86 汇编语言中CPU上的通用寄存器的名称,是32位的寄存器。如果用C语言来解释,可以把这些寄存器当作变量看待。 ...
  • yukid2012
  • yukid2012
  • 2015年01月16日 14:44
  • 411

32位汇编语言学习笔记(20)--栈破坏检测

还是使用前面缓冲区溢出的那个程序,使用-fstack-protector编译选项。 gcc -O1 -m32 -fstack-protector-o bufovf bufovf.c 对映像文件进行反汇...
  • swordmanwk
  • swordmanwk
  • 2014年12月22日 21:45
  • 1510
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:汇编语言里 eax, ebx, ecx, edx, esi, edi, ebp, esp
举报原因:
原因补充:

(最多只允许输入30个字)