汇编语言寻址方式及堆栈

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

3.1.1 寄存器寻址 当需要处理寄存器中的数据或将处理结果存
入寄存器的时,使用“寄存器寻址”;在汇编语 言中直接以寄存器名对寄存器寻址:
MOV DS, AX
意即将 AX 的内容送入数据段寄存器 DS。
No Image
3.1.2 立即数寻址
先看一例子:
MOV
AX, 201H
这条指令将 16 进制数 201 送入寄存器 AX。
① 直接寻址 是在指令中直接给出操作数地址偏移量的寻
址方式。比如把 200H 单元的内容送入AL: MOV AL, [200H]
No Image
注意直接寻址和立即数寻址方式区别:方括 号里的数字是操作数的有效地址,[200H]表示该 单元的内容。
显然,直接寻址方式是非常直观的存储器寻 址方式,但不方便处理整块的数据。
段基址的高 16 位 :段内偏移量
③ 8088/8086 CPU 按代码段、数据段、堆栈段、 附加段对内存进行分类管理:
段基址:偏移量
形成物理地址。由于在大多数使用场合地址指 针的段基址是“现成的”和隐含的,所以本小节讨 论的重点是“有效地址”——偏移量的问题。
偏移量是某存储单元和段基址间的距离,又被 称作有效地址。
偏移量或有效地址的形成:
偏移量=位移量+基地址+变址量
上述三个分量的不同组合,演绎出存储器寻 址的各种方式。
本章要点
寻址方式的概念和基本分类; 7 种寻址方式及“两对”寻址方式的区别; 寻址方式与常量、变量和指针的关系; 堆栈概念、结构元素和操作指令。
第三章 寻址方式及堆栈
CPU 访问内存的两个目的: ①读取指令;②存取数据。
CPU 访问内存的三种方式: ① 控制器自动取指循环; ② 程序控制方式访问数据段; ③ 堆栈方式。
和寄存器间接寻址方式相比,地址指针寄存 器的内容可以从0开始,这样地址指针寄存器可 以兼作计数器。
至于“变址寻址”和“基址寻址”的差异只 涉及使用地址指针寄存器的不同,在编程应用上 没有区别,故这两种寻址方式又统称为“寄存器 相对寻址”。
④ 相对基址变址寻址 有效地址是基址寄存器的内容、变址寄存器的
可以认为相对基址变址寻址方式是最一般的寻址 方式,其他寻址方式都可以看作是基址变址寻址方式 的特例。比如:
MOV AL, [100H+BX+SI] 去掉其中任一个或二个分量就会是某种其他寻址 方式。
3.1.4 寻址方式与常量、变量及“准指针” ① 立即数寻址方式对应汇编语言的常量; ② 存储器寻址方式对应汇编语言的变量; ③ 在各种地址指针寄存器参与的存储器寻址方式 中,地址指针寄存器充当“准指针”的角色。
No Image
两者的书写形式也不同,寄存器间接寻址时将 用作间接寻址的寄存器用方括号括起来。
能用作存储器间接寻址的有下述地址指针寄存 器:
BX, SI, DI, BP 显然,连续将上述寄存器的内容增一或减一, 可方面地处理数据块,如处理一维数据或字符串, 高精度数字运算等。可参与存储器寻址的寄存器又 被成为“地址指针寄存器”,具备“准指针”的功 能。
③ 变址寻址和基址寻址(寄存器相对寻址) 某地址指针寄存器的内容和指令中给出的位
移量之和形成有效地址的寻址方式。它是直接寻 址方式和寄存器间接寻址方式的一种组合,请看 例子:
MOV AL,[BX+20H] ADD AL,10[SI] 指令中10[SI]和[SI + 10]是等价的。
No Image
存放结果的 AX 的寻址方式是“寄存器寻址”,而
后面的 201H 是一个常数,它是随指令从代码段来
的。由于这类操作数就在指令中,“立即”可以参
与运算,故称作“立即数寻址方式”。因立即数伴
随指令在代码段中,所以这种寻址也应属存储器寻
址。
No Image
3.1.3 存储器寻址 存储器寻址必然涉及段,即最终要以逻辑地址
内容和指令中给出的位移量之和,如: MOV AL, 20H[BX][SI] MOV AH,80[BS][DI] MOV DX,100H[BX][DI]
20H[BX][SI] 也可以写成 [20H+BX+SI]。这种 寻址方式能比较方便地处理二维数组等更复杂的 结构数据。
由于基于 BP 的基址变址寻址的隐含段寄存器是 堆栈段 SS,所以在数据段的这种寻址方式常是 BX 分别和 SI 和 DI 配合。
串操作寻址和 I/O 寻址以后介绍。
物理地址、段、逻辑地址和寻址方式小结: ① 物理地址是地址信号和译码逻辑对存储单元的 唯一指定,本质上是组合逻辑电路的一种应用:
内存 地址 译码 逻辑
CPU
ຫໍສະໝຸດ Baidu
地址总线
数据总线
译码寻址方式
② 8088/8086寻址(或管理)1M的存储空间是通 过段来实现的: ➢ 段寄存器的内容存放和提供段基址的高 16 位, 用于指定低四位为零的存储单元作为段的起点; ➢ 16 位段内偏移量确定段内具体单元,段内管理 64K 的存储空间; ➢ 段寄存器的内容即段基址的高 16 位和段内偏移 量合称为逻辑地址:
3.1 寻址方式 一条汇编指令语句包含操作码和操作数两种
信息,有些像自然文字的谓语和宾语:
操作码 操作数或操作数的地址
操作码字段为指令,描述语句的功能; 操作数字段描述操作数或操作数的来源和去向;
CPU 获得操作数的方式叫作寻址方式。
三类寻址方式的特点: ➢ 寄存器寻址:存取数据在 CPU 内部进行,故 速度最快;寄存器数量很少,寻址方式简单; ➢ 存储器寻址:为便于组织串、数组等数据结构 复杂的数据处理,必须有更灵活、也就相对复杂 的寻址方式,是本节的重点; ➢ I/O端口寻址:I/O端口的任务是实现计算机核 心和外界的数据交换,故寻址方式也相对简单。
② 寄存器间接寻址 寄存器的内容是某存储单元的有效地址,以
这种方式寻址就叫作寄存器间接寻址。
如要将 200H 单元的内容送入 AL,使用寄存 器间接寻址需要这样:
MOV BX, 200H MOV AL,[BX] 所谓“间接” 就是操作数的取得是通过寄存 器间接获得的。应注意寄存器间接寻址方式和寄 存器寻址相区别:后者在意的目标的是寄存器的 内容,而前者是寄存器的内容作为偏移量的存储 单元的内容。
相关文档
最新文档