汇编语言一些寄存器的作用

本文介绍了x86汇编语言中的关键寄存器,如eax, ebx, ecx, edx等的用途,以及常用指令如mov, sub, add, jmp, test, push, pop, call, ret的功能。eax作为累加器,ebx常用于内存寻址,ecx作为计数器,edx在除法中存储余数。esi和edi作为源/目标索引,ebp常作为函数调用的框架指针。esp作为堆栈指针,jmp用于无条件跳转,test影响标志位,lea获取存储单元有效地址,ret则用于返回并清理堆栈。此外,add进行普通加法,call和ret用于函数调用和返回。" 4780280,691934,分形艺术:Sierpinski三角形的数学秘密,"['图形学', '数学', '算法', '组合数学', '递归']
摘要由CSDN通过智能技术生成

首先,需要了解c语言中汇编语言里eax,ebx,ecx,edx,ebp,edi,esi;mov,sub,add,jmp,jn,test;push,pop,call,ret,lea;这些都是什么意思。

eax,ebx,ecx,edx,esi,edi,dbp... ...都是x86汇编语言中cpu上的通用寄存器的名称,是三十二位的寄存器。如果用c语言来解释,可以把这些寄存器当作变量来待。

x86是指三十二位操作系统。

三十二位寄存器有许多用途,但是每个都有自己的专长,有各自的特别之处。

eax 是 “累加器”,是很多加法乘法指令的缺省寄存器。

ebx 是“基地址”,寄存器,在内存寻地址时存放地址。

ecx 是计时器,是重复前缀指令和loop指令的内定计时器。

edx则是被用来放帧数除法产生的余数。

esi/edi分别叫做“源/目标索引寄存器”。

ebp是"基址指针",他最经常被用作高级语言函数调用的“框架指针”在破解的时候,经常可以看见一个标准的函数起始代码;

       push ebp;保存当前的ebp

       mov, ebp, esp ;ebp设为当前堆栈指针//mov(传送)a(累加寄存器)#30h(十六进制立即数) 将立即数30h(十六进制)传送到A里面。

              //堆栈指针:是一个抽象的数据类型,规定的两项必备的基本操作分别为入栈和出栈,并没有规定入栈和出栈要怎么实现。

       sub  ,esp,xxx;预留xxx字节给函数临时变量... ...

    这样一来,ebp构成了函

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值