第2章 实模式下的存储器组织与寻址方式.ppt_第1页
第2章 实模式下的存储器组织与寻址方式.ppt_第2页
第2章 实模式下的存储器组织与寻址方式.ppt_第3页
第2章 实模式下的存储器组织与寻址方式.ppt_第4页
第2章 实模式下的存储器组织与寻址方式.ppt_第5页
已阅读5页,还剩45页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第2章实模式下的存储器组织与寻址方式 汇编语言程序设计 赵艳红 第2章实模式下的存储器组织与寻址方式 前面提到 数据可存储在寄存器 内存单元 I O端口 现在需考虑的问题是 在编程时如何访问这些数据 1 若在寄存器中 可直接用寄存器名来访问寄存器中的数据 2 若在内存单元或I O端口 则需按地址访问 2 1实模式下的存储器组织2 1 1存储单元的地址和内容2 1 2存储器的分段组织2 2寻址方式2 2 1数据寻址方式2 2 2程序存储器寻址方式 2 1 1存储单元的地址和内容 存储单元地址 8086系统中 为了标识和存取每一个存储单元 给每个存储单元规定一个编号 这就是存储单元地址 存储单元的内容 一个存储单元中存放的信息称为该存储单元的内容 8086系统中一个存储单元可存放一个字节数据 从图可看到 地址为34560H的存储单元中的内容是34H 而地址为34561H的字节存储单元中的内容是12H 寄存器使用说明 AX BX CX DX这四个16位寄存器皆可作为两个8位寄存器使用 AX AH AL BX BH BLCX CH CL DX DH DL存储器中大部分数据都以字为单位表示 占用两个字节单元 低位字节存入低地址 高位字节存入高地址 例如 34561H 12H AL 12H AX 5612H 2 1 2存储器的地址分段 8086CPU的地址线是20位的 存储器的物理地址是20位 而8086CPU中的寄存器都是16位的 那么如何用16位寄存器来表达20位物理地址信息 00000000000000000000 00000000000000000001 11111111111111111111 地址位数太长 已达20位 思考题 为什么8086CPU的地址线设计为20位 或内存单元的物理地址为什么设计成20位 如果设计成16位 和寄存器的宽度一样 内存访问的地址表达就简单了 请问设计者这样设计的优点是 可以扩大CPU的访存空间 220 1024KB 216 64KB 问题解决方法 将存储器分成若干段 对某一单元的地址用段首地址和相对于段首地址的偏移量综合表示 这种方法类似于电影院里对座位的编号 这种分段表示可有效缩减地址的长度 这样上图中第一个标注单元的地址为 段地址为 00000000000000000000偏移量 或偏移地址 为 01它的物理地址为 段地址 偏移量即 000000000000000000001 这样上图中第二个标注单元的地址为 段地址为 00001111111111110000偏移量 或偏移地址 为 10它的物理地址为 段地址 偏移量即 00001111111111110010 按这样的方法有以下两个问题困惑着我们 值得进一步思考 1 偏移量如果过大 16位寄存器表示不了怎么办 2 段首地址 或段地址 为20位 如何用16位寄存器来表示 对于问题1 如果将一段的长度限制在64K以内 则偏移量的位数不超过16位 这样就可以用16位寄存器表达 16位寄存器能表示的最大偏移量为 1111111111111111 16个1 即为216 1 64K 1 再加上段首的一个单元 共64K 对于问题2分段时 如果只将单元地址的最后四位为0的地址作为段首地址 用16位寄存器存放它的前16位 在进行地址运算时再将16位段地址末尾补4个0 这样 20位物理地址的计算方法表示如下 16位段地址 16位偏移地址 20位物理地址 0000 小结 1 在1M字节的存储器里 每一个单元都有一个唯一的20位地址 称为该单元的物理地址 CPU访问存储器时 必须先确定要访问的存储单元的物理地址才能取得 或存入 该单元的内容 2 根据要求可把1M字节地址空间划成若干逻辑段 每个逻辑段必须满足两个条件 一是逻辑段的起始地址 简称段首址 必须是16的倍数 即末尾4位是0 二是逻辑段的最大长度为64K 3 20位物理地址由16位段地址和16位偏移地址组成 段地址是每一段的起始地址 其低4位一定是0 这样就可以规定段地址只取段起始地址的高16位来表示 偏移地址是指在段内相对于段起始地址的偏移值 这样 20位物理地址的计算方法表示如下 16位段地址 16位偏移地址 20位物理地址 0000 4 一个汇编语言源程序 一般由两部分组成 代码段 数据段 有时还包括堆栈段 附加段 除非专门指定 在一般情况下 各段在存储器中的分配 或段地址 由操作系统负责 用户程序中只涉及偏移量 例 MOVAX 2000H 表示把DS 10H 2000H地址所指向的单元的数传送给AX寄存器 5 每段的最大长度为64K 但各段的实际大小操作系统会根据实际需要来分配 不一定要占有64K最大空间 6 CPU在物理地址的形成过程中 会按有一定规则去选择段寄存器 除非在程序中特别说明 7 该存储管理方式允许程序在存储器内重定位 一个程序不加修改在另外一个存储区仍可以运行 因为程序内只涉及偏移地址 不同存储区只需修改段寄存器即可 这方便了操作系统对存储器的管理 2 2寻址方式 2 2 1数据寻址方式 操作数寻址 2 2 2程序寻址方式 指令寻址 2 2 1数据寻址方式 计算机中指令由操作码和地址码两部分组成 指令的格式一般是 指示计算机所要执行的操作 例 MOVAX 2000 指令的操作对象是数据 在指令中需给出操作数在内存中的地址或操作数本身址 数据寻址方式 是指寻找指令中操作数的方式 常用数据寻址方式 1 立即数寻址 2 寄存器寻址 3 寄存器间接寻址 4 直接寻址 5 基址变址寻址 1 立即数寻址 直接在指令中给出操作数 即操作数紧跟在操作码之后 立即数寻址常用于给寄存器赋初值 例 MOVAX 10执行后 AX 000AH 2 寄存器寻址 寄存器寻址方式的操作数在指令指明的寄存器中 汇编格式 R其中R表示寄存器名 功能 操作数直接存放在寄存器R中 例 下列程序执行后 AX BX MOVAX 1234HMOVBX 5678HADDAX BX第一 二条指令AX BX皆为目的操作数地址 为寄存器寻址方式 第三条指令中 AX为目的操作数地址 BX为源操作数地址 源地址和目的地址皆为寄存器寻址方式 图形表示 执行 1234H AX5678H BX AX BX AX执行后 AX 68ACH BX 5678H 3 寄存器间接寻址 寄存器间接寻址方式中 寄存器的内容为操作数的偏移地址 操作数在存储器中 汇编格式 R 功能 操作数存放在存储器 寄存器R存放操作数的偏移地址 说明 对于数据段数据的寻址 若采用寄存器间接寻址方式 只能使用BX SI DI来存放地址的偏移量 在指令运行时 计算机将用DS 16的值加上这个偏移量形成20位物理地址 DS 16 BX SI DI物理地址 例 寄存器和存储器内容分别为 SIDS执行指令 MOVAL SI 执行后 AL 0030H 2000H 4 直接寻址方式 直接寻址方式中 操作数在存储器中 指令直接给出操作数的偏移地址 在指令运行时 计算机将用DS 16的值加上这个偏移量形成20位物理地址 例 MOVAL 0020 若该程序段DS的值为3000H 则该指令的功能是将地址为30020H的内存单元的内容传送至AL寄存器 5 基址变址寻址 用一基址寄存器 通常为BX 和一个变址寄存器 SI或DI 的内容之和作为操作数在内存中的偏移地址 段地址为DS 如BX 1000H DI 0010H DS 0100H 指令 MOVDX BX DI 源操作数的物理地址为 DS 16 左移4位 BX DI即为 01000H 1010H10010H 2 2 2程序寻址方式 指令寻址 程序的执行需从存储器 代码段 中取出指令 这便是指令的寻址 CS为代码段段地址 IP指令指针寄存器存放的是指令地址的偏移量 1 在程序刚开始执行时 IP为0000H 寻到程序的第一条指令 送入CPU指令寄存器 分析并执行 2 若程序顺序执行 则IP会自动加 1 实现对第2条指令的寻址 3 若程序要进行转移 分支或调用子程序等 则需改变IP的值 若是段间转移或调用 则同时需改变CS的值 程序按序执行 或分支 或循环 或执行子程序的过程 其本质是改变CS和IP值的过程 这个过程是机器根据程序中的相关指令自动完成的 代码段 CS IP实现指令的寻址 本章学习目标 1 理解实模式下的存储器的分段组织 2 掌握内存单元物理地址的计算 3 掌握常用的数据寻址方式 并会根据指令中的寻址方式计算数据的物理地址 4 理解指令寻址 从指令寻址的角度 理解程序执行的本质过程 练习题 1 8086系统中 为了标识和存取每一个存储单元 给每个存储单元规定一个 一个存储单元可存放一个数据 答案 存储单元地址 字节 练习题 2 从图可看到 地址为30021H的字节存储单元中的内容是 AH 30021H AX 30021H 答案 11H 11H 3211H 练习题 3 8086构成的微机中 将存储器分成若干段 对某一单元的地址用和相对于段首地址的综合表示 其中的段首地址是由存储 答案 段首地址 偏移量 或偏移地址 段寄存器4 8086CPU的地址线是20位的 存储器的物理地址是位 而8086CPU中的寄存器都是位的 CPU要访问的某一存储单元的实际地址为 答案 20 16 物理地址 练习题 5 数据段寄存器DS为16位 物理地址为20位 将16位地址转化为20位物理地址方法如下 若DS存储的16位地址用二进制数来表示 则将该地址 后面补4个0 然后加 若DS存储的16位地址用十六进制数来表示 则物理地址 若DS存储的16位地址用十进制数来表示 则物理地址 答案 左移4位 偏移地址 DS 10H 偏移地址 DS 16 偏移地址 练习题 6 设段首地址位3200H 偏移地址位0080H 则物理地址为 答案 32080H7 CS寄存器在段内寻址时可以提供偏移地址的寄存器是 DS寄存器在段内寻址时可以提供偏移地址的寄存器是 SS寄存器在段内寻址时可以提供偏移地址的寄存器是 ES寄存器在段内寻址时可以提供偏移地址的寄存器是 答案 IP BX DI SI或16位数 SP BP DI 练习题 8 计算机中的指令由和两部分组成 答案 操作码 地址码9 说明下列数据寻址方式属于哪类 MOVAX SI 寄存器间接寻址MOVAX 200H 直接寻址MOVAX BX DI 基址变址寻址MOVAX BX寄存器寻址MOVAX 1200H立即寻址MOVAX DI 寄存器间接寻址MOVAX BX SI DI 基址变址寻址 练习题 10 现有 DS 2000H BX 1000H SI 020

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论