汇编1——寄存器

以前学的汇编没有用到实际编程中;最近闲来无事学习一下;在网上东拼西凑了一点资料- - !

寄存器

作用:保存操作数和运算结果,减少读取操作数所需要占用总线和访问存储器的时间。(相当于告诉缓存)

字节说明:拿EAX举例,它代表一个32位的寄存器;他由一个高16位寄存器和一个低16位寄存器组成。在拿一个16位寄存器AX来举例,它分高8位(AH),低8位(AL)。

段寄存器

说明:内存是分段管理的,访问内存的方式为【段位:偏移值】

CS——代码段寄存器(Code Segment Register),其值为代码段的段值;

DS——数据段寄存器(Data Segment Register),其值为数据段的段值;

ES——附加段寄存器(Extra Segment Register),其值为附加数据段的段值;

SS——堆栈段寄存器(Stack Segment Register),其值为堆栈段的段值;

FS——附加段寄存器(Extra Segment Register),其值为附加数据段的段值;

GS——附加段寄存器(Extra Segment Register),其值为附加数据段的段值。

数据寄存器

作用概览:保存算术逻辑运算结果,作为算术运算操作数,传输数据;作为指针寄存器(32位独有)

EAX 是"累加器"(accumulator),它是很多加法、乘法、除法和输入输出等指令的缺省寄存器;使用频率极高。

EBX 是"基地址"(base)寄存器, 在内存寻址时存放基地址,即常常用作存储器的指针。

ECX 是计数器(counter), 是重复(REP)前缀指令和LOOP指令的内定计数器;它常常用于控制循环操作次数。

EDX 在运算时(加减乘除)用于存放操作数参与运算,也可用于存放I/O端口地址。

变址寄存器(偏移)

作用概览:主要用于存放存储单元在段内的偏移量,作为通用寄存器,也可以作为操作数使用;也可以作为存储器指针使用

说明:不可以分割为8位寄存器

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

指针寄存器(堆栈)

作用概览:主要用于存放堆栈内存储单元的偏移量;也可用于存储操作数

说明:不可以分割为8位寄存器

ESP:堆栈指针(指向栈顶),用它只可以访问栈顶

EBP是"基址指针"(BASEPOINTER),可以直接存取堆栈中的数据;常用作高级语言函数调用的"框架指针"(framepointer). 在破解的时候,经常可以看见一个标准的函数起始代码:

push ebp ;保存当前ebp

mov ebp,esp ;EBP设为当前堆栈指针

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

指令指针寄存器

用于存放下一次要执行指令的偏移量;在具有预取指令功能的系统中,下次要执行的指令通常已被预取到指令队列中,除非发生转移情况。

其他寄存器

1个指令指针寄存器(EIP) 1个标志寄存器(EFlags)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值