历史上的今天
返回首页

历史上的今天

今天是:2025年03月19日(星期三)

正在发生

2020年03月19日 | 单片机的几种寻址方式

2020-03-19 来源:eefocus

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


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) → 指令操作流程,将箭头左边的内容送入箭头右边的单元。

推荐阅读

史海拾趣

AMD(超微)公司的发展小趣事
  1. 公司成立与早期发展:AMD(Advanced Micro Devices)公司成立于1969年,由Jerry Sanders在美国加利福尼亚州圣克拉拉创立。最初,AMD致力于生产挑战Intel在x86处理器市场的产品,但起初面临着市场份额不足和技术挑战等问题。然而,随着时间的推移,AMD逐渐在市场上获得了一席之地,并推出了一系列创新产品。

  2. x86处理器市场竞争:AMD在x86处理器市场与Intel展开了激烈的竞争。1991年,AMD推出了第一款x86兼容处理器386DX-40,开始了与Intel的竞争。此后,AMD不断推出更快、更强大的处理器,如K6系列、Athlon系列等,一度取得了一定的市场份额。

  3. ATI收购与图形处理器发展:为了拓展业务,AMD于2006年收购了图形处理器制造商ATI Technologies。这一收购使AMD进入了图形处理器市场,并推出了一系列创新的图形处理器产品,如Radeon系列。AMD通过不断推出高性能、高度集成的图形处理器,赢得了广大用户的青睐。

  4. 全球Foundry战略:为了降低制造成本并提高生产效率,AMD实施了全球Foundry战略。2008年,AMD成立了GlobalFoundries,将自己的制造业务转移给这家独立的半导体制造公司。这一举措使AMD得以专注于设计和研发,提升了公司的竞争力。

  5. 技术创新与新市场拓展:除了在x86处理器和图形处理器市场取得成功外,AMD还不断进行技术创新,拓展新的市场。例如,AMD在数据中心领域推出了EPYC系列服务器处理器,致力于满足云计算和大数据处理的需求。此外,AMD还在游戏主机市场与Sony和Microsoft等公司合作,提供高性能的处理器和图形处理器。

这些故事展示了AMD在其创立以来的发展历程,包括在x86处理器市场的竞争、图形处理器领域的扩展、全球Foundry战略的实施以及在新兴市场的技术创新和市场拓展等方面取得的成就。

GE (General Electric)公司的发展小趣事
检查机床指示灯和照明灯是否正常工作,如有故障及时更换。
Fine Products Microelectronics Corp公司的发展小趣事
检查继电器、接触器、转换开关等控制元件是否接触良好,有无损坏或松动现象。
BUSSMANN公司的发展小趣事

随着全球经济的不断融合和发展,Bussmann公司也开始了其全球化战略。公司在全球范围内设立生产基地和研发中心,吸引和培养了大量的优秀人才。同时,公司也加大了对新技术和新产品的研发投入,不断推出具有竞争力的新产品。在全球市场上,Cooper Bussmann的电路保护方案广泛应用于各行各业,并获得了UL、CE、CSA等认证机构的认可。

这些故事展示了BUSSMANN公司在电子行业中的发展历程和取得的成就。从创业初期的艰辛与坚持,到汽车熔断器的崛起,再到库柏工业的收购与融合,以及芯片保险丝的创新突破和全球化战略的实施,BUSSMANN公司始终秉持着创新、质量和服务的理念,不断推动电子行业的发展和进步。

请注意,以上故事是基于BUSSMANN公司的历史和发展情况创作的,具体细节可能并不完全准确。如需了解更多关于BUSSMANN公司的信息,建议查阅相关的历史资料或访问其官方网站。

国盛科技(BOCHEN)公司的发展小趣事

国盛科技在技术创新方面取得了显著成果。截至目前,公司已累计取得8项发明专利、30项新型实用型专利,并成功转化了19项高新技术产品和知识产权成果。这些专利和成果的取得,不仅展示了国盛科技在电子元器件领域的研发实力,也为公司的持续发展提供了有力支撑。

Electronic公司的发展小趣事

英特尔,作为全球知名的半导体公司,其发展历程中充满了转型与挑战。随着个人电脑市场的饱和和移动互联网的兴起,英特尔面临了巨大的业绩压力。然而,通过持续的技术创新,英特尔成功将业务扩展至数据中心、物联网和自动驾驶等领域,实现了从PC芯片制造商向多元化技术公司的转型。尽管过程中不乏波折,但英特尔始终保持着对技术的热情和追求,不断推动着自身的发展。

问答坊 | AI 解惑

4-20mA 电流环路隔离器(ISO 4-20mA)

4-20mA 电流环路隔离器(ISO 4-20mA)低成本、小体积,两线制4-20mA电流环路隔离 IC说 明: ISO 4-20mA电流环隔离芯片是单片两线制隔离接口芯片,该IC内部包含有电流信号调制解调电路、信号耦合隔离变换电路等。很小的输入等效电阻,使该IC的输入电 ...…

查看全部问答>

t6963指令详解

最近一直在弄lcd液晶模块,很多液晶模块都是靠t6963控制的,很多lcd的pdf文档都没有详细介绍t6963控制指令,在此给出t6963指令详解,希望刚从事电子行业的朋友们,一起共同勉励!…

查看全部问答>

新手,急问。关于Unix移植Vxworks

Unix下的一个程序,我想把它移植到Vxworks上,编译的时候系统提示 找不到 我知道这是Unix下的 头文件,如何才能在Vxworks下编译通过。…

查看全部问答>

求助:wince键盘开发

首先,我们在arm下开发wince4.2系统 我们的系统打算用键盘控制,键盘上有F1-F10功能键与0-9数字键复用, 上下左右方向键,回车键等,打算自己做键盘,用一个单片机控制键盘,用串口将键盘的键码传输到arm。功能键用来实现一些功能界面的转换,数字 ...…

查看全部问答>

选择嵌入式培训机构注意什么

1.了解培训机构的师资情况。这一点对参加培训的学员来说是最重要的,每个机构都会说自己师资很好,但实际能不能在短期的培训过程中让学员学到有用的知识,虽然有个人主观学目前,关于嵌入式的培训机构多如牛毛,想学习嵌入式,我们必须要学会选择, ...…

查看全部问答>

我的DIY的LC测量器完成了

从开始搜集资料到现在,已有一段时日了,虽是断断续续在做,但最终还是有结果的了。我在这里用的是CM3微控器,就用了我手头上有的这块从eeworld申请到得stellaris  8962评估板。显示是用1602,因评估板上自带OLED屏,我就先用它作显示,它用着 ...…

查看全部问答>

Linux 红帽的系统,添加中文字库

        大家帮忙看一下,在系统里面英文是可以支持的,中午汉字不 支持,求高人指点一下!…

查看全部问答>

电路是如何记忆数据的?

哪位高人知道记忆电路的原理,具有记忆功能的电路有哪些?看什么书可以找到答案?…

查看全部问答>

DSP烧录到Flash中去了,仿真可运行,拔掉仿真器,开电重启不能运行

DSP烧录到Flash中去了,仿真可运行,不掉电拔掉仿真器可运行,但是断电重启,不能运行,这时候只要把仿真器(connect)连接起来,程式运行。求解???????????????…

查看全部问答>