《存储器结构》PPT课件.ppt

上传人:牧羊曲112 文档编号:5491735 上传时间:2023-07-12 格式:PPT 页数:28 大小:217KB
返回 下载 相关 举报
《存储器结构》PPT课件.ppt_第1页
第1页 / 共28页
《存储器结构》PPT课件.ppt_第2页
第2页 / 共28页
《存储器结构》PPT课件.ppt_第3页
第3页 / 共28页
《存储器结构》PPT课件.ppt_第4页
第4页 / 共28页
《存储器结构》PPT课件.ppt_第5页
第5页 / 共28页
点击查看更多>>
资源描述

《《存储器结构》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《存储器结构》PPT课件.ppt(28页珍藏版)》请在三一办公上搜索。

1、2-3 8086的存储器组织,一、存储器地址的分段,矛盾:存储器地址空间1MB,20bit地址线;内部各寄存器和数据总线均为16bit。,1.存储器地址的分段,解决方法:将整个存储器分为若干个逻辑段,每段内地址16bit,即最多地址空间64KB。,允许各逻辑段在整个存储空间浮动,段与段之间可以是连续的,也可以是分开的或重叠的。,每个段的首地址称为“段基值”,“段基值”必须能被16整除(XXXX0H)。,程序执行前,分别对相应的段寄存器CS,DS,SS,ES置“段基值”,若程序长度大于64KB,则可通过对CS送新的“段基值”将程序转移到新段中。,逻辑地址:允许在程序中编排的地址;,2.20位物理

2、地址的形成,物理地址:信息在存储器中实际存放的地址;,对给定的任一存储单元,有两部分逻辑地址:段基址(段地址)由CS,DS,SS,ES决定 段内偏移量(段内有效地址)(该单元相对于段基址的距离),(2)物理地址的形成 在8086/8088系统中,每个存储单元都有物理地址和逻辑地址两种地址表示。物理地址:20位,范围为00000HFFFFFH。逻辑地址:段基值+偏移量,存放在某一个段寄存器中,是一个逻辑段的起始单元地址的高16位。,某个存储单元与它所在段的段基址之间的字节距离。,表示方法:段基值:偏移量 例如,3267H:00A0H,3.逻辑地址的来源;,EA-有效地址,表示操作数的偏移地址。,

3、1.问题的提出:,二、8086存储器的分体结构,8位机(MCS-51、8088)的存储器地址空间和数据存储格式以字节(8bit)为单位组织存储器地址空间,访问一次存储器,获得一个字节的数据。而8086CPU的数据总线为16位,CPU除了可以对一个字节寻址外,还必须能进行一个字的读写。即:如何组织数据存储格式使CPU访问一次存储器,获得一个字的数据。,硬件条件:,(1)将1M的存储空间分成两个存储体:偶地址和奇地址存储体,(2)将数据总线的低8位与偶地址存储体数据线相连,数据总线的高8位与奇地址存储体数据线相连。,当A0=0时候,选择访问偶地址存储器,偶地址存储体与数据总线低8位相连,从低8位数

4、据总线读/写一个字节;当=0时候,选择访问奇地址存储体,奇地址存储体与数据总线高8位相连,由高8位数据总线读/写一个字节;当A0=0,=0时,访问两个存储体,读/写一个字,存储单元的访问,奇地址(高字节)存储体 512K8bit,偶地址(低字节)存储体 512K8bit,D0-D7,无效,有效,无效,有效,访问一个字,是控制CPU高8位数据总线的允许信号,A0端是控制CPU低8位数据总线上的允许信号。,存储器中存放的信息称为存储单元的内容,例如,存储单元00100H中的内容为34H,则可以表示为(00100H)=34H一个字在存储器中的存储例如(00100H)=1234H(00103H)=01

5、52H在内存中的位置如下图,可以知道,一个字可以从偶地址开始存放,也可以从奇地址开始存放,但是8086CPU访问存储器都是以字为单位进行的,并从偶地址开始,如果读写一个字节,那么只需要启动某个存储体,只有相应的8为数据在数据总线上有效启动偶地址存储体的话,低8位数据有效,高8位数据被忽略启动奇地址存储体的话,高8位数据有效,低8位数据被忽略,00,11,(a)从偶地址上读一个字节,(b)从奇地址上读一个字节,当CPU读写一个字的时候如字单元地址从偶地址开始,只需访问一次存储体,33 22,(c)从偶地址上读一个字,如字单元地址从奇地址开始,那么CPU需要两次访问存储体,11,(c)从奇地址上读

6、一个字,22,第一次取奇地址上数据(偶地址8位被忽略掉)第二次取偶地址上数据(奇地址8位被忽略掉),为了加快程序运行速度,编程时候注意从存储器偶地址开始存放字数据,这种存放方式也称为“对准存放”,在8088CPU系统,外部数据线有8位,CPU每次访问存储器只读写一个字节,读写一个字需要两次访问存储器,这时候无需有BHE和A0来选择高8位和低8位,整个系统的运行速度会慢一点,堆栈是利用RAM区中某一指定区域(由用户规定),用来暂存数据或地址的存储区。堆栈段是由段定义语句在内存中定义的一个段,段基址由SS指定,栈顶是由堆栈指针SP指定的。,堆栈区的栈底是固定的最高地址,其栈顶根据堆栈数据的压入或取

7、出的变化不断改变。栈顶是堆栈区的最低地址,用堆栈指针SP指示。,三、堆栈的概念,C1000,C0000,向上增长,SP,栈底,堆栈存取数据的原则是“先进后出”,存取数据的方法是压入(PUSH)和弹出(POP)。指针SP的变化由CPU自动管理。,每执行一条PUSH指令,SP(SP)2,SP指向新栈顶,然后将低位数据压入(SP)单元,高位数据压入(SP+1)单元。每执行一条POP指令,CPU先将当前的栈顶SP(低位数据)和SP+1(高位数据)中的内容弹出,然后再自动修改指针,SP(SP)2。SP指向新栈顶。,例题 若已知当前SS1050H,SP0008H,AX1234H,则8086系统中堆栈的入栈

8、和出栈操作如下图所示。,12,AA,10500H,10501H,10502H,10503H,10504H,10505H,10506H,10507H,10508H,栈底,BB,10509H,段基址(SS),AX,34,12,12,34,34,PUSH AX,1050AH,BB,AA,AA,BB,12,34,34,POP BX,POP AX,12,1、MOV SP,0100H2、PUSH AX3、PUSH BX4、POP AX5、POP BX,例:执行压栈和出栈的过程 假设SS=0000H,堆栈主要用于中断及子程序调用,也可以用于数据暂时保存。在进行中断服务子程序和子程序调用前,原来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,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号