微型计算机原理与接口技术第2章8086系统结构详解.ppt

微型计算机原理与接口技术第2章8086系统结构详解.ppt

  1. 1、本文档共55页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
存储器地址分段示意图 分段的策略:把整个1M的地址空间分为65536X16的矩阵,每一行16字节为一小段(paragraph)。如下所示: 00000 00001 …… 0000F 00010 00010 …… 0001F ……………………………… 12340 12341 …… 1234F ……………………………… FFFF0 FFFF1 …… FFFFF 最左边的一列就可以作为段的起始地址,而段寄存器是16位的,无法存放20位的地址,所以在存放时,只考虑最高16位,最低的4位均为0,不存放。 物理地址的形成 段基地址:存放在段寄存器(CS DS ES SS)中的地址,表示段的起始。 偏移地址:相对于段的起始地址的偏移量,可以用BX BP SI DI SP IP 存放。 逻辑地址:存储器的逻辑地址由段基地址和偏移地址组成,程序设计时采用逻辑地址。 物理地址:存储器的绝对地址,范围为00000H~FFFFFH,是CPU访问存储器的实际寻址地址,按下式进行计算: 举例 已知DS=10E4H, ES=10F4H, SS=21F0H, CS=31FFH, 画出此时存储器地址分段图 段寄存器DS装入数据12ABH,写出段的起始地址和结束地址。 CS:IP的组合为34ABH:1230H,写出要执行指令的存储器物理地址。 SS:SP的组合为2900H:4A00H,写出堆栈栈顶的物理地址。 已知DS=101AH,BX=3200H,写出数据段中该存储单元的物理地址。 逻辑地址的来源 操作类型 隐含段地址 替换段地址 偏移地址 取指令 CS 无 IP 堆栈操作 SS 无 SP BP为间址 SS CS DS ES 有效地址EA 存取变量 DS CS ES SS 有效地址EA 源字符串 DS CS ES SS SI 目的字符串 ES 无 DI 问题 16位机内存管理为什么采用分段管理?有什么意义?程序的重定位、浮动地址的编码和提高内存的利用率和代码的重用率等 物理地址的含义,存储单元的物理地址是唯一的吗? 逻辑地址的构成,存储单元的逻辑地址是唯一的吗?如何由逻辑地址得到物理地址? 8086存储器的分体结构 8086系统中,1MB的存储空间分成两个存储体:偶地址存储体和奇地址存储体,各为512KB。 8086系统存储器与总线的连接 奇偶存储体的访问 奇地址单元字的读/写 8086系统存储器与总线的连接 奇偶存储体的访问 当A0=0时,选择访问偶地址存储体,偶地址存储体与数据总线的低8位相连,从低8位数据总线读/写一个字节 当BHE=0时,选择访问奇地址存储体,奇地址存储体与数据总线的高8位相连,从高8位数据总线读/写一个字节。 当A0=0 BHE=0时,访问两个存储体,读/写一个字。 8086系统字节、字的读/写 BHE A0 操作 总线使用情况 0 0 1 1 0 1 0 1 从偶地址单元读/写一个字 从奇地址单元读/写一个字节 从偶地址单元读/写一个字节 无效 AD15~AD0 AD15~AD8 AD7~AD0 0 1 1 0 从奇地址开始读/写一个字(分两次进行) AD15~AD8 AD7~AD0 奇地址单元字的读写 34 56 78 9A BC 12 10002H 10003H 10004H 10005H 10006H 10001H ①从10002单元开始读取一个字5634H,然后舍弃低位字节34H,剩下的高位字节56H作为要读取字的低位字节 ②从10004单元开始读取一个字9A78H,然后舍弃高位字节9AH,剩下的低位字节78H作为要读取字的高位字节 78 56 要求从10003H单元读取一个字 堆栈 堆栈的概念 堆栈示意图 堆栈的操作 堆栈的概念 堆栈是在存储器中开辟一个半封闭的区域,用来存放需要暂时保存的数据,并以“后进先出”的方式进行操作。 堆栈段可以在存储器1MB空间内任意浮动,堆栈的容量不超过64KB。段基址由堆栈段寄存器SS指定,栈顶由堆栈指针SP指定。 堆栈栈底设在存储器的高地址。 堆栈示意图 栈底:标示堆栈的结束 当前栈顶的位置,存放在SP中 … 地址增长的方向 杯底 当前液面位置 杯口 堆栈的开始,起始地址存放在SS中 堆栈的操作 入栈:用PUSH指令实现把一个字压入堆栈,修改堆栈指针SP,使SP减小。相当于往杯里注水,使液面上升 出栈:用POP指令实现从栈顶处弹出一个字,同时修改堆栈指针SP,使SP增大。相当于从杯里倒水使液面下降 举例 假如当前SS=C000H,SP=1000H,开始堆栈中没有存放任何数,画出此时的堆栈。若AX=3322H,BX=1100H,CX=6655H,执行指令PUSH AX,PUSH BX,画出此时的堆栈,再执行指令POP CX,画出此时的堆栈。三条指令执行完后

您可能关注的文档

文档评论(0)

shuwkb + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档