3.汇编指令:【寻址方式】立即数寻址、寄存器寻址、存储器寻址 您所在的位置:网站首页 汇编语言16进制表示 3.汇编指令:【寻址方式】立即数寻址、寄存器寻址、存储器寻址

3.汇编指令:【寻址方式】立即数寻址、寄存器寻址、存储器寻址

2024-06-27 00:56| 来源: 网络整理| 查看: 265

文章目录 指令格式指令中的(目标 / 源)操作数来源一、立即数寻址二、寄存器寻址三、存储器寻址3.1 直接寻址3.2 寄存器间接寻址3.3 基址寻址 (寄存器相对寻址?)3.4 变址寻址(寄存器相对寻址?)3.5 基址变址寻址3.6 带位移的基址加变址寻址方式3.7 小结 ---------------------------------------------------------------------------------寻址方式中容易出现的错误另类写法练习题第1题第2题

指令格式

在这里插入图片描述

指令中的(目标 / 源)操作数来源

立即数:四位十六进制,如1234H 寄存器:操作手在寄存器中 存储器:操作数有“[ ]”

七种叫法:

立即寻址方式寄存器寻址方式直接寻址方式寄存器间接寻址方式寄存器相对寻址方式基址加变址寻址方式相对基址加变址寻址方式 一、立即数寻址

把一个数直接在指令里面给出来,然后把这个数赋值给目标操作数。如:把 1234H 这个数赋值给DX【数据寄存器】 在这里插入图片描述

但是,一般这种寻址方式我们只会在赋初值的时候才会用。

二、寄存器寻址

就是我们不直接在指令里面给出源操作数,而是把这个源操作数放在一个寄存器里面,通过寄存器来赋值。

例如:把通用寄存器 BX 里面存放的数据赋值给 AX。(源寄存器和目标寄存器的大小一定要相同) 在这里插入图片描述

三、存储器寻址 3.1 直接寻址

直接寻址的意思是,我们直接在指令里面给出源操作数的偏移地址,例如: 在这里插入图片描述

这里,我们就给出了源操作数的偏移地址是 3000H,那么段地址去哪了?

在没有特殊声明时,默认数据都在数据段 DS,如果数据是在其他段,例如附加段 ES,那么需要通过段超越的方式: 在这里插入图片描述

下图所示过程执行的是指令: MOV AL , [2000H] 在这里插入图片描述 直接寻址看起来简单易懂,但是有一个大问题:假设我们要计算1+2+⋯+100,假设 1 位于存储器的第100个单元,如果采用直接寻址的方式,我们首先:要写出第一个地址,赋值、再写第二个地址,赋值、再相加、继续写地址,赋值、、、、这样一来,这个简单的问题都快需要几百行指令了,这显然十分麻烦,因此也有了下面的寄存器间接寻址。

3.2 寄存器间接寻址

这里是通过把偏移地址放在寄存器中的寻址方式。用于存放数据在内存中的偏移地址的,只能有 4 个通用寄存器:BX, BP, SI, DI。

BX:基址寄存器 BP:基址指针 SI:源变址寄存器 DI:目的变址寄存器

如果存放偏移地址的是寄存器:BX, SI, DI, 那么默认的段就是数据段 DS; 如果存放偏移地址的是寄存器:BP,那么默认的段就是堆栈段 SS

例子: 在这里插入图片描述 这就说明数据的偏移地址存放在 BX 里面,由于没有使用段超越,所以段默认是数据段 DS。但是这个例子里面取完数据赋值是有讲究的:

因为我们知道:16位 CPU 它这个内存单元一个就是 8位的,我们通过 [BX] 所访问到的就是一个存储单元,也就是说,我们只取出了1个数,这个数是 8 位的。但是想要赋值的寄存器 AX 是 16位的,因此这时,我们还需要再往下多取一个8位二进制数,作为高位,存放在 AH。

下图所示的过程执行的是指令: MOV AX , [ BX] 在这里插入图片描述

3.3 基址寻址 (寄存器相对寻址?)

采用基址寻址时,我们的偏移地址是这样表示的:[基址寄存器] + 偏移量

这里,偏移量是一个常数,而能够存放基址的,只有 BP 和 BX。

在使用 BX【基址寄存器】 时,默认的段就是数据段DS;在使用 BP 【基址指针】时,默认的段就是堆栈段 SS

例子: 在这里插入图片描述

下图所示过程展示的是指令:MOV AL , [ BX + 5] 在这里插入图片描述

3.4 变址寻址(寄存器相对寻址?)

上面我们采用的偏移地址表示是 [基址寄存器] + 偏移量,而在变址寻址中,我们偏移地址的表示就是:[变址寄存器] + 偏移量。

在16位变址寻址中,变址寄存器只能是SI 、 DI,且它们都是默认段是 DS

变址寻址主要的目的是为了一维数组的操作,因为我们知道,要想访问一维数组,需要有表头,还要有数组内数据和表头的距离。那么我们常常用那个常数偏移量代表表头,有寄存器的变化代表数组内元素距表头的距离。

例子: 在这里插入图片描述

3.5 基址变址寻址

类似的,在这种寻址方式下,我们的偏移地址就表示成:[基址寄存器] + [变址寄存器]

基址+变址的目的是为了用于二重循环和对二维数组的操作。例如: 在这里插入图片描述

说明:在这种寻址模式下,哪个段主要取决于基址寄存器

下图展示的是指令: MOV AX , [ BX + SI ] 在这里插入图片描述

3.6 带位移的基址加变址寻址方式

一样地,这里偏移地址的表示方式是:[基址寄存器]+[变址寄存器]+偏移量] 例如: 在这里插入图片描述

3.7 小结

在这里插入图片描述

--------------------------------------------------------------------------------- 寻址方式中容易出现的错误

在这里插入图片描述

另类写法

在这里插入图片描述 在这里插入图片描述

练习题 第1题

在这里插入图片描述

在这里插入图片描述 在这里插入图片描述

第2题

在这里插入图片描述



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有