微机原理与接口技术第2章.ppt

上传人:桔**** 文档编号:568477788 上传时间:2024-07-24 格式:PPT 页数:42 大小:398.50KB
返回 下载 相关 举报
微机原理与接口技术第2章.ppt_第1页
第1页 / 共42页
微机原理与接口技术第2章.ppt_第2页
第2页 / 共42页
微机原理与接口技术第2章.ppt_第3页
第3页 / 共42页
微机原理与接口技术第2章.ppt_第4页
第4页 / 共42页
微机原理与接口技术第2章.ppt_第5页
第5页 / 共42页
点击查看更多>>
资源描述

《微机原理与接口技术第2章.ppt》由会员分享,可在线阅读,更多相关《微机原理与接口技术第2章.ppt(42页珍藏版)》请在金锄头文库上搜索。

1、第第2章章16位和位和32位微处理器结构位微处理器结构1本章主要内容l8086微处理器l80286、80386lPentium2Intel 8086 微处理器的主要内容l8086的编程结构,尤其是寄存器组;l8086标志寄存器各个标志的含义;l8086的存储器编址,存储器的分段结构32.1.1 CPU的内部组成的内部组成l运算器 主要功能:对数据进行算术和逻辑运算。这些功能由算术逻辑单元(ALU)来实现;l寄存器组 寄存器可以存放数据和地址,也可以存放控制信息和状态信息。 CPU中寄存器的数量对CPU的运行速度影响很大。 寄存器从应用的角度可以分为:通用寄存器、专用寄存器,有以下几种类型:数据

2、寄存器、地址寄存器、状态标志寄存器、控制寄存器等。4l控制器 控制器是指挥与控制计算机各功能部件协同工作,自动执行计算机程序的部件。 控制器一般是由指令指针寄存器IP、指令寄存器IR、指令译码器ID、控制逻辑电路和时钟控制电路等组成。52.1.2 16位微处理器80868086的编程结构l8086:Intel系列16位微处理器 数据总线:16位,内部寄存器,ALU都是16位的 地址总线:20位,以字节为单位对存储器进行编址,可寻址220 即1M字节。 问题:内部寄存器、运算器为16位,如何产生20位地址?l编程结构面向程序设计和应用角度的CPU结构671.总线接口部件(BIU)总线接口单元总线

3、接口单元总线接口单元总线接口单元BIUBIU的任务:的任务:的任务:的任务:总线接口部件负责与存储器、总线接口部件负责与存储器、总线接口部件负责与存储器、总线接口部件负责与存储器、I/OI/O端口传送数据端口传送数据端口传送数据端口传送数据 读读读读指指指指令令令令指令队列出现空字节(80881个空字节,80862个空字节)时,从内存取出后续指令。BIUBIU取取指指令令时时,并并不不影影响响EUEU的执行,两者并行工作,大大提高了的执行,两者并行工作,大大提高了CPUCPU的执行速度。的执行速度。 读操作数读操作数读操作数读操作数EU需要从内存或外设端口读取操作数时,根据EU给出的地址从内存

4、或外设端口读取数据供EU使用。 写操作数写操作数写操作数写操作数EU的运算结果、数据或控制命令等由BIU送往指定的内存单元或外设端口。8总线接口部件(BIU)的组成l4个16位段地址寄存器 CS 16位的代码段寄存器 DS 16位的数据段寄存器 ES 16位的附加段寄存器 SS 16位的堆栈段寄存器l16位的指令指针寄存器IP (Instruction Pointer)l20位的地址加法器 利用16位的段寄存器和另一个16位地址寄存器值,形成20位的物理地址,送20位地址总线。l6字节的指令队列缓冲器l总线控制电路CPU与外界总线联系的转接电路包括三组总线:20位地址总线,16位双向数据总线和

5、一组控制总线91)存储器的分段10代码段寄存器代码段寄存器代码段寄存器代码段寄存器CSCS存储程序当前使用的代码段的段地址。代码段用来存放程序的指令代码。下一条要读取指令在代码段中的偏移地址由指令指针寄存器IP提供; 数据段寄存器数据段寄存器数据段寄存器数据段寄存器DSDS用来存放程序当前使用的数据段的段地址。一般来说,程序中所用到的原始数据、中间结果以及最终结果都存放在数据段中; 堆栈段寄存器堆栈段寄存器堆栈段寄存器堆栈段寄存器SSSS用来存放程序当前所使用的堆栈段的段地址。堆栈是在存储器中开辟的一个特定区域; 附加数据段寄存器附加数据段寄存器附加数据段寄存器附加数据段寄存器ESES用来存放

