第2章微型计算机系统中的微处理器存储程序工作原理是指把程序存储在计算机内,使计算机能像快速存取数据一样地快速存取组成程序的指令。为实现控制器自动连续地执行程序,必须先把程序和数据送到具有记忆功能的存储器中保存起来,然后给出程序中第一条指令的地址,控制器就可依据存储程序中的指令顺序周而复始地取指令、译码、执行,直到完成全部指令操作为止,即控制器通过指令流的串行驱动实现程序控制2.1微型计算机的组成及工作原理2.1.1微型计算机基本结构(冯诺依曼结构)2.1.2微处理器CPU1、寄存器组2、算术逻辑单元ALU3、控制器(1)程序计数器PC(2)地址寄存器AR(3)数据寄存器DR(4)指令寄存器IR和指令译码器ID(5)时许部件2.1.3总线1、DB2、AB3、CB2.1.4存储器----P11通常指内存,有读、写操作2.1.5输入输出设备及其接口—P11输入输出接口2.28086的编程结构1.总线接口部件(BIU)2.执行部件EU3.“流水线”结构图2-38086的编程结构图1.总线接口部件(BIU)总线接口部件由下列各部分组成:(1)4个段地址寄存器;CS——16位的代码段寄存器;DS——16位的数据段寄存器;ES——16位的扩展段寄存器;SS——16位的堆栈段寄存器;(2)16位的指令指针寄存器IP;(3)20位的地址加法器;(4)6字节的指令队列缓冲器。执行部件的功能就是负责从指令队列取指令并执行。从编程结构图可见,执行部件由下列几个部分组成:(1)4个通用寄存器,即AX、BX、CX、DX;(2)4个专用寄存器:(3)标志寄存器FR;(4)算术逻辑单元ALU。2.执行部件EU3.“流水线”结构总线接口部件BIU和执行部件EU并不是同步工作的,两者的动作管理遵循如下原则:每当8086的指令队列中有2个空字节,BIU就会自动把指令取到指令队列中。而同时EU从指令队列取出一条指令,并用几个时钟周期去分析、执行指令。当指令队列已满,而且EU对BIU又无总线访问请求时,BIU便进入空闲状态。在执行转移、调用和返回指令时,指令队列中的原有内容被自动清除。第2章微处理器第2章微处理器4、8088和8086的区别1、指令队列长度8086为6个字节、8088为4个字节2、8086是16位机;8088是准16位机3、其他:如有些控制信号不同2.38086的寄存器结构按功能分为三类:一、通用寄存器二、段寄存器三、控制寄存器、标志寄存器通用寄存器数据寄存器(AX,BX,CX,DX)地址指针寄存器(SP,BP)变址寄存器(SI,DI)数据寄存器8088含4个16位数据寄存器,它们又可分为8个8位寄存器,即:AXAH,ALBXBH,BLCXCH,CLDXDH,DL数据寄存器特有的习惯用法AX:累加器。所有I/O指令都通过AX与接口传送信息,中间运算结果也多放于AX中;BX:基址寄存器。在间接寻址中用于存放基地址;CX:计数寄存器。用于在循环或串操作指令中存放计数值;DX:数据寄存器。在间接寻址的I/O指令中存放I/O端口地址;在32位乘除法运算时,存放高16位数。地址指针寄存器SP:堆栈指针寄存器,其内容为栈顶的偏移地址;BP:基址指针寄存器,常用于在访问内存时存放内存单元的偏移地址。BX与BP在应用上的区别作为通用寄存器,二者均可用于存放数据;作为基址寄存器,用BX表示所寻找的数据在数据段;用BP则表示数据在堆栈段。变址寄存器SI:源变址寄存器DI:目标变址寄存器变址寄存器常用于指令的间接寻址或变址寻址。特别是在串操作指令中,用SI存放源操作数的偏移地址,而用DI存放目标操作数的偏移地址。段寄存器用于存放相应逻辑段的段基地址CS:代码段寄存器。代码段存放指令代码DS:数据段寄存器ES:附加段寄存器SS:堆栈段寄存器:指示堆栈区域的位置存放操作数控制寄存器IP:指令指针寄存器,其内容为下一条要执行指令的偏移地址FLAGS:标志寄存器,存放运算结果的特征6个状态标志位(CF,SF,AF,PF,OF,ZF)3个控制标志位(IF,TF,DF)2.4存储器的使用2.4.1存储器的组织按字节存储,每个字节有唯一的物理地址;高位在高地址,低位在低地址对字的存放,如果低位是偶地址,则称为规则存放,否则为非规则存放8086的1M空间,分为两个512KB的高位库和低位库,分别和数据总线的D15-D8及D7-D0相连,通过BHE信号选择2.4.28086存储器的分段结构8086CPU中有四个段寄存器:CS,DS,SS和ES,这四个段寄存器存放了CPU当前可以寻址的四个段的基值,也即可以从这四个段寄存器规定的逻辑段中存取指令代码和数据。一旦这四个段寄存器的内容被设定,就规定了CPU当前可寻址的段,如图2-7所示。图2-7当前可寻址的存储器段(堆栈段和附加段重叠)2.4.38086存储器的逻辑地址与物理地址8086CPU中的每个存储元在存储体中的位置都可以使用实际地址和逻辑地址来表示。CPU访问存储器时,要形成20位的物理地址,即先找到某段,再找到该段内的偏移量。换句话说,CPU是以物理地址访问存储器的,如图2-8所示。图2-8逻辑地址与物理地址的关系8086存储器20位物理地址的形成在存储段划分时,段内地址是连续的,段与段之间是相互独立的。每个段的起始地址称段的基址,段基址必须是能被16整除的那些地址,即20位的段基址的低四位应当是0000。由于段起始地址的低四位为0,所以可用20位地址的高16位表示段的基址,存放在段基址寄存器中。段基址寄存器共四个:CS、DS、ES、SS。返回本节2.58086的引脚信号和工作模式2.5.18086的总线周期的概念T1状态:送地址T2状态:撤销地址T3状态:送数据Tw状态:等待T4状态:总线周期结束2.5.2中断操作和中断系统的概念1、8086的中断分类软硬件中断、内外部中断、可屏蔽和非屏蔽中断不可屏蔽中断请求中断控制逻辑INTn指令INTO指令除法出错(除零)单步中断断点中断8259……INTRn=2NMIn=4n=0n=1n=3可屏蔽中断请求2.5.2中断操作和中断系统的概念2、向量表的位置和结构位置:0段的0~3FF256个中断,每个中断占4个字节中断向量就是中断服务程序的入口地址2.5.2中断操作和中断系统的概念3、向量构成每个中断占4个字节例如:17H中断的入口地址放在5CH开始的单元4、中断类型码和中断向量所在位置之间的分布关系P222.5.3、8088CPU的引线及功能引脚定义的方法可大致分为::每个引脚只传送一种信息(RD等);引脚电平的高低不同的信号(IO/M等);CPU工作于不同方式有不同的名称和定义(WR/LOCK等);分时复用引脚(AD7---AD0等);引脚的输入和输出分别传送不同的信息(RQ/GT等)。主要引线(最小模式下):8088是工作在最小还是最大模式由MN/MX端状态决定。MN/MX=0工作于最大模式,反之工作于最小模式AD7---AD0:低8位地址和数据信号分时复用。在传送地址信号时为单向,传送数据信号时为双向。A19---A16:高4位地址信号,分时复用。A15---A8:输出8位地址信号。主要的控制和状态信号WR:写信号;RD:读信号;IO/M:为“0”表示访问内存,为“1”表示访问接口;DEN:低电平有效时,允许进行读/写操作;RESET:复位信号。[例]:当WR=1,RD=0,IO/M=0时,表示CPU当前正在进行读存储器操作。中断请求和响应信号INTR:可屏蔽中断请求输入端NMI:非屏蔽中断请求输入端INTA:中断响应输出端总线保持信号HOLD:总线保持请求信号输入端。当CPU以外的其他设备要求占用总线时,通过该引脚向CPU发出请求。HLDA:总线保持响应信号输出端。CPU对HOLD信号的响应信号。2.5.4微处理器工作模式1.最小工作模式由图2-13可知,在8086的最小模式中,硬件连接上有如下几个特点:(1)MN/引脚接+5V,决定了8086工作在最小模式。(2)有一片8234A,作为时钟发生器。(3)有三片8282或74LS373,用来作为地址锁存器。(4)当系统中所连接的存储器和外设比较多时,需要增加系统数据总线的驱动能力,这时,可选用两片8286或74LS245作为总线收发器。MX图2-138086CPU最小模式下的典型配置2.最大工作模式由图2-4可知,最大模式配置和最小模式配置有一个主要的差别:最大模式下多了8288总线控制器。图2-48086CPU最大工作模式下的典型配置2.68086的总线时序1.读周期的时序2.写周期的时序1.读周期的时序(图2-9)8086读总线周期一个基本的读周期一般包含如下几个状态:T1状态:T2状态:T3状态:Tw状态:T4状态:2.写周期的时序(图2-10)8086写总线周期作业P541、(1)、(3)、(4)、(6)、(8)、(9)、(10)2、(3)、(4)、(5)4、(5)、(6)