在写程序或研究任何指令之前,必须了解微处理器的内部配置
8086的寄存器组分成8个通用寄存器、4个段寄存器、1个标志寄存器和1个指令指针寄存器,均是16位的。8个通用寄存器中的4个数据寄存器可以分成高8位和低8位两个独立的寄存器,形成8个通用的8位寄存器。寄存器示意图如下:
一、通用寄存器
1、数据寄存器
AX 称为累加器,使用频率最高,用于算术、逻辑运算以及与外设传递信息等。
BX 称为基址寄存器,常用作存放存储器地址。
CX 称为计数器,作为循环和串操作等指令中的隐含计数器。
DX 称为数据寄存器,常用来存放双字长数据的高16位,或存放外设端口地址。
2、指针及变址寄存器
包括SI 、DI、BP、SP四个16位寄存器,常用于存储器寻址时提供地址。SI是原变址寄存器,DI是目的变址寄存器,一般与DS联用确定数据段中某一存储单元地址。在串指令中,SI与DS联用、DI与ES联用,分别寻址数据段和附加段,同时在串指令中,SI、DI还都具有自动增量或减量的功能。SP为堆栈指针寄存器,指示栈顶的偏移地址;BP为基址指针寄存器,表示堆栈段中的基地址。SP和BP寄存器与SS段寄存器联合使用以确定堆栈段中的存储单元地址。SP实际上可归类为专用寄存器,只用于堆栈操作。16位IP指令指针寄存器用来指示代码段中指令的偏移地址,与代码段寄存器CS联用,确定下一条指令的物理地址,处理器利用CS:IP取得下一条要执行的指令,然户修改IP内容,指向下一条指令的存储器地址。计算机就是通过CS:IP寄存器来控制指令序列的执行流程。IP寄存器是一个专用寄存器。
二、标志寄存器
标志(Flag)用于反映指令执行结果或控制指令执行形式。许多指令执行之后影响有关的标志位;不少指令的执行要利用某些标志。8086微处理器中各种标识形成一个16位的标志寄存器FLAGS,也称为程序状态字寄存器PSW,分为两类:6个状态标志和3个控制标志。具体如下图:
1、状态标志
状态标志用来记录程序运行结果的状态信息
CF——进位标志(Carry Flag)。当运算结果的最高有效位有进位(加法)或借位(减法)时,进位标志置1,即CF=1;否则CF=0。
ZF——零标志(Zero Flag)。若运算结果为0,则ZF=1,否则ZF=0。
SF——符号标志(Sign Flag)。运算结果的最高有效位就是符号标志的状态。既运算结果最高位为1,则SF=1;否则SF=0。
PF——奇偶标志(Parity Flag)。运算结果最低字节中“1”的个数为零或偶数时,PF=1;否则PF=0。PF标志进反映最低8位中“1”的个数的奇或偶。
OF——溢出标志(Overflow Flag)。若算术运算结果有溢出,则OF=1;否则OF=0。
AF——辅助进位标志(Auxiliary Carry Flag)。运算时D3位(低半字节)有进位或借位时,AF=1;否则AF=0
2、控制标志
控制寄存器可由程序根据需要指令设置,用来控制处理器执行指令的方式。
DF——方向标志(Direction Flag)。该标志用于串操作指令中,控制地址的变化方向。如果DF=0,每次串操作后的存储器地址自动增加,DF=1,每次串操作后的存储器地址自动减少。方向标志可以用CLD指令复位(DF=0),STD指令置位(DF=1)。
IF——中断允许标志(Interrupt-enable Flag)。该标志用于控制外部可屏蔽中断是否可以被处理器响应。IF=1,允许中断,IF=0,禁止中断。
TF——陷阱标志(Trap Flag)。也常称为单步标志。用于控制处理器是否进入单步操作方式。TF=1,处理器单步执行指令:即处理器在每条指令执行结束时,产生一个编号为1的内部中断。这样可以方便的对程序逐条指令的调试。
微处理器从功能上可以分成两大部分:执行单元(Exection Unit)和总线接口单元(Bus Interface Unit),如下图:
在EU中算术逻辑单元ALU用来维持MPU的状态和标志,管理通用寄存器和指令操作数。EU中的寄存器是16位的,数据通道也是16位的,便于数据的快速传送(16位处理器)。EU从BIU的指令队列中获取指令,译码后开始执行,当指令要求访问内存或端口时,EU请求BIU存取数据。这时EU算出的地址是相对段基的16位位移量,BIU根据指令要求选定相应的段寄存器得到段基,由段基和位移量得出操作数的20位物理地址。BIU用来实现EU的所有总线操作,在EU执行指令时,BIU从存储器中取出后继指令送入指令队列,该队列同时能存放6个指令字节(8088处理器)。这一指令队列能保证EU从该队列中取出马行要执行的指令,而不必到内存中直接取指令。
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请
点击举报。