6、程序当前使用的附加数据段的段地址。附加数据段通常用于存放字符串操作时的目的字符串。程序员在编写汇编语言源程序时,应该按照上述规定将程序的程序员在编写汇编语言源程序时,应该按照上述规定将程序的各个部分放在规定的段内。各个部分放在规定的段内。每个源程序必须至少有一个代码段每个源程序必须至少有一个代码段,而,而数据段、堆栈段和附加数据段则根据程序的需要决定是否设置。数据段、堆栈段和附加数据段则根据程序的需要决定是否设置。 112 2)指令指针寄存器)指令指针寄存器)指令指针寄存器)指令指针寄存器指令指针寄存器指令指针寄存器指令指针寄存器指令指针寄存器IPIP用来存放下一条要读取的指令在代码段中的偏移

7、地址。IP在程序运行中能自动加1修正,从而使其始终存放的是下一条要读取的指令在代码段的偏移地址。由于由于CS和和IP的内容决定了程序的执行顺序,因此程序员不能直接用赋值的内容决定了程序的执行顺序,因此程序员不能直接用赋值指令对其内容进行修改。指令对其内容进行修改。有些指令能使IP和CS的值改变(如跳转指令)或使其值压入堆栈或从堆栈中弹出恢复原值(如子程序调用指令和返回指令)。12 3)20位地址加法器位地址加法器8086/8088CPU在对存储单元进行访问以读取指令或读/写操作数时,必须在地址总线上提供20位的地址信息,以便选中对应的存储单元。那么,CPU是如何产生20位地址的呢?CPU提供的

8、用来对存储单元进行访问的20位地址是由BIU中的地址加法器产生的。13存储器中每个存储单元的地址可有以下两种表示方式:逻辑地址:逻辑地址:逻辑地址:逻辑地址:其表达形式为“段地址:段内偏移地址段地址:段内偏移地址段地址:段内偏移地址段地址:段内偏移地址”。段内偏移地址又称为“有效地址EA(EffectiveAddress)。在读指令在读指令在读指令在读指令时,段地址由代码段寄存器时,段地址由代码段寄存器时,段地址由代码段寄存器时,段地址由代码段寄存器CSCS提供,当前要读取指令在代码段提供,当前要读取指令在代码段提供,当前要读取指令在代码段提供,当前要读取指令在代码段中的偏移地址由指令指针寄存

9、器中的偏移地址由指令指针寄存器中的偏移地址由指令指针寄存器中的偏移地址由指令指针寄存器IPIP提供;在读取或存储操作数提供;在读取或存储操作数提供;在读取或存储操作数提供;在读取或存储操作数时,根据具体操作,段地址由时,根据具体操作,段地址由时,根据具体操作,段地址由时,根据具体操作,段地址由DSDS、ESES或或或或SSSS提供,段内偏移地提供,段内偏移地提供,段内偏移地提供,段内偏移地址由指令给出。址由指令给出。址由指令给出。址由指令给出。 14物物理理地地址址:CPU与存储器进行数据交换时在地址总线上提供的20位地址信息称为物理地址。物理地址的形成过程如图所示。由IP提供或由EU根据指令

10、所提供寻址方式计算出寻址单元的16位段内偏移地址后,把该偏移地址和段寄存器内容左移四位后(相当于乘以10H)得到的段基址(段内第一个存储单元的物理地址)同时送到BIU中的地址加法器,形成一个20位的物理地址,从而实现对存储单元的访问。由逻辑地址求物理地址的公式为:物理地址物理地址物理地址物理地址= =段地址段地址段地址段地址 10H+10H+段内偏移地址段内偏移地址段内偏移地址段内偏移地址如假设当前(CS)=20A8H,(IP)=2008H,那么,下一条从内存中读取的指令所在存储单元的物理地址为:20A8H10H+2008H=22A88H。15物理地址的形成16 4) 4) 指令队列缓冲器指令

