您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 交通运输 > 第二章 8086系统结构[2-2]
There’salwaysmoretolearn,andtherearealwaysbetterwaystodowhatyou’vedonebefore.—DONANLDE.KNUTH20:31微型计算机原理与接口技术第三讲20:312第二章8086系统结构80x86系列微处理器是8086的延伸8086CPU结构8086CPU引脚及功能8086CPU存储器组织8086CPU系统配置8086CPU时序内容提要20:313§2-38086存储器组织一、存储器地址的分段1、存储器地址的分段8086的地址线20根,可寻址的存储空间为220(1MB)个存储单元。8086系统中的存储器是一个最多1M个8位数量的字节序列,即可寻址的存储空间为1M字节。系统为每个字节分配一个20位的物理地址(对应16进制的地址范围从00000H~FFFFFH)。物理地址:存储器的绝对地址。00000H...60000H60001H60002H60003H60004H...FFFFFH12HF0H1BH08H20:314§2-38086存储器组织一、存储器地址的分段1、存储器地址的分段以字节为单位存储信息,每个存储单元对应唯一的地址。在存储器中任何两个相邻的字节被定义为一个字。在一个字中的每一个字节有一个地址,并且这两个地址中的较小的一个被用来作为该字的地址。问题:8086的内部寄存器是16位(地址的宽度大于字长)。如何生成20位物理地址?物理地址:存储器的绝对地址。..60000H60001H60002H60003H60004H...12HF0H1BH08H20:315§2-38086存储器组织高地址低地址段基址段基址段基址段基址最大64KB段i-1段i段i+1段基址保存在相应的段寄存器中解决办法:存储器分段8086/8088系统的存储空间1M字节(即220,要20位物理地址),CPU内部寄存器只有16位(只能寻址216=64K字节)。整个存储中间分成许多逻辑段。把1MB内存空间分成若干段,每段最大可达64KB(可由16位寄存器进行寻址)。20:316§2-38086存储器组织分段管理的特点:(1)每段容量不超过64K字节。在程序代码量、数据量不是太大的情况下,可使它们处于同一段内,即使它们在64KB的范围内,这样可以减少指令长度,提高指令运行速度;(2)允许各个逻辑段在整个存储空间中浮动;(3)段和段之间可以连续,也可以分开或重叠。(4)物理地址与逻辑地址并不是一一对应的,比如2000:0202H=2010:0102H=20202H。20:317§2-38086存储器组织2、物理地址形成物理地址:存储器的绝对地址(20位)。物理地址与存储单元一一对应关系。如(20202H)逻辑地址:是指段地址和偏移地址,是指令中引用的形式地址。一个逻辑地址只能对应一个物理地址,而一个物理地址可以对应多个逻辑地址。如(2000:0202H)段基址:是指一个段的起始地址。如(2000H)偏移地址:段内存储单元相对段基址的距离(字节数),也叫偏移量(Offset)。同一个段内,各个存储单元的段地址是相同的,偏移地址是不同的。如(0202H)0000段基址(16位)物理地址(20位)××ו••×××……段的起始地址偏移量要访问的单元段……段的起始地址偏移量段20:318§2-38086存储器组织2、物理地址形成程序设计时,使用的是逻辑地址。逻辑地址由段基址和偏移量构成(均为16位)。由逻辑地址获得物理地址的计算公式:物理地址=段基值×16+偏移量段基值150偏移量150000030Σ物理地址190逻辑地址物理地址20:319§2-38086存储器组织一、存储器地址的分段例1:以8086CPU复位后如何形成启动地址为例,说明物理地址的计算方法。复位时CS的内容为FFFFH,IP的内容为0000H。复位后的启动地址由CS段寄存器和IP的内容共同决定,即:启动地址=CS×16+IP=FFFF0H+0000H=FFFF0H20:3110§2-38086存储器组织一、存储器地址的分段例2:设(CS)=4232H,(IP)=66H物理地址计算如下42320H66H+)42386H......42320H66H42386H5231FH段地址段终址64K64K(2)1620:3111§2-38086存储器组织一、存储器地址的分段例3:设(DS)=2234H,EA=22H22340002222362+)22340022物理地址段基值偏移量逻辑地址15015022340002222362+)22340022物理地址段基值偏移量逻辑地址15015022340002222362+)22340022物理地址段基值偏移量逻辑地址15015020:3112§2-38086存储器组织一、存储器地址的分段3、逻辑地址来源“段基址”由段寄存器CS、DS、SS和ES提供;“偏移量”由BX、BP、IP、SP、SI、DI或根据寻址方式计算出的有效地址EA(EffectiveAddress)提供*。注意:①每个存储单元有唯一的物理地址,但它却可由不同的“段基址”和“偏移量”组成。例如:1200H:0345H12345H1100H:1345H12345H②除非专门指定,一般情况下,段在存储器中的分配是由操作系统负责的。*寻址方式举例:MOVAX,[BX];源操作数的寻址方式--“寄存器间接寻址”MOVAX,[BX+SI];源操作数的寻址方式--“基址变址寻址”20:3113§2-38086存储器组织一、存储器地址的分段表2-7段寄存器使用时的一些基本约定访问存贮器类型默认段寄存器可指定段寄存器段内偏移地址位源取指令码CS无IP堆栈操作SS无SP串操作源地址DSCS、ES、SSSI串操作目的地址ES无DIBP用作基址寄存器SSCS、DS、ES寻址方式确定有效地址EA一般数据存取DSCS、ES、SS寻址方式确定有效地址EA20:3114§2-38086存储器组织二、8086存储器的分体结构1、分体结构概念8086系统中,存储器是分体结构,1M字节的存储空间分成两个512K字节的存储体。一个是偶数地址存储体,一个是奇数地址存储体,两个存储体采用字节交叉编址方式。奇偶地址体示意图奇地址存储体偶地址存储体20:3115§2-38086存储器组织二、8086存储器的分体结构1、分体结构概念BHE#、AD0的代码组合和对应的操作BHE#AD0对应的操作所用的管脚00从偶地址开始读/写一个字AD15~AD001从奇地址单元读/写一个字节AD15~AD810从偶地址单元读/写一个字节AD7~AD00110从奇地址开始读/写一个字(在第一个总线周期,传送低8位数据到AD15~AD8;第二个总线周期传送高8位数据到AD7~AD0)AD15~AD8AD7~AD020:3116§2-38086存储器组织二、8086存储器的分体结构2、分体结构读写操作字节存储:一个字节存放在一个单元。字存储:一个字存于相邻两个单元。低位字节在低地址,高位字节在高地址,且字单元的地址以低位地址表示。一个字可以从偶地址开始存放,也可以从奇地址开始存放。例如,(00100H)=1234H,(00130H)=0152H高地址低地址5201341200100H00103H高地址低地址5201341200100H00103H高地址低地址5201341200100H00103H高地址低地址5201341200100H00103H高地址低地址5201341200100H00103H高地址低地址5201341200100H00103H高地址低地址5201341200100H00103H20:3117§2-38086存储器组织二、8086存储器的分体结构从偶地址读一个字节20:3118§2-38086存储器组织二、8086存储器的分体结构00000FF100001000110002001031000411223300例:从偶地址读一个字节20:3119§2-38086存储器组织二、8086存储器的分体结构从奇地址读一个字节20:3120§2-38086存储器组织二、8086存储器的分体结构00000FF100001000110002001031000411223311例:从奇地址读一个字节20:3121§2-38086存储器组织二、8086存储器的分体结构从偶地址上读/写一个字,只需访问一次存储器,也即需要一个总线周期。从偶地址读一个字:低位字节在偶地址,高位字节在奇地址。20:3122§2-38086存储器组织二、8086存储器的分体结构00000FF10000100011000210003100041122333322例:从偶地址读一个字20:3123§2-38086存储器组织二、8086存储器的分体结构从奇地址上读/写一个字,需两次访问存储器,也即需要两个总线周期。从奇地址读一个字:第一次取奇地址上数据,第二次取偶地址上数据。对准存放:只需一个总线周期20:3124§2-38086存储器组织二、8086存储器的分体结构例:从奇地址读一个字00000FF1000010001100020010310004112233221120:3125§2-38086存储器组织二、8086存储器的分体结构3、存储器与总线连接D7~D0数据总线D15~D8数据总线D7~D0奇地址存储体SELA19~A0D7~D0偶地址存储体SELA19~A0A0BHEA19~A1地址总线8086系统D7~D0数据总线D7~D01M×8位存储体A19~A0A19~A0地址总线8088系统0000000001FFFFF20:3126§2-38086存储器组织三、堆栈的概念1、堆栈的定义在存储器中开辟一个区域,用来存放需要暂时保存的数据。比如,存放返回地址、过程参数或需要保护的数据。用途:常用于响应中断或子程序调用,数据暂时存放。2、堆栈段构成及特点8086系统中的堆栈段是由段定义语句在存储器中定义的一个段,堆栈段容量小于等于64K字节。段基址由堆栈寄存器SS指定,栈顶由堆栈指针SP指定,堆栈地址由高向低增长,栈底设在存储器的高地址区。C0000C1000sp向上增长栈底20:3127§2-38086存储器组织三、堆栈的概念1、堆栈的工作方式及特点队列:按“先进先出(FIFO)”的方式组织的存储空间。堆栈:按“先进后出(FILO)”或“后进先出(LIFO)”的方式组织的存储空间(栈)。操作特点:每次压栈和退栈均以字为单位。低字节在偶地址,高字节在高地址。地址增长方式:向上增长即,栈底设在存储器的高地址区,堆栈地址由高向低增长。自动变量的分配:分配在堆栈段(堆)。全局变量的分配:分配在数据段。LIFOFIFOC0000C1000sp向上增长栈底20:3128§2-38086存储器组织堆栈操作每次压栈和退栈均以字为单位。SPSSSS压栈前退栈后高低低高高12HSSF0HSP压栈后低高SPF0H12H20:3129§2-38086存储器组织栈底设在存储器的高地址区,堆栈指针SP永远指向栈顶。例1:若已知(SS)=1000H,(SP)=2000H栈顶地址=?设AX=2000H,BX=3000H若执行指令:PUSHAXPUSHBXPOPAX后,则栈顶地址和栈顶两个字节,以及AX、BX的内容?段首栈底栈顶堆栈段20:3130§2-38086存储器组织例1:堆栈操作压栈前退栈后高低低高高压栈后低高SP12000H10000H12000H10000H12000H10000HSPSP00H20H30H00H10000H00H20HPUSHAX2000PUSHBX3000POPAX3000BX300000H30H00H00H30H00H20HPUSHBX3000PUSHBX3000PUSHBX3000PUSHAX2000PUSHBX3000POPAX3000BX3000PUSHAX2000PUSHBX300000H30
本文标题:第二章 8086系统结构[2-2]
链接地址:https://www.777doc.com/doc-3341573 .html