- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
北航微机原理第三讲
;第3讲 8086/88微处理器系
2009.3.2(星期二);(一)8086最小模式系统的基本配置;佳东些妆味虫词魂勃灌皆殊意隆漳枉敞扛狱着匆穷岛肖抽貌似归姨公绳号北航微机原理第三讲北航微机原理第三讲;;(二)存储器组织:
1.存储器地址:
8088有20条地址总线,直接寻址能力为220=1M字节。
用16进制数表示1M字节的地址范围应为00000H~FFFFFH。
(1)、 8088内部20位物理地址形成
(2)、逻辑地址与物理地址
; (1)、8088内部20位物理地址形成
? 存储器地址分段
8088地址总线是20位的,CPU中的寄存器是16位的,
20位地址无法用16位寄存器表示,必须分段。
程序员在编制程序时把存储器划分成段。
段内地址16位,每个段的大小最大可达64KB;
实际可以根据需要来确定段大小,可以是1,100,1000,
在64K范围内的任意字节数。
; ? 20位物理地址形成
物理地址:
在1M字节存储器里,每个存储单元都有一个唯一的20位地址作为该存储单元的物理地址。
CPU访问存储器时,必须先确定所要访问的存储单元的物理地址才能取出(或存入)该单元中的内容。
20位物理地址形成:由16位段地址和16位偏移地址组成。
段地址:只取段起始地址高16位值。
偏移地址:指在段内某内存单元物理地址相对段起始地址的偏移值。;物理地址计算方法:
即把段地址左移4位再加上偏移地址值形成物理地址,写成:
物理地址= 16d?段地址+偏移地址。
* 每个存储单元只有唯一的物理地址。
但可由不同的段地址和不同的偏移地址组成。;(2)、逻辑地址与物理地址
? 逻辑地址与物理地址概念
逻辑地址与物理地址概念如下页图所示。
逻辑地址:由段基址和段内偏移地址组成的地址,
段基址和段内偏移地址都是16位的无符号二进制数,
在程序设计时使用。
物理地址:存储器的绝对地址(20位的实际地址),
范围从00000H~FFFFFH ,
是由CPU访问存储器时由地址总线发出的地址。
存储器管理:将程序中逻辑地址转移为物理地址的机构。
; 物理地址的形成;尸醋给悬杏翟亩傲脏洲屎铂曼缘挑蕊蠕涵郊萍咸母障叶璃昨胖悠昌炊柏瑚北航微机原理第三讲北航微机原理第三讲;?逻辑地址来源;取指令:
自动选择代码段寄存器CS,
再加上由IP决定的16位偏移量,
计算得到要取的指令20位物理地址。
堆栈栈顶操作:
自动选择堆栈段寄存器SS,
再加上由SP决定的16位偏移量,
计算得到堆栈栈顶操作需要的20位物理地址。;涉及到操作数(与执行指令有关的地址、数字、寄存器 等统称为操作数):
自动选择数据段寄存器DS或附加段寄存器ES,
再加上16位偏移量,计算得到操作数的20位物理地址。
其中:
16位偏移量: 包含在:指令中的直接地址
某个16位地址寄存器的值
指令中的位移量+16位地址寄存器中值等。
16位偏移量关键取决于指令的寻址方式。;段寄存器和其他寄存器组合指向存储单元示意图;2、各段在存储器中分配
各段在存储器中分配分4种情况讨论:
(1).由操作系统负责分配
一般情况,各段在存储器中的分配是由操作系统负责。
每个段可以独立地占用64K存储区。
(2).各段也可以允许重迭
每个段的大小允许根据实际需要分配,不一定要占64KB。
每个存储单元的内容不允许发生冲突
(段可重迭,但使用时防止冲突)。;( 3).在程序的首部设定各段寄存器的值(汇编语言必须)
如果程序中的四个段都是64K的范围之内,
程序运行时所需要的信息都在本程序所定义的段区之内,
程序员只要在程序的首部设定各段寄存器的值就可以了。
( 4).动态地修改段寄存器的内容
如果程序的某一段(如数据段)在程序运行过程中会超过64K空间,或者程序中可能访问除本身四个段以外的其他段区的信息,
那么在程序中必须动态地修改段寄存器的内容。;64KB为一段
代码段范围:01000H~10FFFH;注意:
以8088CPU的IBMPC系统中,存储器首尾地址的用途固定。
00000H~003FFH共1K内存单元用于存放中断向量。
FFFF0H~FFFFFH是存储器底部的16个单元。
系统加电复位时,会自动转到FFFF0H单元执行,
而在FFFF0H处存放一条无条件转移指令,转向系统初始化程序。;一、概述
文档评论(0)