当前位置:首页 > 单片机 > 单片机
[导读]寻址就是寻找指令中操作数或操作数所在的地址。所谓寻址方式,就是如何找到存放操作数的地址,把操作数提取出来的方法。通常指源操作数的寻址方式。

寻址就是寻找指令中操作数或操作数所在的地址。所谓寻址方式,就是如何找到存放操作数的地址,把操作数提取出来的方法。通常指源操作数的寻址方式。

MCS-51系列单片机寻址方式共有七种:寄存器寻址、直接寻址、立即数寻址、寄存器间接寻址、变址寻址、相对寻址、位寻址。

1、寄存器寻址

寄存器寻址是指操作数存放在某一寄存器中,指令中给出寄存器名,就能得到操作数。寄存器可以使用寄存器组R0~R7中某一个或其它寄存器(A,B,DPTR等)。

例如:

MOV A,R0 ;(R0 )→A

MOV P1,A ;(A)→P1

ADD A, R0 ;(A)+(R0) →A

2、直接寻址

在指令中直接给出操作数所在的存储单元的地址,称为直接寻址方式。在8051中,使用直接寻址方式可访问片内RAM的128个单元以及所有的特殊功能寄存器(SFR),对于特殊功能寄存器,既可以使用他们的地址,也可以使用他们的名字。

例如:

MOV A, 3AH ;(3AH) →A

又如:

MOV A, P1 ;(P1口) →A

也可写为:

MOV A, 90H ; 90H是P1口的地址。

3、立即数寻址

指令操作码后面紧跟的是一字节或两字节操作数,用 # 号表示,以区别直接地址。例如:

MOV A, #3AH ;3AH→A

MCS-51系列单片机有一条指令,要求操作码后面紧跟的是两个字节立即数,即

MOV DPTR, #DATA16

4、寄存器间接寻址

寄存器中的内容是一个地址,由该地址单元寻址到所需的操作数.

例如: MOV R1,#30H ;(R1)← 立即数30H

MOV @R1,#0FH ;(30H)←立即数0FH

MOV A,@R1 ;(A)←((30H))=#0FH

注意:

“间接”表示某寄存器中的“内容”只是一个“单元地址”,这个地址单元中存放的数据才是要找的“操作数”。

例如,指令MOV A,@R0执行的操作是将R0的内容作为内部RAM的地址,再将该地址单元中的内容取出来送到累加器A中,如图所示。

5、变址寻址 ,也称为: 基址寄存器+变址寄存器间接寻址

以16位的地址指针寄存器DPTR或 16位的PC寄存器为基址寄存器,以累加器 A 为变址寄存器,两者中的“内容”形成一个16位的“地址”,该“地址”所指的存储单元中的内容才是操作数。用变址寻址方式只能访问程序存储器,访问的范围为64KB,当然,这种访问只能从ROM中读取数据而不能写入。

例如: MOVC A, @A+DPTR ;((A)+ (DPTR))→A

设:A中已存有#30H,DPTR中已存有#1000H

MOVC A,@A+DPTR;(A)←((A)+(DPTR))

操作:将30H+1000H=1030H单元中的数放进累加器A

6、相对寻址

相对寻址只出现在相对转移指令中。相对转移指令执行时,是以当前的PC值加上指令中规定的偏移量rel而形成实际的转移地址。这里所说得PC的当前值是执行完相对转移指令后的PC值,一般将相对转移指令操作码所在的地址称为源地址,转移后的地址称为目的地址。于是有:目的地址=源地址+2(相对转移指令字节数)+rel

51单片机指令系统中相对转移指令既有双字节的,也有三字节的。

7、位寻址

采用位寻址方式的指令,操作数是8位二进制数中的某一位。指令中给出的是位地址,是片内RAM某个单元中的某一位的地址。位地址在指令中用bit表示。

例: CLR P1.0 ;(P1.0) ← 0

SETB ACC.7 ;(ACC.7)← 1

CPL C ;( C )← NOT( C )

位地址常用下列三种方式表示;

(1)直接使用位地址表示。对于20H~2FH的16个单元共128位,位地址分布是00H~7FH。

(2)对于特殊功能寄存器,可以直接用寄存器名字加位数表示,如PSW.3、ACC.5等。

(3)对于定义了位名字的特殊位,可以直接用其位名表示,例如:CY、AC等。

寻址方式及对应存储器空间