11、队列缓冲器指令队列缓冲器指令队列缓冲器8086的的指指令令队队列列有有6个个字字节节,当当指指令令队队列列出出现现空空字字节节时时,BIU就就自自动动执执行行一一次次取取指指令令周周期期,将将下下一一条条要要执执行行的的指指令令从从内内存存单单元元读读入入指指令令队队列列。它它们们采采用用“先先进进先先出出”原原则则,按按顺顺序序存存放放,并并按按顺序取到顺序取到EU中去执行。中去执行。指令队列的引入使得指令队列的引入使得指令队列的引入使得指令队列的引入使得EUEU和和和和BIUBIU可并行工作,即可并行工作,即可并行工作,即可并行工作,即BIUBIU在读指令在读指令在读指令在读指令时,并不影

12、响时,并不影响时,并不影响时,并不影响EUEU单元执行指令,单元执行指令,单元执行指令,单元执行指令,EUEU单元可以连续不断地直接从单元可以连续不断地直接从单元可以连续不断地直接从单元可以连续不断地直接从指令队列中取到要执行的指令代码,从而减少了指令队列中取到要执行的指令代码,从而减少了指令队列中取到要执行的指令代码,从而减少了指令队列中取到要执行的指令代码,从而减少了CPUCPU为取指令而为取指令而为取指令而为取指令而等待的时间,提高了等待的时间,提高了等待的时间,提高了等待的时间,提高了CPUCPU的利用率,加快了整机的运行速度。的利用率,加快了整机的运行速度。的利用率,加快了整机的运行

13、速度。的利用率,加快了整机的运行速度。 17182 2执行单元执行单元执行单元执行单元EUEU执执行行单单元元EU不不与与系系统统外外部部直直接接相相连连,它它的的功功能能只只是是负负责责执执行行指指令令。执执行行的的指指令令从从BIU的的指指令令队队列列缓缓冲冲器器中中直直接接得得到到,执执行行指指令令时时若若需需要要从从存存储储器器或或I/O端端口口读读写写操操作作数数时时,由由EU向向BIU发发出出请请求求,再再由由BIU对对存储器或存储器或I/O端口进行访问。端口进行访问。19执行部件EU的组成EU控制电路:指令译码,产生定时和控制信号16位算术逻辑单元ALU:进行算术逻辑运算8个16

14、位通用寄存器AX、BX、CX、DX、SP、BP、SI、DI16位标志寄存器FLAGS:存放运算结果的状态和控制标志数据暂存寄存器:暂存参加运算的数据EU控制电路:它是控制、定时与状态逻辑电路,接收从BIU中指令队列取来的指令,经过指令译码形成各种定时控制信号,对EU的各个部件实现特定的定时操作。202.2 8086/8088寄存器结构寄存器结构l内部有14个16位寄存器,按功能可分为四大类8个通用寄存器:AX、BX、CX、DX、SP、BP、SI、DI4个段寄存器:CS、DS、SS、ES1个控制寄存器:IP1个标志寄存器:FLAGS 212.2.1 通用寄存器lAX、BX、CX、DX一般用于存放

15、参与运算的操作数或运算结果每个数据寄存器都是16位的,但又可将高、低8位分别作为两个独立的8位寄存器来用。高8位分别记作AH、BH、CH、DH,低8位分别记作AL,BL,CL,DL。注注意意,8086/8088 CPU的的14个个寄寄存存器器除除了了这这4个个16位位寄寄存存器器能能分分别别当当作作两两个个8位位寄寄存存器器来来用用之之外外,其它寄存器都不能如此使用。其它寄存器都不能如此使用。 22AX(Accumulator)称称为为累累加加器器。用该寄存器存放运算结果可使指令简化,提高指令的执行速度。此外,所有的I/O指令都使用该寄存器与外设端口交换信息。BX(Base)称称为为基基址址寄

16、寄存存器器。8086/8088CPU中有两个基址寄存器BX和BP。BX用来存放操作数在内存中数据段内的偏移地址,BP用来存放操作数在堆栈段内的偏移地址。CX(Counter)称称为为计计数数器器。在设计循环程序时使用该寄存器存放循环次数,可使程序指令简化,有利于提高程序的运行速度。DX(Data)称称为为数数据据寄寄存存器器。在寄存器间接寻址的I/O指令中存放I/O端口地址;在做双字长乘除法运算时,DX与AX一起存放一个双字长操作数,其中DX存放高16位数。寄存器寄存器寄存器寄存器AX,BX,CX,DXAX,BX,CX,DX的特定用法的特定用法的特定用法的特定用法23l地址指针寄存器SP、BP

