8086计算机组织.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
* 由此可见,存储单元的逻辑地址分为两部分:段地址和偏移量。由逻辑地址得到其物理地址(PA—Physical Address)的计算方法如下: 物理地址PA=段地址×16 + 偏移量(EA) 计算存储单元物理地址的公式可用“左移4位”和“加”运算来实现。图是物理地址的计算示意图。 物理地址 偏移量 段地址 存储器分段:段起始地址必须是某一小段的首地址,段的大小可以是64K范围内的任意字节。 物理地址:每个存储单元的唯一的20位地址 段地址:段起始地址的高16位,低4位为0000B 偏移地址(有效地址EA):段内相对于段起始地址的偏移值(16位) 物理地址 = 16d ? 段地址 + 偏移地址 16 位 段 地 址 16 位 偏 移 地 址 0000 + 20 位 物 理 地 址 对物理地址来说,当段地址变化时,只要对其偏移量进行相应的调整就可对应同一个物理地址,所以,同一个物理地址可有多个逻辑地址。如图所示。 物理地址和逻辑地址之间的关系 存储器的逻辑地址与物理地址 逻辑地址 段地址 : 偏移地址 1000 : 0000H 1000 : 0001H 1000 : 0002H 1000 : 0003H 1000 : 0004H 1000 : 0005H 物理地址 10000H 10001H 10002H 10003H 10004H 10005H 字节内容(10000H)=9FH;(10001H)=26H 字内容 (10000H)=269FH;(10001H)=4826H 访问两次内存 在汇编语言程序中,存储单元通常不是用其物理地址标识的,而是用其逻辑地址标识的。逻辑地址的段地址由段寄存器给出,偏移量可由寄存器(SI、DI、BP和BX等)给出,也可用符号地址或具体的数值给出。至于在指令中如何指出存储单元的逻辑地址将在第3章“寻址方式”中给出详细说明。 2 段寄存器 8086有4个16位段寄存器: CS(代码段寄存器)指明代码段的起始地址 SS(堆栈段寄存器)指明堆栈段的起始地址 DS(数据段寄存器)指明数据段的起始地址 ES(附加段寄存器)指明附加段的起始地址 每个段寄存器用来确定一个段的起始地址,每种段均有各自的用途。 段寄存器的引用 段寄存器是因为对内存的分段管理而设置的。16位CPU有四个段寄存器,所以,其程序可同时访问四个不同含义的段。段寄存器及其偏移量的引用关系如图所示。 段寄存器CS指向存放程序的内存段,IP是用来存放下条待执行的指令在该段的偏移量,把它们合在一起可在该内存段内取到下次要执行的指令。 段和段寄存器的引用示意图 段寄存器SS指向用于堆栈的内存段,SP是用来指向该堆栈的栈顶,把它们合在一起可访问栈顶单元。另外,当偏移量用到了指针寄存器BP,则其缺省的段寄存器也是SS,并且用BP可访问整个堆栈,不仅仅是只访问栈顶。 段寄存器DS指向数据段,ES指向附加段,在存取操作数时,二者之一和一个偏移量合并就可得到存储单元的物理地址。该偏移量可以是具体数值、符号地址和指针寄存器的值等之一,具体情况将由指令的寻址方式来决定。 段和段寄存器的引用示意图  通常,缺省的数据段寄存器是DS,只有一个例外,即:在进行串操作时,其目的地址的段寄存器规定为ES。当然,在一般指令中,我们还可以用强置前缀的方法来改变操作数的段寄存器(见:第3章中的强置前缀的书写格式,即段超越) 段超越的示例 没有段超越的指令实例: MOV AX,[2000H] ;AX←DS:[2000H] ;从默认的DS数据段取出数据 采用段超越前缀的指令实例: MOV AX,ES:[2000H] ;AX←ES:[2000H] ;从指定的ES附加段取出数据 一般情况下,段寄存器及其指针寄存器的引用关系如下表所示。表中的“可选用的段寄存器”即是可以用强置说明这些段寄存器的值来作为其操作数地址的段地址。 访问存储器方式 缺省的段寄存器 可选用的段寄存器 偏移量 取指令 CS ? IP 堆栈操作 SS ? SP 一般取操作数 DS CS、ES、SS 有效地址 串操作 源操作数 DS CS、ES、SS SI 目标操作数 ES ? DI 使用指针寄存器BP SS CS、DS、ES 有效地址

文档评论(0)

精品报告 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档