1.通用寄存器:EAX,EBX,ECX,EDX,ESI,EDI,EBP,ESP(一般作为堆栈指针)
这些寄存器的默认功能:
EAX 是"累加器"(accumulator), 它是很多加法乘法指令的缺省寄存器,函数的返回值经常被放在EAX中.
EBX 是"基地址"(base)寄存器, 在内存寻址时存放基地址
ECX 是计数器(counter), 是重复(REP)前缀指令和LOOP指令的内定计数器.
EDX 它总是被用来放整数除法产生的余数.
这4个寄存器的低16位可以被单独访问,分别用AX,BX,CX和DX. AX又可以单独访问低8位(AL)和高8位(AH),
BX,CX,DX也类似
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 专门用作堆栈指针
2.段寄存器:
CS(Code Segment,代码段) 指定当