17、堆栈指针寄存器SP (stack pointer)基址寄存器BP(base pointer)l变址寄存器SI、DI源变址寄存器SI (source index)目的变址寄存器DI (destination index)242.2.2 段寄存器lCS 16位的代码段寄存器lDS 16位的数据段寄存器lES 16位的附加段寄存器lSS 16位的堆栈段寄存器 258086/8088段寄存器与提供段内移地址的寄存器之间的默默默默 认认认认 组组组组 合合合合段寄存器段寄存器提供段内偏移地址的寄存器提供段内偏移地址的寄存器CSIPDSBX、SI、DI或一个或一个16位数位数SSSP或或BPESDI(用于

18、字符串操作指令用于字符串操作指令)262.2.3 控制寄存器l指令指针寄存器IPl标志寄存器FR27标志寄存器FLAGSl标志寄存器共有16位,其中7位未用,所用的各位含义如下:l根据功能,8086的标志可以分为两类:状态标志:表示前面的操作执行后,ALU处于何种状态,可能会影响后面的操作控制标志:人为设置的,可以用专门的设置和清除指令,用于对某种功能的控制15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 015 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 OFOFDFDFIFIFTFTFSFSFZFZF AFAF PFPF CFCF28状态标志

19、l有6个,即SF、ZF、PF、CF、AF和OF符号标志SF(signflag) 零标志ZF(zeroflag) 奇偶标志PF(parityflag) 低8位1的个数为偶数,PF=1进位标志CF(carryflag) 最高位产生进位CF=1辅助进位标志AF(auxiliarycarryflag) 溢出标志OF(overflowflag) 算术运算产生溢出 8位运算结果超出-128+127 16位运算结果超出-32768+3276729控控制制标标志志位位(3位位位位)用来控制CPU的操作,由程序设置或清除。它们是:TF(TrapFlag)跟跟踪踪(陷陷阱阱)标标志志位位。是为测试程序的方便而设置

20、。若将TF置1,CPU处于单步工作方式。IF(InterruptFlag)中中断断允允许许标标志志位位。是用来控制可屏蔽中断的控制标志位。若将IF置1,表示允许CPU接受外部从INTR引脚上发来的可屏蔽中断请求;若用CLI指令将IF清0,则禁止CPU接受可屏蔽中断请求信号。DF(DirectionFlag)方方向向标标志志位位。若将DF置1,串操作按减地址方式进行,也就是说,从高地址开始,每操作一次地址自动递减;否则按增地址方式进行。302.3 8086的存储器和I/O组织一. 8086的存储器编址1. 8086存储空间存储器地址l20根地址线,直接寻址能力1MB,地址从00000H-FFFF

21、FHl按字节编址,每个字节赋予一个20位的地址编号物理地址物理地址31图3.10数据在存储器中的存放1 1、注意、注意2020根地根地址线与址线与1M1M个存储个存储单元之间的关系;单元之间的关系;存储单元地址与存储单元地址与该单元内容等概该单元内容等概念;念;2 2、注意字节型、注意字节型、字型及双字型数字型及双字型数据在存储器中的据在存储器中的存放方法;存放方法;3 3、规则存放的、规则存放的概念概念(本节后面还(本节后面还会详细介绍)会详细介绍)32存储器内容l一个字可以存放在任意两个相连的存储单元中,在一个字中的每一个字节有一个地址,字单元地址采用它的低地址表示;即一个字的起始地址可以

22、从偶地址开始也可以从奇地址开始,并且较高存储器地址的字节含有该字的高8位,较低地址含有低8位l同一个地址可以看做字节单元地址,也可以看做字单元地址l指针存放:按双字进行存放,偏移量存放于低地址,段基址存放于高地址l存放字符串时,字符串的第一个字节存放在地址较低的单元中,然后依次存放33 2存储器的段结构存储器的段结构8086/8088CPU中有关可用来存放地址的寄存器如IP、SP等都是16位的,故只能直接寻址64KB。为了对1M个存储单元进行管理,8086/80888086/8088采用了段结构的存储器管理方法采用了段结构的存储器管理方法采用了段结构的存储器管理方法采用了段结构的存储器管理方法

23、。8086/8088将整个存储器分为许多逻辑段,每个逻辑段的容量小于或等于64KB,允许它们在整个存储空间中浮动,各个逻辑段之间可以紧密相连,也可以互相重叠。用户编写的程序(包括指令代码和数据)被分别存储在代码段、数据段、堆栈段和附加数据段中,这些段的段地址分别存储在段寄存器CS、DS、SS和ES中,而指令或数据在段内偏移地址可由对应的地址寄存器或立即数给出。34A段C段B段D段E段00000H00000H10000H10000H20000H20000H30000H30000H40000H40000H64KB64KB64KB64KB64KB64KB64KB64KB紧密相连紧密相连部分重叠部分重

