3.2.2 8086/8088寄存器结构
1、通用寄存器
1)数据寄存器 AX、BX、CX、DX
上述4个寄存器一般用来存放数据,但它们各自都有自己的特定用途:
AX(Accumulator)称为累加器。
BX(Base)称为基址寄存器。
CX(Counter)称为计数器。
DX(Data)称为数据寄存器。
2)地址寄存器 SP、BP
SP(Stack Pointer)称为堆栈指针寄存器。
BP(Base Pointer)称为基址寄存器。
3)变址寄存器SI、DI
SI(Source Index)称为源变址寄存器。
DI(Destination Index)称为目的变址寄存器。
2、段寄存器
80861808的4个段寄存器分别为:
CS(Code Segment)称为代码段寄存器,
DS(Data Segment)称为数据段寄存器,
SS(Stack Segmen)称为堆栈段寄存器,
ES(Extra Segment)称为附加数据段寄存器,
在8086/8088系统中,段寄存器和与其对应的存放段内偏移地址的寄存器之间有一种默认组合关系,如表3.2所示。
表3.2 | 8086/8088段寄存器与提供段内偏移地址的寄存器之间的默认组合 |
段寄存器 | 提供段内偏移地址的寄存器 |
CS | IP |
DS | BX、SI、DI或一个16位立即数形式的偏移地址 |
SS | SP或BP |
ES | DI(用于字符串操作指令) |
在这种默认组合下,指令中不必专门指定其组合关系,但指令如用到非默认的组合关系,则必须用段超越前缀加以说明。这一点将在第4章中说明。
3、控制寄存器
IP
IP(Instruction Pointer)称为指令指针寄存器
FLAGS
FLAGS称为标志寄存器
1)状态标志位
下面分别介绍这6个状态标志位的功能。
CF(Carry Flag)——进位标志位。
PF(Parity Flag)——奇偶标志位。
AF(Auxiliary Flag)——辅助进位标志位。
ZF(Zero Flag) ——零标志位。
OF(Overflow Flag 溢出标志位。
2)控制标志位
它们是:
TF(Thap Flag)——跟踪(陷阱)标志位。
IF(Interrupt Flag)——中断允许标志位。
DF(Direction Flag)——方向标志位。
注意:有关寄存器,尤其是在存储器寻址时用来存放操作数在段内偏移地址的地址寄
存器和标志寄存器中各控制标志位的使用方法,在后续章节中涉及时还将进一步详细介绍,请读者务必熟练掌握。
总结
|—AX
|—BX
|–数据寄存器------|
| |—CX
| |—DX
|
| |—SP
|–通用寄存器------|–地址寄存器------|
| | |—BP
| |
| | |—SI
| |–变址寄存器------|
| |—DI
|
| |—CS
| |—DS
8086/8088寄存器结构----|–段寄存器–|
| |—SS
| |—ES
|
| |—IP |—CF
|–控制寄存器------| |—PF
| |–状态标志位------|—AF
| | |—ZF
| | |—OF
|–FLAGS—|
| |—TF
|–控制标志位-------|—IF
|—DF
|—AX |—BX |–数据寄存器------| | |—CX | |—DX | | |—SP |–通用寄存器------|–地址寄存器------| | | |—BP | | | | |—SI | |–变址寄存器------| | |—DI | | |—CS | |—DS 8086/8088寄存器结构----|–段寄存器–| | |—SS | |—ES | | |—IP |—CF |–控制寄存器------| |—PF | |–状态标志位------|—AF | | |—ZF | | |—OF |–FLAGS—| | |—TF |–控制标志位-------|—IF |—DF
3.2.3 总线周期的概念
为了便于对808618088 CPU引脚功能进行说明,本节简要介绍总线周期的概念。
8688 PU在与存储器或IO端口交换数据时需要启动一个总线周期。按照数据 er 传送方向来分,总线周期可分为“读”总线周期(CPU从存储器或I/O端口读取数据)和“E 总线周期(CPU将数据写入存储器或I/O端口)。
8086/8088 CPU基本的总线周期由4个时钟周期组成,如图3.6所示。
时钟周期是CPU的基本时间计量单位,由CPU主频决定,如8086的主频为5MHz,
1个时钟周期就是200ns。1个时钟周期又称为1个T状态,因此基本总线周期可用T1、T2、T3、T4表示。图3.6(a)给出典型的总线周期波形图。在T1状态CPU把要读/写的存储单元的地址或10端口的地址放到地址总线上。若是“读”总线周期,CPU从T3起到T4从总线上接收数据,在T2状态时总线浮空,允许CPU有一个缓冲时间以把输出地址的写方式转换成给入数据的读方式:若是“写”总线周期,CPU则从T2起到T4,把数据送到总线上,并写入存储器单元或IO端口。
图3.6(b)是具有空闲状态的总线周期。如果在一个总线周期之后不立即执行下一个总线周期,即CPU此时执行的指令不需要对存储器或I/O端口进行访问,且目前指令队列满而不需要到内存中读指令,那么系统总线就处于空闲状态,即执行空闲周期。在空闲周期中可包括一个或多个时钟周期,在此期间,在高4位的总线上,CPU仍驱动前一个总线周期的状态信息:而在低16位的总线上,则根据前一个总线周期是读还是写周期来决定。若前个周期为写周期,CPU会在总线的低16位继续驱动数据信息:若前一个总线周期为读周期,CPU则使总线的低16位处于浮空状态。在空闲周期,尽管CPU对总线进行空操作,但在CPU内部,仍然进行着有效的操作,如执行某个运算、在内部寄存器之间传送数据等。
图3.6(c )是具有等待状态的总线周期。在T状态结束之前,CPU测试READY信号线,
如果为有效的高电平,则说明数据已准备好,可进入T状态;若READY为低电平,则说明数据没有准备好,CPU在T,之后插入1个或多个等待周期Tw。直到检测到READY为有效高电平后,CPU会自动脱离Tw而进入T,状态。这种延长总线周期的措施允许系统使用低速的存储器芯片。
3.2.4 8086/8088引脚及其功能
8086/8088 CPU外部都采用40引脚双列直插式封装,如图3.7所示。