微机原理-教师课件第2章_第1页
微机原理-教师课件第2章_第2页
微机原理-教师课件第2章_第3页
微机原理-教师课件第2章_第4页
微机原理-教师课件第2章_第5页
已阅读5页,还剩74页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第二章:8086微处理器及其系统结构8086微处理器的结构8086微处理器引脚的功能8086系统的存储器组织8086的时钟和总线周期主要内容第一节8086微处理器的结构一、指令和程序机器指令1操作码操作数+……机器指令2机器指令n程序指令解释方式微处理器解释一条指令分为两个阶段: 取指:从内存中取出指令,明确指令规定的功能; 执行:分析指令要求实现的功能,读取所需要的操作数,执行指令规定的操作,并保存执行结果。

重叠解释取指1执行1取指2执行2取指3执行3取指4执行4取指5顺序解释取指1执行1取指2执行2取指3执行3取指4执行4时间8086采用重叠解释方式二、8086CPU内部结构123456内部暂存器

IP

ES

SS

DS

CS总线控制逻辑外部总线EU控制系统ALU标志寄存器

AHAL

BHBLCHCL

DHDL

SP

BP

SI

DI通用寄存器地址形成器指令队列缓冲器执行部件(EU)总线接口部件(BIU)16位20位8086:16位8088:8位8位16位AXBXCXDXALU数据总线数据总线地址总线段寄存器指令指针(8088:4个)总线:是连接多个功能部件或多个装置的一组公共信号线。按所传送信息的类型总线可分为:

数据总线DB(DataBus):传送数据信息的信号线

地址总线AB(AddressBus):传送地址信息的信号线

控制总线CB(ControlBus):传送控制信息的信号线

按在系统中的不同位置,总线还可分为:内部总线/外部总线总线的概念微机系统硬件结构图外部总线8086内部由两部分组成:执行单元(EU)总线接口单元(BIU)通用寄存器执行部件(ExecutionUnit)—EU状态标志寄存器FR150算术逻辑单元ALUAXBXCXDXSPBPSIDI150AHALBHBLCHCLDHDL87EU控制系统EU执行单元EU功能:

负责指令的执行

具体过程:1)EU从BIU的指令队列缓冲器中获得指令;2)执行该指令,完成指令规定的操作。总线接口部件(BusInterfaceUnit)—BIUCSDSSSES段寄存器IP指令指针寄存器20位的地址形成器BIU总线控制逻辑123456指令队列缓冲器总线接口部件BIU功能:实现8086CPU与存储器和外部设备之间的数据传送。具体过程:1)负责形成指令所在内存单元的物理地址;2)从内存指定区域取出指令送到指令队列缓冲器,或者从相应的内存或I/O端口读取指令所需要的操作数;3)指令执行完毕后将执行结果送入内存和I/O端口的指定位置。结构:指令队列缓冲器由6个8位寄存器组成。作用:是实现重叠解释指令的关键部件。工作原理:①缓冲器中只要有一条指令,EU就开始执行;②缓冲器中只要有两个字节为空,BIU便自动执行取指操作。③当EU执行完转移、调用和返回等切换程序流程的指令时,缓冲器中原来的内容将被清除,BIU从内存中新的位置开始重新预取指令填入队列中。 指令队列缓冲器地址发生器组成:地址加法器、指令指针IP和段寄存器。工作原理:段寄存器内容×16+偏移地址(IP或指令中给出的操作数地址)。作用:8086CPU地址总线有20位,而内部地址寄存器都是16位,需要加法器形成20位地址。三、8086CPU的寄存器结构DLDHCLCHBLBHALAH通用寄存器AXBXCXDXSPBPSIDI数据寄存器CSDSSSES变址寄存器指针寄存器堆栈指针基址指针指令指针标志寄存器代码段寄存器数据段寄存器堆栈段寄存器附加段寄存器段寄存器IPFLAG共有14个16位寄存器源变址寄存器目的变址寄存器累加器基址寄存器计数寄存器数据寄存器1.通用寄存器

数据寄存器(AX,BX,CX,DX)指针寄存器(SP,BP)变址寄存器(SI,DI)数据寄存器(AX,BX,CX,DX)8086含4个16位数据寄存器,它们又可分为8个8位寄存器,并可分别寻址,独立操作。累加器AXAH,AL基址寄存器BXBH,BL计数寄存器CXCH,CL数据寄存器DXDH,DL用于存放8位或16位的二进制操作数,这些操作数可以是参加操作的原始数据、运算得到的中间结果,也可以是操作数的地址。指针寄存器(SP,BP)SP(StackPointer)—堆栈指针寄存器,用来指示堆栈栈顶的位置。BP(BasePointer)—基址指针寄存器,用来存放在现行堆栈段中的一个数据区的基地址。10-48什么是堆栈?指针寄存器一般用来存放地址偏移量,用于堆栈操作中计算操作数的有效地址。变址寄存器(SI,DI)10-48SI(SourceIndex)—源变址寄存器,用来存放源操作数的偏移地址。DI(DestinationIndex)

