好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

2.2存储器组织结构.ppt

50页
  • 卖家[上传人]:桔****
  • 文档编号:592249889
  • 上传时间:2024-09-20
  • 文档格式:PPT
  • 文档大小:673KB
  • / 50 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 二、存储器组织结构二、存储器组织结构8086/8088有有20根地址线,可寻址根地址线,可寻址1MB空间的内存,空间的内存,当程序运行时,程序代码,数据等被编译程序按照当程序运行时,程序代码,数据等被编译程序按照一定的规则放在内存中一定的规则放在内存中…………程序程序CPU内存内存 1 存储器的分段 内存中通常存放三种信息:l 代码(指令):计算机执行何种操作l 数据(字符、数值):程序处理的对象l 堆栈信息:保存返回地址和中间结果为清晰起见,这三类信息通常分别存放在各自的区域内(存储系统中的不同存储段) 存储器组织与分段分段技术就是把分段技术就是把1MB空间分成若空间分成若干逻辑段,每个干逻辑段,每个逻辑段的容量逻辑段的容量≤64KB为什么要分段?0段段00000000000FFFF0FFFF10000100001FFFF1FFFF F0000F0000FFFFFFFFFF1段段…15段段64KB64KB64KB64KB64KB64KB ……逻辑段逻辑段逻辑段逻辑段1 1起点起点起点起点逻辑段逻辑段逻辑段逻辑段2 2起点起点起点起点逻辑段逻辑段3起点起点逻辑段逻辑段逻辑段逻辑段4 4起点起点起点起点…………逻辑段逻辑段1≤64KB逻辑段逻辑段2≤64KB逻辑段逻辑段3≤64KB逻辑段逻辑段4≤64KB0000000000FFFFFFFFFF分段管理的特点:分段管理的特点:分段管理的特点:分段管理的特点:p 每段容量不超过每段容量不超过每段容量不超过每段容量不超过64K64K字节;字节;字节;字节; p 允许各个逻辑段在整个存允许各个逻辑段在整个存允许各个逻辑段在整个存允许各个逻辑段在整个存储空间中浮动;储空间中浮动;储空间中浮动;储空间中浮动;p 段和段之间可以连续,也段和段之间可以连续,也段和段之间可以连续,也段和段之间可以连续,也可以分开或重叠。

      可以分开或重叠可以分开或重叠可以分开或重叠02:545 代码段代码段(CODE)::存放存放CPU可以运行的指令,程序代码;可以运行的指令,程序代码;数据段数据段(DATA)::存放程序中定义的变量等数据;存放程序中定义的变量等数据;堆栈段堆栈段(STACK)::在程序调用时存放调用处的地址、寄存在程序调用时存放调用处的地址、寄存器的内容、调用的参数等,在调用完后对寄存器进行恢器的内容、调用的参数等,在调用完后对寄存器进行恢复;存放一些临时保存的数据;复;存放一些临时保存的数据;附加数据段附加数据段(EXTRA)::与数据段配合使用,使编程更加灵与数据段配合使用,使编程更加灵活每个段的起始地址的有关值存放在称为段寄存器的每个段的起始地址的有关值存放在称为段寄存器的每个段的起始地址的有关值存放在称为段寄存器的每个段的起始地址的有关值存放在称为段寄存器的4 4 4 4个个个个16161616位寄存器中位寄存器中位寄存器中位寄存器中 …………码段码段堆栈段堆栈段数据段数据段附加数附加数据段据段…………码段码段1堆栈段堆栈段数据段数据段码段码段2每段的长度均小每段的长度均小于于64KB,,即即16位寄存器能表示位寄存器能表示的最大范围的最大范围。

      段内的“偏移地址”指出从段地址开始的偏移位置,可以放在IP,或16位通用寄存器偏移地址,逻辑地址,物理地址偏移地址,逻辑地址,物理地址 逻辑地址:用程序或者指令表示的一种地址,存储器的任一个逻辑地址是由段基址和偏移地址组成,都是无符号的16位二进制数,程序设计时采用逻辑地址物理地址:存储器的绝对地址,从00000H-FFFFFH,是CPU访问存储器的实际寻址地址偏移地址,逻辑地址,物理地址偏移地址,逻辑地址,物理地址 内存空间的唯一地址内存空间的唯一地址(20位位)称为物理地址是由两部称为物理地址是由两部分组成的:分组成的: 段地址段地址×16 + 偏移地址偏移地址段地址段地址16位位偏移地址偏移地址0 0 0 0XXXX XXXX XXXX XXXXXXXX XXXX XXXX XXXXXXXXXXXX XXXX XXXX XXXX+20位物理地址位物理地址 地址生成器CS左移4位20位+地址加法器CS16位物理地址20位IPIP或偏移地址 例如:段地址:例如:段地址:21ABH 偏移地址:偏移地址:1678H物理地址:物理地址:2 1 A B 01 6 7 8+2 3 1 2 823128 H 每一个逻辑段中,段地址是由计算机编译系统分每一个逻辑段中,段地址是由计算机编译系统分配的,在这个逻辑段中不能改变,配的,在这个逻辑段中不能改变,而偏移地址从而偏移地址从0000 H开始,最长到开始,最长到FFFF H,,所以一个逻辑段的所以一个逻辑段的长度不能超过长度不能超过64KB。

      例:某代码段的段地址为21ABH,该逻辑段的最大地址范围多少? …………码段码段堆栈段堆栈段数据段数据段附加数附加数据段据段物理地址物理地址: XXXX0H其中:其中:XXXX为段地址为段地址…………0 0 0 20 0 0 10 0 0 0……偏移地址从偏移地址从0000H起起段地址与偏移地段地址与偏移地址用两个寄存器址用两个寄存器分别存放,在同分别存放,在同一逻辑段寻址时一逻辑段寻址时只对偏移地址进只对偏移地址进行变动即可行变动即可 在8086/8088系统中,每个存储单元都有物理地址和逻辑地址两种地址表示 逻辑地址:段基值+偏移量表示方法:表示方法: 段基值:偏移量段基值:偏移量 例如,例如,3267H::00A0H 段段地地址址寄寄存存器器段地址寄存器:分别段地址寄存器:分别存放正在处理的相应存放正在处理的相应段的基地址段的基地址CS: CODE 代码段代码段DS: DATA 数据段数据段SS: STACK 堆栈段堆栈段ES: EXTRA 附加段附加段段地址寄存器的内容段地址寄存器的内容左移左移4位位,与相应段,与相应段的偏移地址相加,形的偏移地址相加,形成成20位的物理地址。

      位的物理地址 逻辑地址来源访问存储器的操作类型不同,BIU所使用的逻辑地址来源也不同 操作类型隐含段地址替换段地址偏移地址取指令CS无无IP堆栈操作SS无无SPBP为间址SSCS、、DS、、ES有效地址有效地址EA存取变量DSCS、、SS、、ES有效地址有效地址EA源字符串DSCS、、SS、、ESSI目标字符串ES无无DI02:5418 IPIPCSCSSI, DI SI, DI 或BXBXDSDSSPSP或BPBPSSSS代码段代码段数据段数据段堆栈段堆栈段l l取指令取指令(IP)(IP)l l堆栈操作堆栈操作(SP)(SP)l l读读/ /写存储器操作数或访问变写存储器操作数或访问变量量l l字符串寻址字符串寻址(源操作数放在(源操作数放在DSDS::SISI中,目标中,目标操作数放在操作数放在ESES::DIDI中中) ) 02:5419 其中:其中:代码段的偏移地代码段的偏移地址址是由指令指针寄存器是由指令指针寄存器IP给出的这个寄存器给出的这个寄存器不能由指令直接赋值不能由指令直接赋值指令指针指令指针寄存器寄存器当微处理器复位时,当微处理器复位时,CS中的内容为中的内容为FFFFH,,IP的内容为的内容为0000H,,所以计算机复位后的第所以计算机复位后的第一条指令是从一条指令是从FFFF0H处开始运行的。

      处开始运行的 2 存储器的分体结构 1. 问题的提出:问题的提出: 8位机(MCS-51、8088)的存储器地址空间和数据存储格式以字节(8bit)为单位组织存储器地址空间,访问一次存储器,获得一个字节的数据 而8086CPU的数据总线为16位,CPU除了可以对一个字节寻址外,还必须能进行一个字的读写即:如何组织数据存储格式使CPU访问一次存储器,获得一个字的数据 硬件条件:硬件条件:(1)将1M的存储空间分成两个存储体:偶地址和奇地址存储体各为512KB00000000010000200004FFFFEFFFFF0000300005512K*8bitA0 =0512K*8bitA0=1D0D7D8D15(2)将数据总线的低8位与偶地址存储体数据线相连,数据总线的高8位与奇地址存储体数据线相连3)用地址线A0和BHE信号选择存储体 两个存储体:两个存储体:偶地址存储体偶地址存储体+奇地址存奇地址存储体,各为储体,各为512KByte,,共共1M Byte512K×8512K×8位位位位奇地址存储体奇地址存储体奇地址存储体奇地址存储体((((A A0 0= =1 1))))512K×8512K×8位位位位偶地址存储体偶地址存储体偶地址存储体偶地址存储体((((A A0 0= =0 0))))000010000100003000030000500005 FFFFFFFFFF000000000000002000020000400004 FFFFEFFFFE2 22020----1 1======== 2 22020----2 2与数据总线低与数据总线低与数据总线低与数据总线低8 8位相连,当位相连,当位相连,当位相连,当A0A0====0 0时,选择访问偶地址时,选择访问偶地址时,选择访问偶地址时,选择访问偶地址存储体,从低存储体,从低存储体,从低存储体,从低8 8位数据总线位数据总线位数据总线位数据总线读/写一个字节。

      读/写一个字节读/写一个字节读/写一个字节与数据总线高与数据总线高与数据总线高与数据总线高8 8位位位位相连,当相连,当相连,当相连,当BHE=0BHE=0时,选择访问奇时,选择访问奇时,选择访问奇时,选择访问奇地址存储体,从地址存储体,从地址存储体,从地址存储体,从高高高高8 8位数据总线读位数据总线读位数据总线读位数据总线读/写一个字节/写一个字节/写一个字节/写一个字节02:5424 A0D15—D8 D7—D0存储单元的访问A1-A19CSA0-A18D15-D8CSA0-A18BHE 奇地址奇地址(高字节)(高字节) 存储体存储体 512K×8bit 偶地址偶地址(低字节)(低字节) 存储体存储体 512K×8bitD0-D7无效无效有效有效无效无效有效有效访访问问一一个个字字 是控制是控制CPU高高8位数据总线的允许信位数据总线的允许信号,号,A0端是控制端是控制CPU低低8位数据总线上的允位数据总线上的允许信号 3434000FF000FF00100001000010100101 00103 00103121252520101①①字节存储字节存储 :一个字节存放一个单元。

      一个字节存放一个单元如单元如单元00100H00100H中的内容为中的内容为34H34H,,表示为表示为(00100H)(00100H)==34H34H ②②字存储:一个字存于相邻两个单元,且字存储:一个字存于相邻两个单元,且低位字节在低地址,高位字节在高地址低位字节在低地址,高位字节在高地址,,字单元的地址以低位地址表示字单元的地址以低位地址表示如:如:(00100H)(00100H)==1234H1234H,,(00103H)(00103H)==0152H0152H ③③③③一个字可以从偶地址开始存放,也可以从奇地址开始存放一个字可以从偶地址开始存放,也可以从奇地址开始存放一个字可以从偶地址开始存放,也可以从奇地址开始存放一个字可以从偶地址开始存放,也可以从奇地址开始存放 但是但是8086CPU8086CPU访问存储器都是以字为单位进行的,访问存储器都是以字为单位进行的,并从偶地址开始并从偶地址开始02:5428 分体结构读写操作0000000FF000FF100001000010001100011000210002 00103 00103100041000411112222333300000000000FF000FF100001000010001100011000210002 00103 0010310004100041111222233331111从从从从偶地址偶地址读一个字节读一个字节读一个字节读一个字节从从从从奇地址奇地址读一个字节读一个字节读一个字节读一个字节注意:注意:注意:注意:8086CPU访问存储器时,以字为单位进行,并从偶地址开始访问存储器时,以字为单位进行,并从偶地址开始。

      02:5429 0000000FF000FF100001000010001100011000210002 00103 00103100041000411112222333333332222从从从从偶地址偶地址偶地址偶地址读一个字读一个字读一个字读一个字从从从从奇地址奇地址奇地址奇地址读一个字读一个字读一个字读一个字0000000FF000FF100001000010001100011000210002 00103 00103100041000411112222333322221111①若字单元地址从偶地址偶地址开始,只需访问一次存储器一次存储器 ②若字单元地址从奇地址开始,要访问两次存储器 02:5430 为了加快程序运行速度,编程时候注意从存储器偶地址开始存放字数据,这种存放方式也称为“对准存放” 存储器与总线连接存储器与总线连接D7~D0 数据总线数据总线数据总线数据总线D15~D8 数据总线数据总线数据总线数据总线D7~D0奇地址存储体奇地址存储体SEL A19~A0D7~D0偶地址存储体偶地址存储体SEL A19~A0A A0 0BHEBHEA19~A1 地址总线地址总线地址总线地址总线80868086系统系统系统系统D7~D0 数据总线数据总线数据总线数据总线D7~D01M×8位存储体位存储体A19~A0A19~A0 地址总线地址总线地址总线地址总线80888088系统系统系统系统00000000000000100001FFFFFFFFFF02:5433 3 堆栈的概念 (1)(1)堆栈的定义堆栈的定义堆栈是在存储器中开辟一个区域,用来堆栈是在存储器中开辟一个区域,用来堆栈是在存储器中开辟一个区域,用来堆栈是在存储器中开辟一个区域,用来存放需要暂时保存的数据存放需要暂时保存的数据存放需要暂时保存的数据存放需要暂时保存的数据。

      2)(2)堆栈段构成及特点堆栈段构成及特点 堆栈段由段定义语句在存储器中定义的一堆栈段由段定义语句在存储器中定义的一个段,可以在存储器个段,可以在存储器1M1M字节空间内任意浮字节空间内任意浮动,容量小于等于动,容量小于等于64K64K字节段基址段基址由堆由堆栈寄存器栈寄存器SSSS指定,栈顶由堆栈指针指定,栈顶由堆栈指针SPSP指定,指定,SPSP指向当前栈顶单元指向当前栈顶单元 C0000C0000 C1000C1000spsp向向向向上上上上增增增增长长长长栈底栈底栈底栈底02:5435 例:假如当前SS=C000H,堆栈段<64KB,SP=1000H,指出当前栈顶在存储器中的位置 堆栈的工作方式及特点堆栈的工作方式及特点堆栈的工作方式及特点堆栈的工作方式及特点 ①①①①工作方式:工作方式:工作方式:工作方式:“ “先进后出先进后出先进后出先进后出” ”,指令为,指令为,指令为,指令为PUSHPUSHPUSHPUSH、、、、POPPOPPOPPOP,,,,栈顶指针栈顶指针栈顶指针栈顶指针SPSPSPSP的变化由的变化由的变化由的变化由CPUCPUCPUCPU自动管理。

      自动管理自动管理自动管理②②②②操作特点操作特点操作特点操作特点::::以以以以字字字字为单位进行操作,为单位进行操作,为单位进行操作,为单位进行操作,低字低字低字低字节节节节在在在在偶偶偶偶地址,地址,地址,地址,高字节高字节高字节高字节在在在在奇奇奇奇地址,每访问地址,每访问地址,每访问地址,每访问一次堆栈就能压入/弹出一个一次堆栈就能压入/弹出一个一次堆栈就能压入/弹出一个一次堆栈就能压入/弹出一个字字字字③③③③地址增长方式:地址增长方式:地址增长方式:地址增长方式:一般是一般是一般是一般是向上增长向上增长向上增长向上增长:栈底:栈底:栈底:栈底设在存储器的高地址区,堆栈设在存储器的高地址区,堆栈设在存储器的高地址区,堆栈设在存储器的高地址区,堆栈地址由高地址由高地址由高地址由高向低变化向低变化向低变化向低变化C0000C0000 C1000C1000spsp向向向向上上上上增增增增长长长长栈底栈底栈底栈底02:5437 堆栈操作指令的执行过程堆栈操作指令的执行过程::::l l执行执行执行执行PUSHPUSH指令时:指令时:指令时:指令时: CPUCPU自动修改指针自动修改指针自动修改指针自动修改指针SPSP----2 2SPSP,使,使,使,使SPSP指向指向指向指向新栈顶;新栈顶;新栈顶;新栈顶; 将低位数据压入将低位数据压入将低位数据压入将低位数据压入(SP)(SP)单元,高位数据压入单元,高位数据压入单元,高位数据压入单元,高位数据压入(SP+1)(SP+1)单元。

      单元l l当执行当执行当执行当执行POPPOP指令时:指令时:指令时:指令时: CPUCPU将当前栈顶将当前栈顶将当前栈顶将当前栈顶SP(SP(低位数据低位数据低位数据低位数据) )和和和和SPSP+ +1(1(高位高位高位高位数据数据数据数据) )中的内容弹出;中的内容弹出;中的内容弹出;中的内容弹出; 自动修改指针,使自动修改指针,使自动修改指针,使自动修改指针,使SPSP+ +2 2SPSP,,,,SPSP指向新栈指向新栈指向新栈指向新栈顶C0000C0000 C1000C1000spsp向向向向上上上上增增增增长长长长栈底栈底栈底栈底02:5438 例题例题例题例题 若已知当前若已知当前SS==1050H,,SP==0008H,,AX==1234H,, 则则8086系统中堆栈的入栈和出栈操作如下图所示系统中堆栈的入栈和出栈操作如下图所示12AA…10500H10501H10502H10503H10504H10505H10506H10507H10508H栈底栈底BB10509H段基址段基址(SS)AX3412123434PUSH AX1050AHBBAAAABB1234BX34POP BXPOP AX12栈顶栈顶栈顶栈顶SPSP 000FAH000FBH000FCH000FDH000FEH000FFH00100H36H95H2、、 (SP)-2→SP AH→ ( 000FFH ) AL→ (000FEH ) (SP)=00FEH(AX)=9536H(BX)=0475H(AX)=0475H(BX)=9536H1、MOV SP,0100H2、PUSH AX3、PUSH BX4、POP AX5、POP BX例:执行压栈和出栈的过程例:执行压栈和出栈的过程 假设假设SS=0000HSS=0000H75H04H3、、 (SP)-2→SP BH→ (000FDH ) BL→ ( 000FCH ) (SP)=00FCH1、设栈顶、设栈顶(SP)=0100H4、、(000FCH)→ AL (000FDH)→AH (SP)+2→SP (SP)=00FEH 75H04H5、、 (000FEH) →BL (000FFH) →BH (SP)+2→SP (SP)=0100H36H95H 堆栈操作动画:堆栈操作动画:02:5441 堆栈的主要用途堆栈的主要用途堆栈的主要用途堆栈的主要用途中断,子程序调用,数据暂时保存中断,子程序调用,数据暂时保存。

      注意注意】】::先进入的内容后弹出;先进入的内容后弹出; PUSH和和POP指令成对指令成对 02:5442 堆栈主要用于中断及子程序调用,也可以用于数据暂时保存在进行中断服务子程序和子程序调用前,原来CPU中现行的信息(IP,以及相关寄存器)都必须保存在调用后,又必须恢复原来保存信息,这些由堆栈来完成 注意两点1.先进入的内容要后弹出,保证返回寄存器内容不会发生错误例如:PUSH AX PUSH BX PUSH CX POP CX POP AX POP BX这样会引起AX,BX原来保存的内容改变,AX与BX内容可以相互交换 2 PUSH和POP的指令要成对,如果不匹配的话,则会造成返回主程序的地址出错 例如: PUSH AX PUSH BX PUSH CX POP CX POP BX RET 作业 1.根据下列CS:IP的组合,求出要执行的下一条指令的存储器地址:(1)CS:IP=1000H:2000H(2)CS:IP=2000H:1000H(3)CS:IP=1A00H:B000H(4)CS:IP=3456H:AB09H 2.求下列寄存器组合所寻址的存储单元地址:(1)DS=1000H,DI=2000H(2)SS=2300H,BP=3200H(3)DS=A000H,BX=1000H(4)SS=2900H,SP=3A00H 3.设堆栈段指针SP的初值为2400H,AX= 4000H,BX= 3600H,下列指令连续执行,试问:(1)执行指令PUSH AX后,SP的内容是多 少?(2)再执行再执行PUSH BX后,SP和BX的内容是多少?(3)再执行再执行POP AX后,寄存器SP、AX和BX的内容分别是多少? 4.8086系统中的存储器采用什么结构?用什么信号来选中存储体?5.某程序数据段中存放了两个字,1EE5H和2A8CH,已经DS=7850H,数据存放的偏移地址为3121H以及285AH。

      试画图说明它们在存储器中的存放情况若要读取这两个字,需要对存储器进行几次操作? 。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.