24、叠完全重叠完全重叠断开排列断开排列1FF00H1FF00H2FEFFH2FEFFHMM64KB64KB35 3. 逻辑地址与物理地址 逻辑地址:由段地址(逻辑段起始地址的高16位)和偏移地址(16位)表示的存储单元的地址称为逻辑地址,记为: 段地址偏移地址 物理地址:由CPU内部总线接口单元BIU中的地址加法器根据逻辑地址产生的20位存储单元地址称为物理地址。36015段内偏移地址段寄存器190340000段地址左移4位20位物理地址190物理地址的形成物理地址的形成 物理地址和逻辑地址的关系为: 物理地址段地址10H偏移地址在程序设计中,段地址是由段寄存器(如CS、DS、SS或ES)提供,偏

25、移地址通常是由地址寄存器(如IP、BX、 BP、 SP、 SI或 DI等)及立即数等提供。37 对于任何一个物理地址来说,可以唯一被包含在一个逻辑段中,也可以包含在多个重叠的逻辑段中,只要能得到它所在段的首地址和段内的相对地址,就可以对它进行访问。即一个物理地址可以对应多个逻辑地址。11230H11231H11232H0000H0001H0002H1123H1123EH1123FH11240H11241H11242H11243H11244H11245H000EH000FH0010H0011H0012H0013H0014H0015H段基址:偏移地址物理地址15H1124H05H段基址:FFFEH

26、FFFFH1122EH1122FH1123H1615H=11245H1124H1605H=11245H38CS、DS、SS和其他寄存器组合指向存储单元的示意图 :39表表存储器操作时段地址和段内偏移地址的来源存储器操作时段地址和段内偏移地址的来源存储器操作类型存储器操作类型段段地地址址偏移地址偏移地址正常来正常来源源其他来源其他来源取指令取指令CS无无IP存取操作数存取操作数DSCS、ES、SS有效地址有效地址EA通过通过BP寻址存取寻址存取操作数操作数SSCS、ES、SS有效地址有效地址EA堆栈操作堆栈操作SS无无BP、SP源字符串源字符串DSCS、ES、SSSI目的字符串目的字符串ES无无

27、DICPUCPU对存对存储器储器的操的操作有作有读指读指令令及及读读操作操作数、数、写写操作操作数数三大类!三大类!404.堆栈操作 vv8086808680888088系系统统中中的的堆堆栈栈使使用用段段定定义义语语句句在在存存储储器器中中定定义义的的一一个个堆堆栈栈段段,和和其其它它逻逻辑辑段段一一样样,它它可可以以在在1M1M字节的存储空间中浮动,其容量可达字节的存储空间中浮动,其容量可达64KB64KB。vv开辟堆栈的目的主要有以下两点:开辟堆栈的目的主要有以下两点:(1) (1) 存存放放指指令令操操作作数数( (变变量量) )。此此时时,对对操操作作数数进进行行访访问问时时,段段地

28、地址址由由堆堆栈栈段段寄寄存存器器SSSS来来提提供供,操操作作数数在在该该段内的偏移地址由基址寄存器段内的偏移地址由基址寄存器BPBP来提供。来提供。(2) (2) 保护断点和现场。此为堆栈的主要功能。保护断点和现场。此为堆栈的主要功能。vv这这是是一一个个具具有有“ “先先进进后后出出” ”特特性性的的存存储储区区域域,堆堆栈栈由由SSSS和和SPSP来来寻寻址址。SSSS给给出出堆堆栈栈段段的的段段地地址址,而而SPSP给给出出当当前前栈栈顶顶(偏偏移移地地址址),即即指指出出从从段段地地址址到到栈栈顶顶的的偏偏移移量。量。41 若已知当前SS1050H,SP0008H,AX1234H,则8086系统中堆栈的入栈和出栈操作如下图所示。12AA10500H10501H10502H10503H10504H10505H10506H10507H10508H栈底BB10509H段基址(SS)AX3412123434PUSH AX1050AHBBAAAABB1234BX34POP BXPOP AX栈顶栈顶1242

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 研究生课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号