已阅读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,BL CX: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 00001111111111110000 偏移量 01 偏移量10 这样 上图中第一个标注单元的地址为: 段地址为: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位物理地址 + 0 0 0 0 小结: (1)在1M字节的存储器里,每一个单元都有 一个唯一的20位地址,称为该单元的物理地 址。CPU访问存储器时,必须先确定要访问 的存储单元的物理地址才能取得(或存入 )该单元的内容。 (2)根据要求可把1M字节地址空间划成若 干逻辑段。 每个逻辑段必须满足两个条件: 一是逻辑段的起始地址(简称段首址) 必须是16的倍数(即末尾4位是0); 二是逻辑段的最大长度为64K。 (3)20位物理地址由16位段地址和16位偏移 地址组成。 段地址是每一段的起始地址,其低4位一定是 0,这样就可以规定段地址只取段起始地址的 高16位来表示。 偏移地址是指在段内相对于段起始地址的偏 移值。 这样,20位物理地址的计算方法表示如下: 16位段地址 16位偏移地址 20位物理地址 + 0 0 0 0 (4)一个汇编语言源程序,一般由两部分组 成: 代码段+ 数据段,有时还包括堆栈段 、附加段。 除非专门指定,在一般情况下,各段在存储 器中的分配(或段地址)由操作系统负责, 用户程序中只涉及偏移量。 例:MOV AX, 2000H 表示把 DS*10H+2000H地址所指向的单元的数传送给 AX寄存器。 (5)每段的最大长度为64K,但各段的实际大 小操作系统会根据实际需要来分配。不一 定要占有64K最大空间。 (6)CPU在物理地址 的形成过程中,会按 有一定规则去选择段 寄存器,除非在程序 中特别说明。 段偏移用途 CSIP指令寻 址 DSBX/DI/ SI或16 位数 数据寻 址 SSSP/BP堆栈寻 址 ESDI(串 操作) 目标串 寻址 (7)该存储管理方式允许程序在存储器内重 定位(一个程序不加修改在另外一个存储区 仍可以运行). 因为程序内只涉及偏移地址,不同存储区 只需修改段寄存器即可。这方便了操作系统 对存储器的管理。 2.2寻址方式 2.2.1 数据寻址方式(操作数寻址) 2.2.2 程序寻址方式(指令寻址) 2.2.1数据寻址方式 计算机中指令由操作码和地址码两部分组成 ,指令的格式一般是: 操作码 地址码1 地址码2 指示计算机所要 执行的操作 例: MOV AX, 2000 指令的操作对象是数据,在指令中需给 出操作数在内存中的地址或操作数本身 址。 数据寻址方式:是指寻找指令中操作数 的方式。 常用数据寻址方式 (1)立即数寻址 (2)寄存器寻址 (3)寄存器间接寻址 (4)直接寻址 (5)基址变址寻址 (1)立即数寻址 n直接在指令中给出操作数,即操作数紧 跟在操作码之后。 立即数寻址常用于给寄存器赋初值。 例:MOV AX, 10 执行后(AX)=000AH (2 ) 寄存器寻址 寄存器寻址方式的操作数在指令指明的寄 存器中。 汇编格式:R 其中R表示寄存器名。 功能:操作数直接存放在寄存器R中。 【例】 下列程序执行后,(AX)=?,(BX)=? MOV AX,1234H MOV BX,5678H ADD AX,BX 第一、二条指令AX、BX皆为目的操作数地址,为 寄存器寻址方式。第三条指令中,AX为目的操作 数地址,BX为源操作数地址。源地址和目的地址 皆为寄存器寻址方式。 图形表示: 执行:1234HAX 5678HBX (AX)+(BX)AX 执行后:(AX)=68ACH,(BX) =5678H (3)寄存器间接寻址 寄存器间接寻址方式中,寄存器的内容为 操作数的偏移地址,操作数在存储器中。 汇编格式:R 功能:操作数存放在存储器,寄存器R存 放操作数的偏移地址。 说明:对于数据段数据的寻址,若采用寄 存器间接寻址方式,只能使用BX、SI、DI 来存放地址的偏移量,在指令运行时,计 算机将用DS*16的值加上这个偏移量形成20 位物理地址。 DS*16+BX/SI/DI 物理地址 例:寄存器和存储器内容分别为: SI DS 执行指令:MOV AL ,SI 执行后:(AL)=? 0030H 2000H 20030H12H (4)直接寻址方式 直接寻址方式中,操作数在存储器中,指令 直接给出操作数的偏移地址。 在指令运行时,计算机将用DS*16的值加上 这个偏移量形成20位物理地址。 例:MOV AL,0020 若该程序段DS的值为3000H,则该指令的功能 是将地址为30020H的内存单元的内容传送至 AL寄存器。 (5)基址变址寻址 用一基址寄存器(通常为BX)和一个变址寄 存器(SI或DI)的内容之和作为操作数在内 存中的偏移地址,段地址为DS。 如BX=1000H,DI=0010H,DS=0100H,指令: MOV DX,BX+DI源操作数的物理地址为: DS16(左移4位)+ BX+DI 即为:01000H +1010H 10010H 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 30H 11H 32H 89H 40H 30020H 30021H 30022H 30023H 30020H 练习题 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,则物理地 址为 。 答案: 32080H 7、CS寄存器在段内寻址时可以提供偏移地址的寄存器 是 ;DS寄存器在段内寻址时可以提供偏移地址的 寄存器是 ;SS寄存器在段内寻址时可以提供偏 移地址的寄存器是 ;ES寄存器在段内寻址时可以 提供偏移地址的寄存器是 。 答案: IP ; BX/DI/SI或16位数; SP/BP ; DI 练习题 8、计算机中的指令由 和 两部分组成。 答案:操作码;地址码 9、说明下列数据寻址方式属于哪类: MOV AX,SI 寄存器间接寻址 MOV AX,200H 直接寻址 MOV AX,BX+DI 基址变址寻址 MOV AX,BX 寄存器寻址 MOV AX,1200H 立即寻址 MOV AX,DI 寄存器间接寻址 MOV AX,BX+SI+DI 基址变址寻址 练习题 10、现有(DS)=2000H,(BX)=1000H,(SI) =0201H,(20200H)=12H,(20
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 树木购买协议书范本
- 使用员工车辆协议书
- 个人消费贷合同范本
- 宁波服装博物馆招考1名非事业编制人员易考易错模拟试题(共500题)试卷后附参考答案
- 树脂门安装合同范本
- 桁架搭架协议书范本
- 框架协议意向协议书
- 印刷厂销售合同范本
- 桌子租凭合同协议书
- 国网河北省电力限公司2025年下半年高校应届毕业生招聘(第一批)易考易错模拟试题(共500题)试卷后附参考答案
- 两只狗的生活意见剧本
- 2024年工程防水合同范本
- 9.2+文化发展的基本路径+课件-2024-2025学年高中政治统编版必修四哲学与文化
- 游戏开发职业生涯规划总结报告
- 国家开放大学《合同法》章节测试参考答案
- 《香港璀璨的明珠》课堂课件
- 研发降本增效方案(17篇)
- 威海旅游攻略必去景点
- 二维材料半导体器件
- 《干部履历表》1999版电子版
- 控制器说明书
评论
0/150
提交评论