:数据寄存器,一般称之为通用寄存器组
8086 有8个8位数据寄存器,
这些8位寄存器可分别组成16位寄存器:
AH&AL=AX:累加寄存器,常用于运算;
BH&BL=BX:基址寄存器,常用于地址索引;
CH&CL=CX:计数寄存器,常用于计数;
DH&DL=DX:数据寄存器,常用于数据传递。
2:地址寄存器/段地址寄存器
为了运用所有的内存空间,8086设定了四个段寄存器,专门用来保存段地址:
CS(Code Segment):代码段寄存器;
DS(Data Segment):数据段寄存器;
SS(Stack Segment):堆栈段寄存器;
ES(Extra Segment):附加段寄存器。
3:特殊功能的寄存器
IP(Instruction Pointer):指令指针寄存器,与CS配合使用,可跟踪程序的执行过程;
SP(Stack Pointer):堆栈指针,与SS配合使用,可指向目前的堆栈位置。
BP(Base Pointer):基址指针寄存器,可用作SS的一个相对基址位置;
SI(Source Index):源变址寄存器可用来存放相对于DS段之源变址指针;
DI(Destination Index):目的变址寄存器,可用来存放相对于 ES 段之目的变址指针。
/*********************************************************************************************************************/
现在都是32位的CPU了,你说的都是16位的东西
ax是一个16位的寄存器,是eax低16位,用途在DOS程序下可以作为返回值
bx是ebx低16位
cx,dx和ax,bx差不多
si,源地址寄存器,多用于字符串的处理,配合段地址寄存器(dx等等来保存源地址
di,目的地址寄存器,多用于字符串的比较处理
bp,基址指针寄存器,一般用于保存sp(栈指针寄存器)程序的开始一般都有如下语句
mov bp,sp//mov ebx,esp
sp堆栈指针寄存器
用于保存临时变量,传递参数
int add(int a,int b)
{
int c=a+b;
return c;
}
大概可以翻译如下
push a
push b
call xxxx
add sp,4
mov bp,sp
add sp,2
mov ax,[bp+2]
mov bx,[bp+4]
add ax,bx
sub sp,2
ret