—目的变址寄存器,用来存放目的操作数的偏移地址。

变址寄存器一般也用来存放地址偏移量,用于变址运算中计算操作数的有效地址。寄存器操作AX1)在字乘/字除指令中作累加器;2)在字I/O操作时作数据寄存器。AH1)在字节乘/字节除指令中存放结果;2)在LAHF中作目的寄存器。AL1)在字节乘/字节除指令中作累加器;2)在字节I/O操作时作数据寄存器;3)BCD、ASCII码数据运算时作累加器;4)在XLAT指令中作累加器。BX1)间接寻址时作地址寄存器和基址寄存器;2)在XLAT指令中作基址寄存器。CX1)串操作时作串长计数器;2)循环操作时作循环次数计数器。CL移位操作时作移位次数计数器。DX1)字乘/字除指令中作辅助寄存器;2)I/O指令间接寻址时作端口地址寄存器。SP堆栈操作时作堆栈指针。SI1)间接寻址时作地址寄存器和变址寄存器;2)串操作时作源变址寄存器。DI1)间接寻址时作地址寄存器和变址寄存器;

2)串操作时作目的变址寄存器。在某些指令中,以上各通用寄存器具有特定的用途。2.指令指针IP程序运行时,它始终指向EU要执行的下一条指令所在单元。当EU执行本条指令时,IP中的内容自动增量,以指向下一条指令所在的内存单元。※注意:程序中不能随意对IP进行存取操作,只有转移指令、子程序调用和返回指令以及中断处理时才能对IP的内容进行修改和设置。IP—指令指针寄存器,其内容为下一条要执行的指令的偏移地址。

8086系统对内存实行分段管理,在BIU中有4个16位的段寄存器,专门用于存放各段在内存中的起始地址(段基址)。这4个段寄存器是:①代码段寄存器CS(CodeSegment),指向当前代码段;②数据段寄存器DS(DataSegment),指向当前数据段;③附加段寄存器ES(ExtraSegment),指向当前附加段;④堆栈段寄存器SS(StackSegment),指向当前堆栈段。3.段寄存器标志寄存器位于EU中,它是一个16位的寄存器,但实际上只用了其中9位。4.标志寄存器F状态标志位:用于反映运算结果的特征控制标志位:用于对CPU某些操作实施控制

6个状态标志位(CF,SF,AF,PF,OF,ZF)3个控制标志位(IF,TF,DF)各标志位可分为两大类:标志寄存器的安排×××OFDFIFTFSFZF×AF×PF××CF1511109876543210进位标志奇偶标志半进位标志零标志符号标志中断标志单步标志溢出标志方向标志控制标志状态标志标志寄存器F(1)状态标志位进位标志CF(CarryFlag)---反映算术运算后最高位是否出现进位或借位,有则为“1”,无则为“0”。辅助进位标志AF(AuxiliaryFlag)---反映运算结果的低4位是否向高位产生进位或借位,有则为“1”,无则为“0”。奇偶标志PF(ParityFlag)---反映指令执行结果低8位数据中1的个数是否为偶数,若是则该位置“1”,否则置“0”。

零标志ZF(ZeroFlag)---反映运算结果是否为零,若是,则该位置“1”,否则置“0”。符号标志SF(SignFlag)---反映运算结果最高位的状态,并与运算结果最高位状态相同。表明了本次运算的结果是正还是负。溢出标志OF(OverflowFlag)---反映带符号数进行算术运算后是否有溢出,有则为“1”,无则为“0”。标志位:

运算结果最高位为0 ∴SF=0运算结果本身≠0 ∴ZF=0

低8位中1的个数为奇数个 ∴PF=0

