您好,欢迎访问三七文档
当前位置:首页 > 中学教育 > 初中教育 > 只是与写作相关(苏力)
第2章微型计算机系统的微处理器第2章:微型计算机系统的微处理器——教学重点汇编语言程序段8086/8088的编程结构引脚信号两种工作模式通用寄存器及其使用存储器的结构及分段管理8086/8088的I/O组织2.18088/8086CPU的编程结构8086的编程结构从功能上分成两个单元1.总线接口单元BIU负责CPU对存储器和外设进行数据读写如:取指令、存取操作数和存结果2.执行单元EU负责指令的译码、执行和数据的运算两个单元相互独立,分别完成各自操作,还可以并行执行,实现指令预取(指令读取和执行的流水线操作)1.总线接口部件BIU(1)结构组成:四个段地址寄存器,即CS——16位的代码段寄存器,DS——16位的数据段寄存器,ES——16位的扩展段寄存器,SS—一16位的堆栈段寄存器;16位的指令指针寄存器IP用来确定代码段中当前将要被执行的指令的偏移地址,由自动加1功能;IP由控制程序分支的指令、中断以及异常等隐含控制,用户程序不能直接控制IP20位的地址加法器:形成20位的物理地址(取指令时:CS*16+IP)6字节的指令队列:存放预取的指令输入输出控制逻辑:实现对I/O端口和存储器的读写控制(2)总线接口部件BIU的具体工作取指令预取指令配合EU执行指令,存取操作数和运算结果注:如果EU有存取数据请求时,BIU已经准备好取指令,那么BIU应先完成取指令操作,然后进行操作数的读写。2.执行部件EU组成部分算术逻辑单元ALU标志寄存器FR四个通用寄存器,即AX、BX、CX、DX;四个专用寄存器,即基数指针寄存器BP,堆栈指针寄存器SP,源变址寄存器SI,目的变址寄存器DIEU的执行控制部分8086的复位和启动操作是通过RESET引脚上的触发信号来实现的。启动时,代码段寄存器CS和指令指针寄存器IP分别初始化为FFFFH和0000H。所以在复位之后再重新启动时,便从内存的FFFF0H处开始执行指令。因此,一般在FFFF0H处存放一条无条件转移指令,转移到系统程序的入口处。这样,系统一旦启动,便自动进入系统程序。指令指针(IP)0000HCS寄存器FFFFHDS寄存器0000HSS寄存器0000HES寄存器0000H指令队列空标志寄存器及其他寄存器0000H3.8086/8088处理器的启动和程序执行过程4.8086/8088的总线周期的概念总线周期:8086CPU通过总线对存储器或I/O端口进行一次访问所需要的时间称为一个总线周期,为了实现对存储器或I/O端口读写操作,就需要CPU的总线接口部件执行一个总线周期;一般包括4个基本时钟周期。时钟周期:由CLK产生的时钟信号的周期,是CPU计时的最小单位。指令周期:执行一条指令所需要的时间。T1:CPU向地址/数据复用总线发送地址信息,指出要寻址的存储单元或外设的端口地址T2:CPU撤销地址,总线的低16位处于高阻状态,为传输数据准备,总线的高4位输出状态信息T3:高4位的保持总线状态信息,总线的低16位出现CPU读入或写出的数据T4:总线周期结束Ti空闲状态:放在一个总线周期之后,当指令队列是满的,EU又没有访问总线的要求Tw:总线等待周期,当存储器和或I/O设备不能及时配合CPU传送数据时,存储器或I/O设备会通过“REDAY”信号线在T3启动前(T3的下降沿)发出低电平,表示未准备好数据;那么CPU就会在T3状态后插入等待周期,Tw与T3周期的状态相同;直到“REDAY”为高电平,从而使CPU脱离Tw状态2.2.1最小模式和最大模式的概念最小模式,就是在系统中只有8086一个微处理器。在这种系统中,所有的总线控制信号都直接由8086CPU产生,因此,系统中的总线控制电路被减到最少。这些特征就是最小模式名称的由来最大模式用在中等规模的或者大型的8086系统中。在最大模式系统中,总是包含有两个(用于数值运算的8087和用于I/O操作的8089)或多个协处理器(还增加了总线控制器8288),其中一个主处理器就是8086,其他的处理器称为协处理器,它们是协助主处理器工作的2.28086/8088CPU的引脚信号和工作模式12345678910111213141516171819204039383736353433323130292827262524232221GNDA14A13A12A11A10A9A8AD7AD6AD5AD4AD3AD2AD1AD0NMIINTRCLKGNDVCCAD15AD16/S3AD17/S4AD18/S5AD19/S6SS0*(HIGH)MN/MX*RD*HOLD(RQ)*/GT0*)HLDA(RQ1*/GT1*)WR*(LOCK*)M/IO(S2*)DT/R*(S1*)DEN(S0)ALEINTATEST*READYRESET80882.2.28086的公用引脚信号AD15~AD0地址/数据复用引脚(16根)A19/S6~A16/S3(Address/Status)地址/状态复用引脚(4根)/S7高8位数据总线允许/状态复用引脚(1根)读信号输出(1根)READY(Ready)“准备好”信号输入(1根)测试信号(1根)INTR(InterruptRequest)可屏蔽中断请求信号输入(1根)NMI(Non-MaskableInterrupt)非屏蔽中断输入引脚(1根)RESET(Reset)复位信号输入(1根)CLK(Clock)主时钟输入(1根)MN/最小/最大模式控制信号输入(1根)GND、VCC接地和电源端(3根)BHERDTESTMX2.2.38086的最小模式M/(Memory/InputandOutput)存储器/输入输出控制信号输出(Write)写信号输出(InterruptAcknowledge)中断响应信号输出ALE(AddressLockEnable)地址锁存允许信号DT/(DataTransmit/Receive)数据收发信号输出(DataEnable)数据允许信号HOLD(HoldRequest)总线保持请求信号输入HLDA(HoldAcknowledge)总线保持响应信号输出INTADENRIOWR1.最小模式下的专用引脚信号(8根)8086的最大模式QS1、QS0(InstructionQueueStatus)指令队列状态信号输出210(BusCycleStatus)总线周期状态信号输出(Lock)总线封锁信号输出10(Request/Grant)总线请求信号输入/总线请求允许信号输出SSLOCKGTRQSGTRQ2.38088/8086的寄存器结构8088/8086的寄存器组有8个通用寄存器4个段寄存器1个标志寄存器1个指令指针寄存器他们均为16位!汇编语言程序员看到的处理器,就是寄存器所以,一定要熟悉这些寄存器的名称和作用1.通用寄存器组8086有4个通用的16位数据寄存器AXBXCXDX4个数据寄存器还可以分成高8位和低8位两个独立的寄存器,这样又形成8个通用的8位寄存器AX:AHALBX:BHBLCX:CHCLDX:DHDL数据寄存器AX称为累加器(Accumulator)使用频度最高。用于算术、逻辑运算以及与外设传送信息等BX称为基址寄存器(BaseaddressRegister)常用做存放存储器地址CX称为计数器(Counter)作为循环和串操作等指令中的隐含计数器DX称为数据寄存器(Dataregister)常用来存放双字长数据的高16位,或存放外设端口地址2.指针和变址寄存器指针寄存器用于寻址内存堆栈内的数据SP为堆栈指针寄存器(StackPointer),指示堆栈段栈顶的位置(偏移地址)BP为基址指针寄存器(BasePointer),表示数据在堆栈段中的基地址SP和BP寄存器与SS段寄存器联合使用以确定堆栈段中的存储单元地址堆栈(Stack)是主存中一个特殊的区域,采用“先进后出”或“后进先出”存取操作方式、而不是随机存取方式。用8088/8086形成的微机系统中,堆栈区域被称为堆栈段变址寄存器16位变址寄存器SI和DI常用于存储器变址寻址方式时提供地址SI是源地址寄存器(SourceIndex)DI是目的地址寄存器(DestinationIndex)在串操作类指令中,SI、DI还有较特殊的用法现在不必完全理解,以后会详细展开3.段寄存器8088有4个16位段寄存器CS(代码段)指明代码段的起始地址SS(堆栈段)指明堆栈段的起始地址DS(数据段)指明数据段的起始地址ES(附加段)指明附加段的起始地址每个段寄存器用来确定一个逻辑段的起始地址,每种逻辑段均有各自的用途(1)代码段寄存器CS(CodeSegment)代码段用来存放程序的指令序列代码段寄存器CS存放代码段的段地址指令指针寄存器IP指示下条指令的偏移地址处理器利用CS:IP取得下一条要执行的指令(2)堆栈段寄存器SS(StackSegment)堆栈段确定堆栈所在的主存区域堆栈段寄存器SS存放堆栈段的段地址堆栈指针寄存器SP指示堆栈栈顶的偏移地址处理器利用SS:SP操作堆栈顶的数据(3)数据段寄存器DS(DataSegment)数据段存放运行程序所用的数据数据段寄存器DS存放数据段的段地址各种主存寻址方式(有效地址EA)得到存储器中操作数的偏移地址处理器利用DS:EA存取数据段中的数据(4)附加段寄存器ES(ExtraSegment)附加段是附加的数据段,也保存数据:附加段寄存器ES存放附加段的段地址各种主存寻址方式(有效地址EA)得到存储器中操作数的偏移地址处理器利用ES:EA存取附加段中的数据串操作指令将附加段作为其目的操作数的存放区域如何分配各个逻辑段程序的指令序列必须安排在代码段程序使用的堆栈一定在堆栈段程序中的数据默认是安排在数据段,也经常安排在附加段,尤其是串操作的目的区必须是附加段数据的存放比较灵活,实际上可以存放在任何一种逻辑段中演示段超越前缀指令没有指明时,一般的数据访问在DS段;使用BP访问主存,则在SS段默认的情况允许改变,需要使用段超越前缀指令;8088指令系统中有4个:CS:;代码段超越,使用代码段的数据SS:;堆栈段超越,使用堆栈段的数据DS:;数据段超越,使用数据段的数据ES:;附加段超越,使用附加段的数据示例段超越的示例没有段超越的指令实例:MOVAX,[2000H];AX←DS:[2000H];从默认的DS数据段取出数据采用段超越前缀的指令实例:MOVAX,ES:[2000H];AX←ES:[2000H];从指定的ES附加段取出数据总结段寄存器的使用规定访问存储器的方式默认可超越偏移地址取指令CS无IP堆栈操作SS无SP一般数据访问DSCSESSS有效地址EABP基址的寻址方式SSCSESDS有效地址EA串操作的源操作数DSCSESSSSI串操作的目的操作数ES无DI4.指令指针寄存器IP(InstructionPointer)为指令指针寄存器,指示主存储器指令的位置随着指令的执行,IP将自动修改以指示下一条指令所在的存储器位置IP寄存器是一个专用寄存器IP寄存器与CS段寄存器联合使用以确定下一条指令的存储单元地址5.标志寄存器标志(Flag)用于反映指令执行结果或控制指令执行形式8088处理器的各种标志形成了一个16位的标志寄存器FLAGS(程序状态字PSW寄存器)程序设计需要利用标志的状态标志寄存器-分类状态标志--用来记录程序运行结果的状态信息,许多指令的执行都将相应地设置它CFZFSFPFOFAF控制标志--可由程序根据需要用指令设置,用于控制处理器执行指令的方式DFIFTFOF111512DF10IF9TF8SF7ZF65AF43PF21CF0标志寄存器FLAGS(1)进位标志CF(CarryFlag)当运算结果的最高位有进位(加法)或借位(减法)时,进位标志置1,即CF=1;否则CF=01)00111010H+01111100H=1010110H,最高位向前没有进位:CF=02)10101010H+01111100H=(1)00100110H,最高位向前有进位:CF=1(2)零标志ZF(Zero
本文标题:只是与写作相关(苏力)
链接地址:https://www.777doc.com/doc-3409951 .html