1. 段寄存器
需执行程序的各部分(指令代码、数据、堆栈)分别放在主存的指定段中。
段寄存器:用来存放每个段的段基值,即段基址的高16位,每个段寄存器有特定功能,不能互换。
当前段:由CS、DS、SS、ES指向的段,如图:
CS ----- 代码段用来存放程序的指令代码序列,CS用来存放当前代码段首址的高16位,即段基值。
DS ----- 数据段用来存放程序的有关数据,DS用来存放当前数据段的段基值。
SS ----- 堆栈段用来存放按后进先出顺序存取的信息,SS用来存放当前堆栈段的段基值。
ES ----- 附加段用来存放运算结果或辅助数据,ES用来存放当前附加段的段基值。
2. 通用寄存器
8个16位通用寄存器按使用情况分为三种:指针寄存器、变址寄存器、数据寄存器。
(1)指针寄存器:主要提供全部或部分偏移量
SP:专门存放堆栈段中栈顶单元的偏移量。
BP:存放堆栈段中某个单元的全部/部分偏移量,也可存放16位操作数或运算结果。
(2)变址寄存器
SI/DI:存放主存操作数的全部/部分偏移量,也可存放16位操作数和结果,在多数情况功能可以互换。 但在串操作指令中作用不能互换,源操作数必须用SI提供偏移量,目的操作数必须用DI提供偏移量。
(3)数据寄存器
数据寄存器既可以作为4个16位的寄存器,也可以作为8个8位的寄存器 ,(H表示高字节,L表示低字节)。
程序中,数据寄