最高位没有进位 ∴CF=0D3位向D4位无进位 ∴AF=0次高位向最高位没有进位,最高位向前没有进位,∴OF=0例:执行两个数的加法,分析对标志位的影响:2345H+3219H。(2)控制标志位方向标志DF(DirectionFlag)---用于控制串操作指令执行时的步进方向,该位为“1”,则串操作指令按地址递减的顺序对串进行操作,否则按地址递增的顺序进行操作。中断允许标志IF(InterruptFlag)---指示是否允许系统响应外部的可屏蔽中断请求,该位为“1”,表示允许(开中断),否则表示禁止(关中断)。陷阱标志TF(TraceFlag)---当该位为“1”时,CPU每执行完一条指令便自动产生一个内部中断,并转去执行一个中断服务程序,可以借助该中断服务程序来检查每条指令的执行情况,称为“单步工作方式”,常用于程序的调试。四、8088与8086在内部结构上的比较①外部数据总线:8086-16位8088-8位(称准16位)②指令队列:8086-6字节(当有2个字节变空时便执行取指)

8088-4字节(当有1个字节变空时便执行取指) 二、8086CPU内部结构123456内部暂存器

IP

ES

SS

DS

CS总线控制逻辑外部总线EU控制系统ALU标志寄存器

AHAL

BHBLCHCL

DHDL

SP

BP

SI

DI通用寄存器地址形成器指令队列缓冲器执行部件(EU)总线接口部件(BIU)16位20位8086:16位8088:8位8位16位AXBXCXDXALU数据总线数据总线地址总线段寄存器指令指针(8088:4个)第二节8086微处理器引脚的功能8086引脚图

GNDAD14AD13AD12AD11AD10

AD9

AD8

AD7

AD6

AD5

AD4

AD3

AD2

AD1

AD0

NMIINTRCLAKGAND12345403938373667353489101112131415161718192033323130292827262524232221VccAD15A16/S3A17/S4A18/S5A19/S6BHE/S7MN/MXRDHOLD(RQ/GT0)HLDA(RQ/GT1)WR(LOCK)M/IO(S2)DT/R(S1)DEN(S0)ALE(QS0)INTA(QS1)TESTREADYRESET8086 CPU40引脚DIP封装(双列直插)

引脚特点①采用分时复用技术,在不同时刻通过相同引脚传送不同的信息,从而减少了引脚数量。②在两种不同的工作方式下,部分引脚具有两种不同的功能定义。一、引脚的功能介绍

8086的40条引脚信号按功能分为4部分,即地址总线、数据总线、控制总线以及其它(时钟和电源)。微机系统硬件结构图CPU与其它设备的连接方式1.地址总线和数据总线数据总线:在CPU和内存(或I/O设备)之间传递数据,为16位双向三态总线。地址总线:传送CPU产生的内存单元(或I/O端口)的地址,为20位输出三态总线。双向传输单向传输①AD15~AD0地址/数据分时复用总线分时复用:每个总线周期的开始,用作地址总线的低16位,用于传输地址;其它时间作为数据总线,用于传输数据。②A19~A16/S6~S3

地址/状态分时复用总线在每个总线周期开始,用作地址总线的高4位;在总线周期的其它时间,这4条信号线指示CPU的状态。其中,S6恒为低电平;S5反映标志寄存器IF的当前值,S4和S3表示正在使用哪个段寄存器。S 4S 3状态(所使用的寄存器)00ES01SS10CS11DS在总线周期的开始,作为数据总线高半部分允许信号,与地址总线的最低位A0配合以决定传送的数据字中高字节是否有效。在总线周期的其它时间,该引脚输出备用状态信号S7。③BHE/S7——地址高允许/状态分时复用引脚2.控制总线

控制总线是传送控制信号的一组信号线,其中有些是输出线,用来传送CPU送至其它部件的控制命令;有些是输入线,由外部向CPU输入状态及请求信号。 8086的控制总线中有一条MN/MX线,即最小/最大方式控制线,用于决定8086的工作方式。当接+5V时,8086处于最小方式;当接地时,8086处于最大方式。①读控制信号RD,三态,输出。该信号为低时,表示CPU正在执行读操作,从外部输入数据。

有些引线的功能与方式无关,以下几条不受MN/MX影响的控制线:②准备就绪信号READY,输入。当被访问的部件(如内存)无法在CPU规定的时间内完成数据传送,该部件将CPU的READY置为低电平,从而使CPU进入等待状态。③可屏蔽中断请求信号INTR,输入。外部设备将该信号置为高电平,可以向CPU发出中断请求信号。④非屏蔽中断请求信号NMI,输入。当该引脚上产生从低电平到高电平的正跳变时,表示外部向CPU发出非屏蔽中断请求。⑤等待测试控制信号TEST,输入。CPU在执行WAIT指令时,每隔5个时钟周期对该信号进行一次测试,若为高电平,则CPU循环等待;否则,CPU脱离等待状态,继续执行后继指令。⑥复位信号RESET,输入。当其为高电平时,系统进入复位状态。3.其它信号①时钟信号CLK,输入,该信号为8086提供基本的定时脉冲。②电源Vcc,输入。要求接+5V。③地线GND。 二、8086工作方式及信号定义8086有最小和最大两种基本的工作方式,最小方式一般用于构成一个小型的单处理机系统,而最大方式一般用于多处理机系统。在最小方式下,8086微处理器提供系统所需的全部控制信号;在最大方式下,由总线控制器8288提供系统的总线控制信号。