寻址方式
寻址空间
立即数寻址
程序存储器ROM、数据存储器RAM
直接寻址
片内RAM低128B,特殊功能寄存器
寄存器寻址
通用寄存器R0---R7,其他寄存器A、B、DPTR
寄存器间接寻址
片内RAM低128B【@R0、@R1、SP(仅PUSH、POP)】
片外RAM(@R0、@R1、@DPTR)
变址寻址
程序存储器、数据存储器、(@A+PC、@A+DPTR)
相对寻址
程序存储器256B(PC+偏移量)
位寻址
片内RAM的20H---2FH字节地址、部分特殊功能寄存器

寻址方式中常用符号注释

(1) Rn(n=0~7) 当前选中的工作寄存器R0~R7 。

(2) Ri(i=0,1) 当前选中的工作寄存器组中,可作为间址寄存器

的两个工作寄存器R0、R1。

(3) #data 8位立即数。

(4) # data16 16位立即数。

(5) direct 8位片内RAM单元(包括SFR)的直接地址。

(6) addr11 11位目的地址,用于ACALL和AJMP指令中。

(7) addr16 16位目的地址,用于LCALL和LJMP指令中。

(8) rel 补码形成的8位地址偏移量。

(9) bit 片内直接寻址位地址。

(10)@ 间接寻址方式中,表示间址寄存器的符号。

(11)/ 位操作指令中,表示对该位先取反再参与操作,但

不影响该位原值。

(12)(X) 表示X中的内容。

(13)((X)) 由X指出的地址单元中的内容。

(14) → 指令操作流程,将箭头左边的内容送入箭头右边的单元。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

在现代电子技术的快速发展中,单片机以其高度的集成性、稳定性和可靠性,在工业自动化、智能家居、医疗设备、航空航天等诸多领域得到了广泛应用。S32单片机,作为其中的佼佼者,其引脚功能丰富多样,是实现与外部设备通信、控制、数据...

关键字: s32单片机引脚 单片机

在微控制器领域,MSP430与STM32无疑是两颗璀璨的明星。它们各自凭借其独特的技术特点和广泛的应用领域,在市场上占据了重要的位置。本文将深入解析MSP430与STM32之间的区别,探讨它们在不同应用场景下的优势和局限...

关键字: MSP430 STM32 单片机

该系列产品有助于嵌入式设计人员在更广泛的系统中轻松实现USB功能

关键字: 单片机 嵌入式设计 USB

单片机编程语言是程序员与微控制器进行交流的桥梁,它们构成了单片机系统的软件开发基石,决定着如何有效、高效地控制和管理单片机的各项资源。随着微控制器技术的不断发展,针对不同应用场景的需求,形成了丰富多样的编程语言体系。本文...

关键字: 单片机 微控制器

单片机,全称为“单片微型计算机”或“微控制器”(Microcontroller Unit,简称MCU),是一种高度集成化的电子器件,它是现代科技领域的关键组件,尤其在自动化控制、物联网、消费电子、汽车电子、工业控制等领域...

关键字: 单片机 MCU

STM32是由意法半导体公司(STMicroelectronics)推出的基于ARM Cortex-M内核的32位微控制器系列,以其高性能、低功耗、丰富的外设接口和强大的生态系统深受广大嵌入式开发者喜爱。本文将详细介绍S...

关键字: STM32 单片机

在当前的科技浪潮中,单片机作为嵌入式系统的重要组成部分,正以其强大的功能和广泛的应用领域受到越来越多行业的青睐。在众多单片机中,W79E2051以其卓越的性能和稳定的工作特性,成为市场上的明星产品。本文将深入探讨W79E...

关键字: 单片机 w79e2051单片机

单片机,又称为微控制器或微处理器,是现代电子设备中的核心部件之一。它集成了中央处理器、存储器、输入输出接口等电路,通过外部信号引脚与外部设备进行通信,实现对设备的控制和管理。本文将详细介绍单片机的外部信号引脚名称及其功能...

关键字: 单片机 微控制器 中央处理器

随着科技的飞速发展,单片机和嵌入式系统在现代电子设备中的应用越来越广泛。它们不仅提高了设备的智能化水平,还推动了各行各业的创新与发展。在单片机和嵌入式系统的开发中,编程语言的选择至关重要。本文将深入探讨单片机和嵌入式系统...

关键字: 单片机 嵌入式系统 电子设备

PLC(可编程逻辑控制器)和单片机是两种不同的控制设备,它们之间存在明显的区别:

关键字: 单片机 plc 控制器
关闭
关闭