3.3 8086微型计算机系统
3.3.1 8086微型计算机系统的硬件组成
1.系统硬件组成的特点
8086微型计算机系统的硬件组成除了包括8086微处理器外,还需要其他的部件。8086不同的工作模式对系统的硬件组成有不同的要求,但有以下共同之处。
(1)时钟发生器8284
8086内部没有时钟发生器。8284是Intel公司专为8086/8088系统设计配套的单片时钟发生器。它能产生系统时钟,对READY信号和RESET信号进行同步。不管外部就绪信号和复位信号何时到来,8284都能将其同步在时钟后沿时输出READY信号和RESET信号给CPU。
(2)地址锁存器8282
8086的A19/S6~A16/S3和AD15~AD0是复用信号,需要地址锁存器将地址信息保存起来,为外接存储器或外设提供地址信息。为了锁存地址信号,通常采用3片8282作为地址锁存器。系统中,8282的端接地,保持内部三态门常通,仅作锁存器用。
(3)数据收发器8286
当系统所连的存储器和外设较多时,需要增加数据总线的驱动能力。选用2片8286作为16位数据收发器。系统中,8286的端接8086的端,用作数据允许信号;8286的T端接8086的端,用作数据发送/接收选择信号。
2.最小模式系统的硬件组成
把引脚连至电源,则8086工作于最小模式。最小模式也称为单处理器模式。图3-5所示为8086在最小模式下的典型配置。
图3-5 8086在最小模式下的典型配置
3.最大模式系统的硬件组成
把引脚接地,则8086工作于最大模式。最大模式就是多处理器系统模式。如图3-6所示为8086在最大模式下的典型配置。
最大模式与最小模式的主要区别就是在最大模式下,需要增加一片8288来对8086CPU发出的控制信号进行变换和组合,以得到对存储器或I/O端口的读/写信号和对锁存器、总线收发器的控制信号。8288是总线控制器,能够提高控制总线的驱动能力。在最大模式下,8288接收8086执行指令期间提供的状态信号、和,在时钟CLK信号的控制下,对、和译码后产生各总线控制、命令控制需要的时序信号。
图3-6 8086在最大模式下的典型配置
3.3.2 8086微型计算机系统的存储器组织
1.存储器空间
在8086微型计算机系统中,存储器按字节为单位进行组织和分配地址。即每个字节为一个内存单元,它具有唯一的地址码。由于8086有20根地址线,因此,具有220=1MB的存储空间。这1MB的内存单元按照00000H~FFFFFH来编址,这个唯一的地址码称为物理地址。物理地址就是实际地址,它是20位二进制地址值,是唯一标识1MB存储空间内的某一个字节单元的地址。
8086的1MB存储器实际上被分成两个512KB的存储体,分别叫做奇体和偶体。奇体单元的地址是奇数,偶体单元的地址是偶数。奇体的数据线与系统数据总线的高8位AD15~AD8相连,偶体的数据线与系统数据总线的低8位AD7~AD8相连。地址线A19~A16可以同时寻址奇体和偶体,和A0作为奇体和偶体的选择信号。如表3-5所示,时选中奇体;A0=0时选中偶体。
8086存储器的物理组织虽然分成了奇体和偶体,但是在逻辑结构上,存储单元还是按地址顺序排列的。存储单元中存放的信息,称为该存储单元的内容,有字节、字和双字。8086规定,以低8位(低字节)所在单元的地址作为字或双字数据的地址,存放的顺序是:高字节数据放在高地址单元中,将低字节数据放在低地址单元中。
例如,如图3-7所示,20110H单元~20113H单元存放的内容依次是12H、34H、56H、78H,那么,(20110H)=12H表示字节单元20110H的内容是12H;(20110H)=3412H表示字单元20110H的内容是3412H;(20110H)=78563412H表示双字单元20110H的内容是78563412H。
2.存储器的分段管理
由于8086CPU提供20位地址,但8086中可用来存放地址的寄存器,如IP、SP、BX、SI等都是16位的,只能直接寻址64KB。为了寻址1MB存储空间,8086CPU采用了典型的存储器分段技术,即将整个存储器空间分为许多逻辑段,每个逻辑段的容量小于或等于64KB,如图3-8所示。段内地址是连续的,而逻辑段可以在整个存储空间浮动。各个逻辑段之间可以紧密相连,如图3-8中的段0和段1;也可以独立,如图3-8中的段3;也可以部分重叠,如图3-8中的段1和段2;也可以是完全重叠的,如图3-8中的段1和段4。
图3-7 存储单元示意图
图3-8 存储器的分段结构
分段后,对存储器的寻址操作不再直接用20位的物理地址,而是采用段地址加段内偏移地址的二级寻址方式。对于任何一个物理地址,可以唯一地被包含在一个逻辑段中,也可以包含在多个相互重叠的逻辑段中。
(1)段地址
在8086存储空间中,把16字节的存储空间称作一节(Paragraph)。8086规定各逻辑段从节的整数边界开始,即段首地址二进制值的低4位是0000。把段首地址的高16位称为段基址或段地址。段地址是16位无符号二进制数,可存放在段寄存器DS、CS、SS或ES中,分别对应数据段、代码段、堆栈段或附加段。
(2)偏移地址
把某一存储单元相对于段地址的段内偏移量称为偏移地址(也称有效地址EA)。偏移地址是16位无符号二进制数,可存放在IP、SP、BX、SI、DI、BP中或直接出现在指令中。
(3)逻辑地址
采用分段结构的存储器中,把通过段地址和偏移地址来表示的存储单元的地址称为逻辑地址,记为:
段地址:偏移地址
例如,某一单元的逻辑地址可表示为2100H∶0300H。逻辑地址是物理地址的一种表示方式,它不是唯一的。例如,与物理地址20110H对应的逻辑地址可以是2000H但是可以对应多个逻辑地址0110H,也可以是2011H∶0000H。这说明了一个存储单元仅有一个唯一的物理地址,但是可以对应多个逻辑地址。
(4)物理地址
物理地址(PA)是20位无符号二进制数,是CPU访问存储器的实际地址。每个存储单元对应一个物理地址。8086存储空间的物理地址范围是:00000H~FFFFFH。
8086汇编程序中采用逻辑地址来表示存储单元的地址。任何一个存储单元的20位物理地址可以按下式由逻辑地址变换得来,如图3-9所示。
物理地址=段地址×10H+偏移地址
例如,已知某存储单元的逻辑地址是:2000H∶1300H,那么它所在单元的物理地址PA=2000H×10H+1300H=20000H+1300H=21300H。
图3-9 物理地址的形成
3.3.3 8086微型计算机系统的I/O组织
8086CPU和外部设备之间是通过I/O接口进行联系的,从而达到相互间传输信息的目的。每个I/O芯片上都有一个端口或几个端口,一个端口往往对应于芯片上的一个寄存器或一组寄存器。微机系统要为每个端口分配一个地址,这个地址称为端口号。各个端口号和存储器单元地址一样,具有唯一性。
I/O端口有两种编址方式。
(1)统一编址
这种编址方式将I/O端口和存储单元统一编址,即把I/O端口也看作存储单元。这种编址方式的优点是:可以利用存储器的寻址方式来寻址I/O端口。缺点是:I/O端口占用了存储空间,而且进行I/O操作时,因地址编码较长,将导致速度较慢。
(2)独立编址
这种编址方式将I/O端口和存储单元分开编址,即I/O端口空间与存储空间相互独立。这种编址方式的优点是:不占用内存空间;使用I/O指令,程序清晰,很容易看出是I/O操作还是存储器操作;译码电路比较简单(因为I/O端口的地址空间一般较小,所用地址线也就较少)。缺点是:只能用专门的I/O指令,访问端口的方法不如访问存储器的方法多。
8086采用独立编址方式,利用AD15~AD0这16条地址线作端口地址,可访问最多达65536个8位I/O端口或32768个16位I/O端口。8086访问I/O端口时,A19~A16为0000。一个8位端口相当于一个存储器字节。任何两个相邻的8位端口可以组合成一个16位端口,类似于存储器中的字。
8086中,有专门的指令来访问I/O接口,如输入指令IN、输出指令OUT。这两条指令可以完成CPU和I/O接口之间的数据传输。指令IN和OUT的详细用法参见4.3.1节。