寄存器 注:名字以字母‘E’开头的寄存器表示32位,如EAX 32位,AX 16位,AL是低8位,AH是8-15位
32位CPU的8个通用寄存器:EAX, EBX, ECX, EDX, EBP, ESP, ESI, EDI 数据寄存器EAX, EBX, ECX, EDX EAX:累加寄存器,是很多加法乘法指令的缺省寄存器 EBX:基址寄存器,在内存寻址时存放基地址 ECX:计数寄存器,是重复(REP)前缀指令和LOOP指令的内定计数器 EDX:数据寄存器,总是被用来放整数除法产生的余数
段寄存器 DS: 段寄存器,指向当前运行着的程序的数据段。 ES: 额外的段寄存器 SS: 栈段寄存器,指向栈段
索引寄存器ESI, EDI ESI:源索引寄存器 EDI:目的索引寄存器 在很多字符串操作指令中,DS:ESI指向源串,而ES:EDI指向目标串
指针寄存器 ip:指令指针寄存器,存储的是CPU下次要执行的指令的地址,CS:IP用来指示当前运行的指令地址,不能直接访问CS,也不能直接访问IP BP:基址指针寄存器,也叫栈基址寄存器,存储的是栈的栈底指针,经常被用作高级语言函数调用的“框架指针”(frame pointer)。 一个标准的函数起始代码如下: push ebp;保存当前ebp mov ebp, esp;EBP设为当前堆栈指针 sub esp, xxx;预留xxx字节给函数临时变量 这样一来,EBP构成了该函数的一个框架,在EBP上放分别是原来的EBP,返回地址和参数。EBP下方则是临时变量,函数返回时作mov esp,ebp/pop ebp/ret即可 SP:ESP寄存器存储的栈的栈顶指针,始终指向栈顶。
新闻热点
疑难解答