第二章8086系统结构案例
第2章 8086系统结构
2.1 8086CPU结构 2.2 8086CPU的引脚及其功能 2.3 8086存储器组织 2.4 8086系统配置
2.1 8086CPU结构
Inter 8086CPU是16位微处理器,它有16根数据线和20根地 址线,直接寻址空间为 220 ,即1MB。8088CPU内部结构与8086 基本相同但对外数据总线只有8条,称为准16位微处理器。 2.1.1 8086CPU的内部结构
SP寄存器在堆栈操作中使用,PUSH和POP指令是从SP 寄存器得到现行堆栈段的段内地址偏移量,所以称SP寄 存器为堆栈指针,SP始终指向栈顶。 寄存器SI和DI称为变址寄存器,通常与DS一起使 用,为访问现行数据段提供段内地址偏移量。 在串指令中,其中源操作数的偏移量存放在SI中, 目的操作数的偏移量存放在DI中,SI与DI的作用不能互 换,否则传送地址相反。 在串指令中,SI、DI均为隐含寻址,此时,SI和DS 联用,DI和ES联用。
∑ AH BH CH DH SI DI SP BP 16 位内部总线 8位 AL BL CL DL AX BX CX DX IP CS DS SS ES 内部暂存器
20 位地址总线 16 位总线
通 用 寄 存 器 组
运算暂存器
总线 控制 逻辑 电路
8086 总线
指令队列缓冲器 ALU EU 控制电路 1 2 3 4 5 6
TF(Trap Flag)——单步标志位。它是为调试程序而设定的 控制位。当该位置“1”时,8086 CPU处于单步状态,此时CPU 每执行完一条指令就自动产生一次内部中断,使用户能逐条跟 踪程序进行调试ห้องสมุดไป่ตู้当该位复位后,CPU恢复正常工作。
例2.2 将5394H与-777FH两数相加,并说 明其标志位状态: 0101 0011 1001 0100 + 1000 1000 1000 0001 ————————————— 1101 1100 0001 0101 运算结果为-23EBH,并置标志位为 CF=0,PF=0,AF=0,ZF=0,SF=1,OF=0。
本节主要内容讲解视 频
2.2 8086CPUD 引脚及其功能
8086/8088CPU根据它的基本性能,应包括20条地址 线,16条数据线,加上控制信号,电源和地线,芯片的引 脚比较多。但由于制造工艺的限制,8086/8088CPU芯片 采用40条引脚的双列直插式封装,因此部分引脚采用了 分时复用的方式。 另外8086/8088CPU可以工作在两种工作模式(最小模 式和最大模式),最小模式用于单机系统。系统中所需要 的控制信号全部由8086直接提供。最大模式用于多处理 机系统,系统中所需要的控制信号由总线控制器8288提 供。
2.1.2寄存器结构
寄存器用来存放运算过程中所需要的操作数地址、 操作数及中间结果。 8086微处理器内部包含有4组16位寄存器,它们分别 是通用寄存器组,指针和变址寄存器,段寄存器,指令 指针及标志位寄存器。如图2.2所示。
2. 8086 CPU的内部寄存器
数据寄存器 AX AH AL SP 指针与变址寄存器 堆栈指针寄存器
3.段寄存器
8086/8088CPU可直接寻址1MB的存储器空间,直接 寻址需要20位地址码,而所有内部寄存器都是16位的, 只能直接寻址64KB,因此采用分段技术来解决。将1MB的 存储空间分成若干逻辑段,每段最长64KB,这些逻辑段 在整个存储空间中可浮动。 8086/8088CPU内部设置了4个16位段寄存器,它们分 别是代码段寄存器CS、数据段寄存器DS、堆栈段寄存器 SS、附加段寄存器ES,由它们给出相应逻辑段的首地 址,称为“段基址”。 段基址与段内偏移地址组合形成20位物理地址,段 内偏移地址可存放在寄存器中,也可存放在存储器中 。
(2)16位指令指针寄存器IP:存放下一条要执行指令的 偏移地址。 (3)20位物理地址加法器:将16位逻辑地址变换成存储 器读/写所需要的20位物理地址,实际上完成地址加法 操作。 (4)6字节指令队列:预放6字节的指令代码。 (5)总线控制逻辑:发出总线控制信号。
2.指令执行部件EU 指令执行部件EU完成指令译码和执行指令的工作。 它由以下几个部分组成: (1)算术逻辑运算单元ALU:完成8位或16位的二进制运 算,16位暂存器可暂存参加运算的操作数。 (2)标志寄存器PSW:存放ALU运算结果特征。 (3)寄存器组:4个通用16位寄存器AX、BX、CX、DX,其 中AX又称累加器。4个专用16位寄存器:源变址寄存器 SI、目的变址寄存器DI、堆栈指针寄存器SP、基址指 针寄存器BP。 (4)EU控制器:取指令控制和时序控制部件。
(2) 3个控制标志位用来控制CPU的操作,由指令进行置位
和复位。 DF(Direction Flag)——方向标志位。它用以指定字符串处 理时的方向,当该位置“1”时,字符串以递减顺序处理,即地 址以从高到低顺序递减。反之,则以递增顺序处理。 IF(Interrupt enable Flag)——中断标志位。它用来控制8086 是否允许接收外部中断请求。若IF=1,允许CPU响应外部中断, 反之则不响应外部中断。 注意:IF的状态不影响非屏蔽中断请求(NMI)和CPU内部中断请 求。
在8086中,某些通用寄存器用作专门用途。例如, 串指令中必须用CX寄存器作为计数寄存器,存放串的长 度,同样,AX、BX、DX寄存器又可分别称为累加器、基 址寄存器及数据寄存器。
2.指针和变址寄存器
8086/8088CPU中,有一组4个16位寄存器,它们是基 址指针寄存器BP,堆栈指针寄存器SP,源变址寄存器SI 和目的变址寄存器DI。 这组寄存器存放的内容是某一段内地址偏移量,用 来形成操作数地址,主要在堆栈操作和变址运算中使用。 BP和SP寄存器称为指针寄存器,与SS联用,为访问现行 堆栈段提供方便。通常BP寄存器在间接寻址中使用,操 作数在堆栈段中,由SS段寄存器与BP组合形成操作数地 址。即BP中存放现行堆栈段中一个数据区的“基址” 的偏移量,所以称BP寄存器为基址指针。
含有偶数个1时,PF=1;否则PF=0。
AF(Auxiliary carry Flag)——辅助进位标志位。当执行一个
加法(或减法)运算,结果的低4位向高4位有进位(或借位)时,
AF=1;否则AF=0。一般用在BCD码运算中,判断是否需要十进 制调整。
ZF(Zero Flag)——全零标志位。若当前的运算结果为零, ZF=1;否则ZF=0。 SF(Sign Flag)——符号标志位。它和运算结果的最高位相同。 OF(Overflow Flag)——溢出标志位。当运算过程中产生溢 出时,OF=1;否则OF=0。
例2.1 代码段寄存器CS存放当前 代码段基地址,IP指令指针寄存器 存放了下一条要执行指令的段内偏 移地址,其中CS=2000H,IP=003AH. 通过组合,形成20位存储单元的寻 址地址为2003AH 。
代码段内存放可执行的指令代码,数据段和附加段 内存放操作的数据,通常操作数在现行数据段中,而在 串指令中,目的操作数指明必须在现行附加段中。堆栈 段开辟为程序执行中所要用的堆栈区,采用先进后出的 方式访问它。 各个段寄存器指明了一个规定的现行段,各段寄存 器不可互换使用。程序较小时,代码段、数据段、堆栈 段可放在一个段内,即包含在64KB之内,而当程序或数 据量较大时,超过了64KB,可以定义多个代码段或数据 段、堆栈段、附加段。 现行段由段寄存器指明段地址,使用中可以修改段 寄存器内容,指向其它段。有时为了明确起见,可在指 令前加上段超越的前缀字,以指定操作数所在段。
溢 出 标 志
中 断 允 许
1-结果为0 0-结果不为0
半 进 借 位 标 志
奇 偶 标 志
进 借 位 标 志
1-有进、借位
0-无进、借位
1-低4位向高4位有进、借位 0-低4位向高4位无进、借位
(1) 6个状态标志位的功能分别叙述如下: CF(Carry Flag)——进位标志位。当执行一个加法(或减法)运 算,最高位产生进位(或借位)时,CF为1;否则为0。 PF(Parity Flag)——奇偶标志位。该标志位反映运算结果低 8位中“1”的个数是偶数还是奇数。当指令执行结果的低8位中
标志寄存器 执行单元 (EU)
总线接口单元 (BIU)
图2.1 8086 CPU内部结构示意图
1.总线接口部件BIU 总线接口部件BIU是8086CPU与外部(存储器和I/O 端口)的接口,它提供了16位双向数据总线和20位地址 总线,完成所有外部总线操作。 BIU具有下列功能:地址形成、取指令、指令排队, 读/写操作数和总线控制。它由下列各部分组成: (1)16位段地址寄存器: CS-代码段寄存器 DS-数据段寄存器 ES-附加段寄存器 SS-堆栈段寄存器
微型计算机工作时,总是先从存储器中取指令,需要的话再取操作数, 然后执行指令,送结果。通常8位机是串行执行的,而16位机可并行操作。 8086 CPU由总线接口部件BIU和指令执行部件EU组成,BIU和EU的操作 是并行的。总线接口部件BIU完成取指令,读操作数,送结果,所有与外部 的操作由其完成。而指令执行部件EU从BIU的指令队列中取出指令,执行指 令,不必访问存储器或I/O端口。若需要访问存储器或I/O端口,也是由EU 向BIU发出访问所需要的地址,在BIU中形成物理地址,然后访问存储器或 I/O端口,取得操作数送到EU,或送结果到指定的内存单元或I/O端口。这种 并行工作方式,大大提高了系统工作效率。
这样,24脚~31脚的8条引脚在两种工作模式中具有
不同的功能。
2.2.1 8086/8088CPU在最小模式中引脚定义
8086CPU采用双列直插式的封装形式,具有40条引 脚,见图2.4。它采用分时复用的地址/数据总线,所以有 一部分引脚具有双重功能,即在不同时钟周期内,引脚
5.标志寄存器PSW
标志寄存器是一个16位的寄存器,8086共使用了9个有效 位,格式如图2.3所示。其中的6位是状态标志位: CF、PF 、 AF、ZF、CF和OF。 3位为控制标志位: TF、IF和DF。状态标 志位是当一些指令执行后,表征所产生数据的一些特征。而控 制标志位则可以由程序写入,以达到控制处理机状态或程序执 行方式的表征。