[工学]汇编语言第二章 寻址方式.doc

  1. 1、本文档共37页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[工学]汇编语言第二章 寻址方式

寻址方式 在8086微处理器中,一条指令通常由操作码加上操作数构成。 指令形式为:操作码 [操作数1], [操作数2]; 注释 其中,操作码指明执行的动作,操作数指明操作的对象。 由于寄存器数量有限,操作数不可能都放在寄存器中,实际上,操作数既可以放在寄存器中,也可以放在主存贮器中,这样就涉及到操作数的寻址问题。我们将寻址操作数存放地址的方式称为寻址方式。 本章的内容包括: 主存储器和物理地址的形成 寻址方式 常量与变量的定义 主存贮器和物理地址的形成 主存贮器 计算机存贮系统分为:主存贮器(内存)、辅助存贮器(外存)。 主存容量小、存取速度快、价格高; 辅存容量大、存取速度慢、价格低。 主存贮器的基本存贮单位是“位”(bit),每8位组合成一个“字节”;每相邻的两个字节称为“字”;相邻的四个字节称为“双字”。 为了区别各个存贮单元,给每个单元编号,称为地址。 地址:字节单元的编号,也称为物理地址。 低字节放低位,高字节放高位。例如:0004单元存放内容为1234H。 存储器物理地址的形成 早期的8086微处理器,有20根地址线,寻址范围2^20 = 1M字节。 但是,8086内部为16位结构,与地址相关的寄存器均为16位,从而导致可寻址范围为64K。因此,设计成为将主存分段使用,每段最大为64K字节。用CS、DS、SS、ES保存当前可用段的段首地址。 规定:段首地址只能从任一“小段”的首地址开始,也就是必须最低4位为0,如果所有的段首地址都是这样,则可以忽略最低4位,而只将高16位放到段寄存器中。因此,计算物理地址时,应将段寄存器内容左移4位,恢复段首址原值,然后再与本段中待访问单元的偏移地址相加,得到访问单元的物理地址。 因此,被访问单元物理地址 PA = 段首址*16+偏移地址。具体在不同的段中,物理地址为: 代码段: 待取指令PA=(CS)左移4位+(IP) 数据段、附加数据段: PA=(DS或ES)左移4位+(EA) 如:(DS)= 8765H,某变量Y的EA = 153H,则Y的物理地址: PA=(8765)左移4位 + 153H = 877A3H 堆栈段: 栈顶PA=(SS)左移4位+(SP) 入栈、出栈指令SP自动变化,不需用户设置。如果需要访问堆栈段,将偏移地址放在BP中,计算堆栈单元物理地址。 某堆栈单元PA=(SS)左移4位+(BP) 注意: DS、ES需要用户自行设计,CS由系统赋值 各段可以完全重叠、部分重叠、不重叠 各段最大为64KB 上述物理地址的计算,皆由微处理器自动完成,编程时,着重考虑偏移地址的表示形式,也就是操作数所在位置。 保护模式下的内存管理 1. 80x86的寻址范围 80x86地址总线32位,寻址范围4G 80x86通用寄存器32位,寻址范围也是4G 所以80x86的一个通用寄存器能够存放一个完整的32位地址 2. 虚拟内存与分页机制 在支持虚拟内存的32位操作系统(WIN32,Linux等)中,目标是要为每个进程提供一个独立的4G大小的虚拟地址空间。 在80x86保护模式下,逻辑地址空间(多个进程的地址空间总和)大于物理地址空间,所以用实模式的地址直接映射不能满足此要求,需要通过虚拟内存管理器,采用分页机制来实现: 将物理地址映射到进程的逻辑地址空间上; 只有映射了物理内存的逻辑地址空间才能访问; 每次映射的物理内存不大,且用完后可释放,再重新映射到新的逻辑地址空间上,因此能够让多个进程同时运行; 分页由系统基于页目录和页表,自动完成 3. 特权级与分段机制 (1) 80x86有4个特权级:0,1,2,3(0级最高,3级最低),能够在虚拟内存的基础上实现进一步的内存保护机制 如果程序有0级权限,它可以执行所有的指令,访问所有的数据。 如果程序只有3级权限,则它只能执行有限的指令,访问有限的数据(它自己的数据)。 (2) 80x86通过分段机制来实现特权级的访问控制。 用“段选择符:EA”的形式表示逻辑地址,段选择符(16位)存放在段寄存器中,指向一个段描述符(64位)。 用逻辑地址访问内存时,段选择符中的特权级需要高于段描述符中的特权级。 (3) 由逻辑地址生成物理地址的过程: EA要小于“段界限 * 4K”。一般应用程序中,段基址为0,段界限为0FFFFFH。所以对线性地址的形成不产生影响。 所以32位保护模式下,在一般的应用程序中,是一个可通过EA访问的,平坦的,独立的4G内存空间。不用特别考虑分段和分页。 寻址方式 立即寻址 操作数直接存放在指令中,紧跟在操作码之后,它作为指令的一部分存放在代码段里,这种操作数称为立即数。 汇编格式:n 功能:指令的下一单元的内容为操作数n,即: n也称为立即数。 例如:MOV AX,3064H 目的操作数采用寄存器寻址,地址为AX。 源

文档评论(0)

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

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

1亿VIP精品文档

相关文档