汇编语言寻址方式及堆栈.ppt_第1页
汇编语言寻址方式及堆栈.ppt_第2页
汇编语言寻址方式及堆栈.ppt_第3页
汇编语言寻址方式及堆栈.ppt_第4页
汇编语言寻址方式及堆栈.ppt_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

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

文档简介

8086汇编语言程序设计,1,寻址方式的概念和基本分类; 7 种寻址方式及“两对”寻址方式的区别; 寻址方式与常量、变量和指针的关系; 堆栈概念、结构元素和操作指令。,本章要点,8086汇编语言程序设计,2,CPU 访问内存的两个目的: 读取指令;存取数据。 CPU 访问内存的三种方式: 控制器自动取指循环; 程序控制方式访问数据段; 堆栈方式。,第三章 寻址方式及堆栈,8086汇编语言程序设计,3,一条汇编指令语句包含操作码和操作数两种信息,有些像自然文字的谓语和宾语: 操作码字段为指令,描述语句的功能; 操作数字段描述操作数或操作数的来源和去向; CPU 获得操作数的方式叫作寻址方式。,3.1 寻址方式,8086汇编语言程序设计,4,三类寻址方式的特点: 寄存器寻址:存取数据在 CPU 内部进行,故速度最快;寄存器数量很少,寻址方式简单; 存储器寻址:为便于组织串、数组等数据结构复杂的数据处理,必须有更灵活、也就相对复杂的寻址方式,是本节的重点; I/O端口寻址:I/O端口的任务是实现计算机核心和外界的数据交换,故寻址方式也相对简单。,8086汇编语言程序设计,5,3.1.1 寄存器寻址 当需要处理寄存器中的数据或将处理结果存入寄存器的时,使用“寄存器寻址”;在汇编语言中直接以寄存器名对寄存器寻址: MOV DS, AX 意即将 AX 的内容送入数据段寄存器 DS。,8086汇编语言程序设计,6,8086汇编语言程序设计,7,3.1.2 立即数寻址 先看一例子: MOV AX, 201H 这条指令将 16 进制数 201 送入寄存器 AX。存放结果的 AX 的寻址方式是“寄存器寻址”,而后面的 201H 是一个常数,它是随指令从代码段来的。由于这类操作数就在指令中,“立即”可以参与运算,故称作“立即数寻址方式”。因立即数伴随指令在代码段中,所以这种寻址也应属存储器寻址。,8086汇编语言程序设计,8,8086汇编语言程序设计,9,3.1.3 存储器寻址 存储器寻址必然涉及段,即最终要以逻辑地址 段基址:偏移量 形成物理地址。由于在大多数使用场合地址指针的段基址是“现成的”和隐含的,所以本小节讨论的重点是“有效地址”偏移量的问题。 偏移量是某存储单元和段基址间的距离,又被称作有效地址。,8086汇编语言程序设计,10,偏移量或有效地址的形成: 偏移量位移量基地址变址量 上述三个分量的不同组合,演绎出存储器寻址的各种方式。 直接寻址 是在指令中直接给出操作数地址偏移量的寻址方式。比如把 200H 单元的内容送入AL: MOV AL, 200H,8086汇编语言程序设计,11,8086汇编语言程序设计,12,注意直接寻址和立即数寻址方式区别:方括号里的数字是操作数的有效地址,200H表示该单元的内容。 显然,直接寻址方式是非常直观的存储器寻址方式,但不方便处理整块的数据。 寄存器间接寻址 寄存器的内容是某存储单元的有效地址,以这种方式寻址就叫作寄存器间接寻址。,8086汇编语言程序设计,13,如要将 200H 单元的内容送入 AL,使用寄存器间接寻址需要这样: MOV BX, 200H MOV AL,BX 所谓“间接” 就是操作数的取得是通过寄存器间接获得的。应注意寄存器间接寻址方式和寄存器寻址相区别:后者在意的目标的是寄存器的内容,而前者是寄存器的内容作为偏移量的存储单元的内容。,8086汇编语言程序设计,14,8086汇编语言程序设计,15,两者的书写形式也不同,寄存器间接寻址时将用作间接寻址的寄存器用方括号括起来。 能用作存储器间接寻址的有下述地址指针寄存器: BX, SI, DI, BP 显然,连续将上述寄存器的内容增一或减一,可方面地处理数据块,如处理一维数据或字符串,高精度数字运算等。可参与存储器寻址的寄存器又被成为“地址指针寄存器”,具备“准指针”的功能。,8086汇编语言程序设计,16, 变址寻址和基址寻址(寄存器相对寻址) 某地址指针寄存器的内容和指令中给出的位移量之和形成有效地址的寻址方式。它是直接寻址方式和寄存器间接寻址方式的一种组合,请看例子: MOV AL,BX+20H ADD AL,10SI 指令中10SI和SI + 10是等价的。,8086汇编语言程序设计,17,8086汇编语言程序设计,18,和寄存器间接寻址方式相比,地址指针寄存器的内容可以从开始,这样地址指针寄存器可以兼作计数器。 至于“变址寻址”和“基址寻址”的差异只涉及使用地址指针寄存器的不同,在编程应用上没有区别,故这两种寻址方式又统称为“寄存器相对寻址”。,8086汇编语言程序设计,19, 相对基址变址寻址 有效地址是基址寄存器的内容、变址寄存器的内容和指令中给出的位移量之和,如: MOV AL, 20HBXSI MOV AH,80BSDI MOV DX,100HBXDI 20HBXSI 也可以写成 20H+BX+SI。这种寻址方式能比较方便地处理二维数组等更复杂的结构数据。,8086汇编语言程序设计,20,8086汇编语言程序设计,21,由于基于 BP 的基址变址寻址的隐含段寄存器是堆栈段 SS,所以在数据段的这种寻址方式常是 BX分别和 SI 和 DI 配合。 可以认为相对基址变址寻址方式是最一般的寻址方式,其他寻址方式都可以看作是基址变址寻址方式的特例。比如: MOV AL, 100H+BX+SI 去掉其中任一个或二个分量就会是某种其他寻址方式。,8086汇编语言程序设计,22,3.1.4 寻址方式与常量、变量及“准指针” 立即数寻址方式对应汇编语言的常量; 存储器寻址方式对应汇编语言的变量; 在各种地址指针寄存器参与的存储器寻址方式中,地址指针寄存器充当“准指针”的角色。 串操作寻址和 I/O 寻址以后介绍。,8086汇编语言程序设计,23,物理地址、段、逻辑地址和寻址方式小结: 物理地址是地址信号和译码逻辑对存储单元的唯一指定,本质上是组合逻辑电路的一种应用:,8086汇编语言程序设计,24, 8088/8086寻址(或管理)1M的存储空间是通过段来实现的: 段寄存器的内容存放和提供段基址的高 16 位,用于指定低四位为零的存储单元作为段的起点; 16 位段内偏移量确定段内具体单元,段内管理64K 的存储空间; 段寄存器的内容即段基址的高 16 位和段内偏移量合称为逻辑地址: 段基址的高 16 位 :段内偏移量,8086汇编语言程序设计,25, 8088/8086 CPU 按代码段、数据段、堆栈段、附加段对内存进行分类管理: 代码段:CS : IP; 堆栈段:SS : SP; 数据段:DS : 位移量基址量变址量,8086汇编语言程序设计,26, 寻址方式 寄存器寻址方式(访问 CPU 完成数据处理的接口,按“直呼其名”的方式进行); 立即数寻址方式(伴随指令序列来自于代码段的常量); 数据段寻址是三种偏移分量的组合: 位移量基址量变址量,8086汇编语言程序设计,27, 寻址方式与常量、变量及指针的关系: 立即数寻址方式对应汇编语言的常量; 存储器寻址方式对应汇编语言的变量; 在各种地址指针寄存器参与的存储器寻址方式中,地址指针寄存器充当“准指针”的角色。,8086汇编语言程序设计,28,堆栈是由 CPU 控制的按“后进先出”顺序存取数据的存储结构,用于暂存子程序调用、中断断点的信息和数据。堆栈的用途在这里只作一点说明,只有在学习了子程序调用、中断断点的保护等才会知道为什么要使用堆栈这种特殊的存储结构。本节的重点是:堆栈的结构元素和操作指令。,3.2 堆栈,8086汇编语言程序设计,29,3.2.1 堆栈的构造,8086汇编语言程序设计,30,堆栈是在存储器中划出的一个部分; 地址最高的字单元叫作“栈底(Bottom)”; 入栈的数据从栈底开始逐个向地址低端存入; 用堆栈指针 SP 指向最后入栈的数据,习惯上把 SP 所指的位置叫作“栈顶(Top)”; 数据是按 SP 的指向出入堆栈,从而实现了“后进先出”的存取机制的。,8086汇编语言程序设计,31,3.2.2 8086 的堆栈 堆栈的组织,8086汇编语言程序设计,32,堆栈是由 SS 的内容为起点的一段存储区; SP 指向栈顶; 以字为单位进行存取; 当堆栈初始化或为空时,SP 的值是堆栈段的实际长度,SP 指向栈底之下的第二个字节; 栈的最大空间是 64KB,栈的最大深度是 32K; 入栈的字,低字节存放在 SP 所指的单元,高字节存放在 SP+1 所指的单元。,8086汇编语言程序设计,33,0H,堆栈初始化或空时栈顶“低于”栈底的情形,8086汇编语言程序设计,34, 堆栈的操作 堆栈的操作都是通过 SP 在栈顶进行的;基本的操作有两个:压栈和出栈。 压栈(数据入栈) PUSH SCR (SP) 2 SP; SCR (SP).,8086汇编语言程序设计,35,出栈(习惯上又叫弹出) POP DEST (

温馨提示

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

评论

0/150

提交评论