M/IO—存储器/输入输出控制信号

输出,三态。用于指示当前CPU是访问存储器还是I/O端口。 DT/R

—数据发送/接收信号,

输出,三态。用于指示CPU是进行读操作还是写操作。最小工作方式下的信号定义:

DEN

—数据允许信号,输出,三态。用作系统中总线收发器的允许控制信号。最小工作方式下的信号定义:

HOLD

—保持请求信号,输入。用于对总线控制权的请求。

HLDA

—保持响应信号,输出。用于对总线控制权的应答。最小工作方式下的信号定义:

ALE—地址锁存允许信号(输出)。8086在总线周期的开始通过地址总线输出地址的同时,通过该引脚输出一个正脉冲,其下降沿用于将地址信息打入外部的地址锁存器中。最小工作方式下的信号定义:INTA

—中断响应信号(输出,三态)。当8086响应来自INTR引脚的可屏蔽中断请求时,通过该引脚输出连续的两个负脉冲。WR—写控制信号,输出,三态。用于指示CPU在对存储器或I/O进行写操作。8086最小方式下的基本配置

时钟发生器CLKREADYRESETMN/MXWR

M/IO ALE BHE A19~A16AD15~AD0

地址锁存器

总线收发器

DENDT/R存储器I/O接口VCC8086CPU数据总线地址总线BHE控制总线RD时钟发生器:为8086(8088)以及其它外设芯片提供所需的时钟信号。常用的时钟发生器/驱动器芯片为8284。8086最小方式下的基本配置

时钟发生器CLKREADYRESETMN/MXWR

M/IO ALE BHE A19~A16AD15~AD0

地址锁存器

总线收发器

DENDT/R存储器I/O接口VCC8086CPU数据总线地址总线BHE控制总线RD要锁存的信息共有21位,所以至少需要3片锁存器芯片,每片锁存8位。地址锁存器:用来锁存地址总线(AD15~AD0)和(A19~A16)的地址信息以及BHE信息。常用的地址锁存器有Intel8282、Intel8283、74LS273、74LS373等。当ALE有效时,CPU输出的地址被打入锁存器并直接输出,形成地址总线。8086最小方式下的基本配置

时钟发生器CLKREADYRESETMN/MXWR

M/IO ALE BHE A19~A16AD15~AD0

地址锁存器

总线收发器

DENDT/R存储器I/O接口VCC8086CPU数据总线地址总线BHE控制总线RD总线收发器:用来对AD15~AD0上的数据进行缓冲和驱动,形成数据总线,并控制数据传送的方向。常用的总线收发器有74LS245、Intel8287、Intel8286等。总线收发器是8位双向三态缓冲器,16位数据需用2片总线收发器。DEN输出允许信号;DT/R控制数据传送的方向。第三节8086系统的存储器组织预备知识1K=1024=2101M=1024K=220

1G=1024M=230位(bit比特,简写为b):1个二进制位字节(Byte,简写为B):8个二进制位,1Byte=8bit字(Word):16位二进制位,2个字节,1Word=2Byte=16bit双字(DoubleWord):32位二进制位数据与指令的存储与访问地址内容000000100B110000000B200010001B………25500001111B………地址是数据存放的门牌号码是标明数据所在位置的唯一代号每个地址空间可以存放8位二进制数。假设共有n个地址空间,则称为n×8位的读写存储器。内存示意图所有CPU可以访问的数据与指令都以二进制数的形式存放在内存中一、存储器的分段管理

8086微处理器内部数据通路和寄存器均为16位,内部ALU只能进行16位数据的运算,在程序中也只能使用16位地址,直接寻址范围局限在216=65536(64K)字节,为了能寻址1M字节地址空间,必须对内存实行分段管理。为什么要分段管理?1.分段方法①1M存储空间分成若干个逻辑段,每一段64K②段与段之间可以连续排列、部分重叠、断续排列。代码段、堆栈段、数据段和附加段。

