一、立即寻址方式
操作数作为指令的一部分而直接写在指令中,这种操作数称为立即数,这种寻址方式也就称为立即数寻址方式。
立即数可以是8位、16位或32位,该数值紧跟在操作码之后。如果立即数为16位或32位,那么,它将按“高高低低”的原则进行存储。例如:
MOV AH, 80H ADD AX, 1234H MOV ECX, 123456H
MOV B1, 12H MOV W1, 3456H ADD D1, 32123456H
其中:B1、W1和D1分别是字节、字和双字单元。
以上指令中的第二操作数都是立即数,在汇编语言中,规定:立即数不能作为指令中的第二操作数。该规定与高级语言中“赋值语句的左边不能是常量”的规定相一致。
立即数寻址方式通常用于对通用寄存器或内存单元赋初值。图是指令“MOV AX, 4576H”存储形式和执行示意图。
二、寄存器寻址方式
指令所要的操作数已存储在某寄存器中,或把目标操作数存入寄存器。把在指令中指出所使用寄存器(即:寄存器的助忆符)的寻址方式称为寄存器寻址方式。
指令中可以引用的寄存器及其符号名称如下:
8位寄存器有:AH、AL、BH、BL、CH、CL、DH和DL等;
16位寄存器有:AX、BX、CX、DX、SI、DI、SP、BP和段寄存器等;
32位寄存器有:EAX、EBX、ECX、EDX、ESI、EDI、ESP和EBP等。
寄存器寻址方式是一种简单快捷的寻址方式,源和目的操作数都可以是寄存器。
1、源操作数是寄存器寻址方式
如:ADD VARD, EAX ADD VARW, AX MOV VARB, BH等。
其中:VARD、VARW和VARB是双字,字和字节类型的内存变量。在第4章将会学到如何定义它们。
2、目的操作数是寄存器寻址方式
如:ADD BH, 78h ADD AX, 1234h MOV EBX, 12345678H等。
3、源和目的操作数都是寄存器寻址方式
如:MOV EAX, EBX MOV AX, BX MOV DH, BL等。
由于指令所需的操作数已存储在寄存器中,或操作的结果存入寄存器,这样,在指令执行过程中,会减少读/写存储器单元的次数,所以,使用寄存器寻址方式的指令具有较快的执行速度。通常情况下,我们提倡在编写汇编语言程序时,应尽可能地使用寄存器寻址方式,但也不要把它绝对化。
关键字:寻址方式 立即寻址 寄存器寻址
引用地址:
七种寻址方式(立即寻址、寄存器寻址)
推荐阅读最新更新时间:2024-03-16 15:32
ARM汇编--寻址方式
ARM7TDMI(-S)具有32位ARM指令集和16位Thumb指令集。 RM指令集效率高,但是代码密度高 Thumb指令集具有较高的代码密度,却仍然保持着ARM的大多数性能上的优势,它是ARM的子集。 所有的ARM置零都是可以条件执行的,而Thumb置零仅有一条指令具备条件执行的功能。 ARM和Thumb程序可以相互调用,相互之间状态切换开销几乎为零。 首先我们来看一下分类: 一、数据处理指令操作数寻址方式 1、立即数寻址方式 2、寄存器寻址方式 3、寄存器移位寻址方式 二、存储器访问指令操作数寻址方式 1、寄存器间接寻址 2、基址变址寻址 3、相对寻址 4、多寄存器寻址(块拷贝寻址) 5、堆栈寻址 下面
[单片机]
ARM微处理器的9种寻址方式
寻址方式是根据指令中给出的地址码字段来实现寻找真实操作数地址的方式。 ARM处理器具有9种基本寻址方式: 1.寄存器寻址; 2.立即寻址; 3.寄存器移位寻址; 4.寄存器间接寻址; 5.基址寻址; 6.多寄存器寻址; 7.堆栈寻址; 8.块拷贝寻址; 9.相对寻址。 1,寻址方式分类 立即寻址 立即寻址指令中的操作码字段后面的地址码部分即是操作数本身,也就是说,数据就包含在指令当中,取出指令也就取出了可以立即使用的操作数(这样的数称为立即数)。立即寻址指令举例如下: SUBS R0,R0,#1 ;R0减1,结果放入R0,并且影响标志位 MOV R0,#0xFF000 ;将立即数0xFF000装入R0寄存器
[单片机]
单片机寻址——立即寻址
在指令中直接给出操作数的寻址方式称为立即寻址。这个操作数叫立即数,如指令: MOV A, #3AH 该指令是将立即数3AH送累加器,由于MCS-51单片机的片内存储器是8位存储器,因此立即数一般为8位二进制数。在MCS-51的指令系统中,用#来识别立即数 在有的指令中,也会用到16位立即数,如: MOV DPTR, #0123H 该指令是将16位立即数0123H送数据指针DPTR(用于对16位地址的存储器寻址),DPTR由两个特殊功能寄存器DPH和DPL组成,在后面的寻址方式中会使用到DPTR。
[单片机]
51基址偏址的间接寻址方式详解
MCS-51中的查表指令中有寻址方式是采用基址偏址的间接寻址方式 MOVC A, @A+DPTR 我对这个命令一直不理解,@DPTR中应该是数据吧,@A中也是数据,他们相加怎么能是地址呢? DPTR是程序地址,A是偏移量,A+DPTR仍是程序地址,@A+DPTR是该地址中的数据值。 内容 地址 … 25 TABLE+5 16 TABLE+4 9 TABLE+3 4 TABLE+2 1 TABLE+1 0 TABLE … ROM印象图 例子:根据累加器A中的数(0-5),用查表的方法求平方值。 将0-5的平方值利用DB伪指令将其存放在程序存储器的平方值表中,将表的首地址送到DPTR中,将待查的数(设在R0中)送到A中,程序如
[单片机]
MCS-51指令系统主要有哪几种寻址方式?
MCS-51 指令 操作数主要有以下7种寻址方式: 寻址方式 举例 立即寻址 MOV A,#16 直接寻址 MOV 20H,P1 寄存器寻址 MOV A,R0 寄存器间接寻址 MOVX A, @DPTR 变址寻址 MOVC A, @A+DPRT 相对寻址 SJMP LOOP 位寻址 ANL C,70H
[单片机]