- 1、本文档共44页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
2-3_8086存储器结构剖析
段寄存器的使用规定 P29 归纳:第二章的主要内容 见P26~P29 谢谢! 引入段地址寄存器: MOV AL, [DS: 0000H];(AL)←((DS):0000H) 进一步简化成 MOV AL, [0000H]; (AL)←((DS):0000H), 默认段地址值在DS 中,指令中只给出偏移地址即可。 在指令中只能使用逻辑地址 MOV AL,[2000H:0000H] ; (AL)←(2000H:0000H) 即指令中总要写段地址,显得指令繁琐。 由于段地址值变化的概率低, 因此引入专用寄存器存放段地址值,称为段地址寄存器。 如,8086中DS为数据段段寄存器, 设,(DS)=2000H,上述指令可书写成 段寄存器DS用于存放数据段的段地址值,有了DS后,指令中只给出偏移地址即可。程序简练,便于书写。 设,(DS)=2000H,编程,完成下列功能: 数据0→AL 数据1→BL 数据2→DH 例1 MOV AL, [0000H];(AL)←((DS):0000H) MOV BL, [0001H];(BL)←((DS):0001H) MOV DH, [0002H];(DH)←(0002H) 请问,下列程序完成什么功能: MOV AX,2000H MOV DS,AX MOV AL,[1000H] MOV [2000H],AL 例2 DS——数据段寄存器 Data Segment Register 用来存放数据段地址值 CS——代码段寄存器 Code Segment Register 用来存放代码段段地址值(程序一般放在代码段)。 SS——堆栈段寄存器 Stack Segment Register 用来存放堆栈段段地址值 ES——附加段寄存器 Extra Segment Register 用来存放附加段段地址值 8086/8088中4个专用的段地址寄存器(P26): 用来分别存放四个段的段地址值。 段寄存器和其他寄存器组合指向存储单元示意图 重点之一 难点之一 设(DS)=5000H, 允许改变下列指令的偏移地址, 写出该指令可以访问的最大地址范围。 MOV AL,[****H] 例3 当偏移地址为0000H时, 访问50000H单元; 当偏移地址为FFFFH时, 访问5FFFFH单元; ∴ 可以访问的地址范围 50000H~5FFFFH 各个段寄存器的值如图所示,设每个段的容量为64K,且第一个单元的偏移地址为0000H。 请写出每个段的起始地址和结束地址。 课堂作业1 ~~~ 各个段寄存器的值如图所示,设每个段的容量为64K,且第一个单元的偏移地址为0000H。 请写出每个段的起始地址和结束地址。 10FFFH 01000H 课堂作业1 30FFFH 21000H 55FFFH 46000H AFFFFH A0000H 每个段最大占用64K 各段之间可以不连续 每个段容量如图所示,且第一个单元的偏移地址为0000H, 请计算每个段最后一个单元的物理地址。 课堂作业2 ~~~ 603FFH 60BFFH 61BFFH 每个段容量如图所示,且第一个单元的偏移地址为0000H, 请计算每个段最后一个单元的物理地址。 各段之间允许重迭 0000H~03FFH 0000H~07FFH 0000H~0FFFH 段的分配情况说明: (1)操作系统会根据内存的使用情况为每个段分配地址 (2)每个段最大占用64K存储区,最小根据需要而定。 (3)各段之间可以不连续 各段之间允许重迭 段的分配情况说明: (4)段寄存器的初始化 系统会自动完成CS的初始化, 程序员要在程序的首部初始化DS,ES和SS * * * * 一、微型计算机硬件基础 二、微型计算机结构及工作过程 三、8086/8088 微处理器结构 四、8086 的寄存器 五、存储器结构 5.1 存储单元的地址和内容 5.2 存储器地址分段 5.3 各段在存储器中分配 第二章 8086/8088 微处理器基础 2. 用MOV指令访问字节单元 MOV AL,[0002H] ;(AL)←(0002H) 1. 存储器按字节编址 一个字节单元占用一个地址码 一个字节单元可存放8位数据 如,字节单元 (0002H)=34H 存储单元 地址 5.1 存储单元的地址和内容 5.1 存储单元的地址和内容 2. 用MOV指令访问字节单元 1. 存储器按字节编址 3.一个字占用
文档评论(0)