首页 > 编程知识 正文

汇编语言offset是什么指令,汇编中eax是什么意思

时间:2023-05-05 21:55:44 阅读:177987 作者:560

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

例如add eax、-2; //可以认为变量eax值为-2。

这些32位寄存器有各种各样的用途,但各自都有“专业知识”,有各自的特殊之处。

EAX是“累加器”(accumulator ),它是许多加法乘法指令的默认寄存器。

EBX是“基地址”(base )寄存器,用于存储存储器地址。

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

EDX总是用于加入整数除法产生的馀数。

每个ESI/EDI都称为源/目标寄存器(源/目标索引)。 因为在许多字符串操作指令中,DS:ESI指向源字符串,而ES:EDI指向目标字符串。

EBP是“基址指针”(BASE POINTER ),最常用于高级语言函数调用的“帧指针”(frame pointer )。 在解密时,标准的函数开始代码:很常见

推式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个字节。

注:本文转发自下面的博客3358 blog.csdn.net/Lin cyang/archive/2010/04/01/5441066.aspx

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。