8086CPU中的寄存器结构,由14个16位的寄存器组成。它们分别是:
通用数据寄存器:AX BX CX DX;
通用地址寄存器:SP BP SI DI;
段寄存器:CS DS SS ES;
控制寄存器:指令指针寄存器IP,标志寄存器FLAGS
1. 通用数据寄存器:
8086CPU中有4个16位的数据寄存器AX BX CX DX。在程序设计中多用于存放16位数据。若在程序设计中需要存放8位数据时,可将每个16位数据寄存器拆分为2个8位的寄存器使用,也就是说,8086CPU中有8个8位的数据寄存器AH AL BH BL CH CL DH和DL。
2. 通用地址寄存器:
8086CPU中有4个16位的通用地址寄存器SP BP SI DI。在程序设计中多用于存放段内16位偏移地址值。
SP(Stack Pointer)称为堆栈指针,它总是指向堆栈的栈顶,在程序设计中用指令PUSH和POP来完成数据的入/出栈操作;
BP(Base Pointer)称为基数指针,通常也是在堆栈段中使用,可用于存放位于堆栈段的一个数据块基址偏移量;
SI(Source Index)称为源变址指针,用于存放源操作数段的偏移地址值,在串操作指令中用于存放源操作数段DS的偏移地址值;
DI(Destination Index)称为目的变址指针,用于存放目的操作数段的偏移地址值,在串操作指令中用于存放目的操作数段ES的偏移地址值。
3. 段寄存器:
8086CPU中设置了4个16位的段寄存器,用于存放不同的段首地址。在程序设计中,段寄存器和段内偏移寄存器共同构成20位实际地址空间。段寄存器与通用地址寄存器有以下约定:
代码段寄存器CS(Code Segment)与指令指针寄存器IP;
堆栈段寄存器SS(Stack Segment)与堆栈栈顶指针寄存器SP;
数据段寄存器DS(Data Segment)与源变址指针寄存器SI;
附加段寄存器ES(Extra Segment)与目的变址指针寄存器DI。