每个段第一个字节的位置称为“段起始地址”,段起始地址是一个能被16整除的数,即二进制数的最后4位必须是0。段起始地址中的高16位(段基值)存放于相应的段寄存器中。2.物理地址与逻辑地址物理地址——又称实际地址PA(PhysicalAddress),是CPU和存储器电路进行数据交换时所采用的地址。逻辑地址——程序员在程序中使用的地址。逻辑地址=段基值:段内偏移量相对于该段起始单元的距离需要访问的单元在哪一个段都是16位无符号数,合称为32位地址指针3.物理地址的形成方法物理地址=段基址

16+偏移地址(即左移4位)操作类型隐含的段基值可替换的段基址偏移地址取指令CS无IP堆栈操作SS无SPBP用作基址寄存器SSCS、DS、ESEA通用数据读写DSCS、SS、ESEA字符串操作(源地址)DSCS、SS、ESSI字符串操作(目的地址)ESCS、SS、DSDI程序执行过程中需要访问内存时,必须提供其逻辑地址。EA(EffectiveAddress)为有效地址,相当于段内偏移量。表2-5

逻辑地址的来源二、存储器组织每个内存单元存储一个字节的数据,并具有唯一的20位地址。存放16位的字数据,需占用连续的两个单元,其中高字节存放在高地址,低字节存放在低地址,并以低地址作为该字数据的字地址。存储32位的地址指针,偏移地址存入地址较小的单元,段基值存入地址较大的单元。字节数据12H12H××××××20000H20001H20002H20003H字数据3412H20000H20001H20002H20003H

12H 34H××××20000H20001H20002H20003H地址指针7856H:3412H12H34H56H78H规则字与非规则字1M字节的内存单元分为高位库和低位库(各512K个单元)。低位库中的所有单元地址为偶数,与系统数据总线低8位相连;

高位库中的所有单元地址为奇数。与系统数据总线高8位相连。规则字:从地址为偶数的单元开始存放的字数据;非规则字:从地址为奇数的单元开始存放的字数据。字数据在内存中应尽量按规则字格式存放。20001H20003H20005H20000H高位库低位库规则字1234H34H××20002H××20004H12H××××20002H20001H20003H20005H高位库低位库非规则字1234H××20000H12H××20004H34H××××三、堆栈堆栈是按照“后进先出”原则进行读/写的一段特殊内存区域,用于暂存数据。堆栈段最多包含64K个单元。SS中存放堆栈段的首地址,SP中存放栈顶单元的偏移地址。8086CPU规定堆栈操作总是按字进行。堆栈的操作:入栈(PUSH)与出栈(POP)入栈(PUSH):SP的内容先减2,再将内容推入堆栈;出栈(POP):先将栈顶内容弹出,SP的内容再加2。入栈和出栈操作遵循“先进后出”(FILO)的原则。例1.假如当前SS=C000H.堆栈段<64K,SP=1000H,指出当前栈顶在存储器中的位置。sp……C1000C0000解:当前栈顶在存储器中的地址为:

SS×16+SP=C1000H例2.上例中若AX=3322H,BX=1100H,CX=6655H,执行指令PUSHAX,PUSHBX,再执行指令POPCX,此时堆栈中内容发生什么变化,AX,BX,CX中的内容是什么?C00002233sp栈顶0011C0FFCC0FFEC10003322PUSHAX1100PUSHBXspC00002233栈顶0011C0FFCC0FFEC10001100POPCX……例:课本P60 假设现在需要将AX=2233H和BX=4455H依次推入堆 栈。图(a)是执行该入栈操作前的情况,由于SS=

1050H,SP=0008H,因此堆栈段首地址为10500H, 当前栈顶单元地址为SS×16+SP=10508H。在完成上 述操作后执行出栈操作,将当前栈顶单元的内容弹出 到BX中。操作情况如下图所示。

10500H10501H10502H10503H10504H10505H10506H10507H10508H10509H

××××1000栈顶10504H5510505H10506H443310507H10508H10509H

22××××100050SSSP

10500H 10501H 10502H栈顶10503H10500H10501H10502H10503H10504H3310505H10506H10507H10508H10509H

22××××10000650SSSP栈顶08SP50SS04操作前的情况入栈后的情况出栈后的情况第四节8086的时钟和总线周期基本概念计算机工作过程:在统一的时钟控制下,按时序一步一步地执行指令的过程。①指令周期(InstructionCycle):执行一条指令所需的时间称为指令周期。不同指令的指令周期的长短是不同的。②总线周期(BusCycle):

CPU每占用一次总线,完成一次访问存储器或I/O端口的操作所需要的时间,称作一个总线周期。每条指令的执行过程至少需要一个总线周期,大多数指令都需要多个总线周期(读指令代码、读操作数、存执行结果

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论