51单片机的寻址方式

合集下载

51单片机寻址方式

51单片机寻址方式

51单片机寻址方式在单片机的世界里,寻址方式就像是寻找宝藏的地图和指南。

对于51 单片机而言,掌握好寻址方式是深入理解其工作原理和进行有效编程的关键。

51 单片机的寻址方式主要包括立即寻址、直接寻址、寄存器寻址、寄存器间接寻址、变址寻址、相对寻址和位寻址这七种。

首先来聊聊立即寻址。

在立即寻址中,操作数直接包含在指令中。

这就好比你已经知道了宝藏的确切位置,指令中给出的就是这个确切的“位置”。

比如“MOV A,50H”这条指令,其中“50H”就是立即数,单片机直接使用这个数进行操作,速度快,效率高。

直接寻址是另一种常见的方式。

它直接给出操作数所在的存储单元地址。

就像是告诉你宝藏在哪个房间,你直接去那个房间就能找到。

例如“MOV A,50H”,这里的“50H”表示的是内部数据存储器的地址,单片机通过这个地址去获取数据。

寄存器寻址则是通过指定寄存器来获取操作数。

寄存器就像是你的贴身口袋,数据就在里面,取用方便。

比如“MOV A,R0”,这里就是把寄存器 R0 中的内容送到累加器 A 中。

寄存器间接寻址稍微有点复杂。

它是通过寄存器中的内容作为地址,再去寻找操作数。

这有点像通过一个中间人告诉你宝藏的位置。

比如“MOV A,@R0”,先看 R0 中的值,把这个值当作地址,然后从这个地址中取出数据送到 A 中。

变址寻址则在访问程序存储器中的数据表格时非常有用。

它通过基址寄存器(DPTR 或 PC)与变址寄存器(A)的相加来得到操作数的地址。

可以想象成你从一个起点出发,根据特定的变化规则找到最终的目标。

相对寻址常用于跳转指令。

它是基于当前程序计数器(PC)的值加上一个相对偏移量来确定目标地址。

这就像你在一条路上,根据当前位置和一个相对距离来找到下一个要去的地方。

最后是位寻址。

在 51 单片机中,有一部分存储单元可以按位进行操作。

这就像是能够精确地找到宝藏箱子上的特定锁扣。

比如“SETB20H0”,就是把内部数据存储器 20H 单元的第 0 位设置为 1。

3-2寻址方式

3-2寻址方式
3-2 寻址方式
• 学习单片机的寻址方式及其功能
• 学习如何判断一条是何种寻址方式
1、MCS-51单片机的指令系统有几种寻址方式 2、什么是立即数 3、什么直接寻址 4、直接寻址方式与立即寻址方式有什么区别 5、寄存器寻址、寄存器间接寻址、变址寻址、 位寻址、相对寻址的概念 6、七种寻址方式分别有什么特征

指令包含操作码和操作数,有些指令直接 给出参与运算和操作的数,但更多指令只 是以各种方式给出操作数所在的地址。单
片机通过地址信息寻找操作数的方式,称
为寻址方式。寻址方式越多,表明计算机
的功能越强,灵活性越好。
单片机C51的寻址方式
1、寻址方式:寻找操作数或指令的地址的方式。
2、寻址方式的种类:共有7种,
• [例 ] • •
MOV A,#30H MOV DPTR,#1240H 则A和DPTR的内容是多少?
直接寻址
1. 概念:
指令中直接给出操作数所在地址的寻址方式称为直接寻址
2. 寻址空间
片内RAM( 128字节)
如:MOV A,50H ;以50H为地址,寻找到的内容,送给A
• 例如:MOV A,30H 这条指令中操作数就在30H单元中,也 就是30H是操作数的地址,并非操作数。
寄存器寻址、直接寻址、寄存器间接寻址、
立即寻址、 变址寻址、 相对寻址和位寻址。
立即寻址
1、指令中的操作数只是数据,而不是地址,这样的操作数就称
为立即数,立即数直接参与操作,这种寻址方式称为立即寻
址。
2、立即数
大多是一个字节的8位二进制数
标识:#源操作数
3、寻址空间:ROM
• 4、例如:
(1)MOV A,#3AH

51 单片机片内 256 字节数据存储器的结构划分以及对应的寻址方式

51 单片机片内 256 字节数据存储器的结构划分以及对应的寻址方式

51 单片机片内256 字节数据存储器的结构划分以及对应的寻址方式1. 引言1.1 概述在现代电子技术的快速发展下,单片机已经成为各种电子设备中必不可少的核心控制部件之一。

而51单片机作为最常用的单片机之一,其内部结构和功能一直备受关注。

本文将主要探讨51单片机中的一个重要组成部分——256字节数据存储器,介绍其结构划分以及对应的寻址方式。

1.2 文章结构本文总共包含五个部分。

首先是引言部分,介绍文章的概述、结构和目的。

第二部分将详细阐述51单片机中256字节数据存储器的结构划分,强调其在整个单片机系统中的重要性。

第三部分将着重介绍对应于256字节数据存储器的寻址方式,包括直接寻址方式、间接寻址方式和寄存器间接寻址方式等。

第四部分将通过具体实例来探讨256字节数据存储器在不同应用场景下的使用方法和优化方案。

最后一部分是结论和展望,在对前文进行总结基础上,提出未来研究方向和发展建议。

1.3 目的本文旨在深入探讨51单片机中256字节数据存储器的结构划分和对应的寻址方式,通过具体实例的分析,揭示其在不同应用场景下的优势和应用方法。

希望通过本文的研究和讨论,读者能够更好地理解和应用256字节数据存储器,为单片机系统设计提供有益的参考和指导。

2. 51单片机片内256字节数据存储器的结构划分2.1 片内数据存储器的重要性在嵌入式系统设计中,片内数据存储器是非常重要的组成部分。

它用于存储程序指令、变量数据以及其他运行时需要使用的临时数据。

片内数据存储器的规模和结构会直接影响到系统性能和资源利用率。

2.2 51单片机中的256字节数据存储器概述51单片机是一款广泛应用于各种电子设备中的经典单片机。

其中包含了一个256字节大小的片内数据存储器,用于存储程序指令和变量数据。

这256字节数据存储器可以被划分为不同的区域,每个区域有不同的功能和使用方式。

下面将介绍这些区域以及其对应功能。

2.3 256字节数据存储器的物理结构划分在51单片机中,256字节数据存储器可以被划分为以下几个区域:1) SFR(特殊功能寄存器)区域:这个区域占据了部分地址空间,用于保存各种特殊功能寄存器的值。

第三章 MCS-51单片机的寻址方式和指令系统

第三章 MCS-51单片机的寻址方式和指令系统

由此可把数据传送指令分成三部分
(一)内部数据传送(通用传送指令)
1.以A为目的操作数
MOV A,Rn MOV A,@Ri ;A← (Rn) ;A←((Ri))
双字节
11101rrr 1110011i
MOV A,direct ;A←(direct) 11100101 direct
MOV A,#data ;A←#data 例: MOV A,@R1 若(R1)=20H,(20H)=62H 结果:(A)=62H 11100100 data
指令MOVC A,@A+DPTR;执 行示意图
结果:(ACC)=64H
六、相对寻址

以当前PC的内容为基准,加上指令给出的 偏移量(rel)形成新的PC值(转移地址) 的寻址方式。
转移地址=目的地址 =当前(PC)+rel
目的地址=PC当前值十rel 目的地址=转移指令的PC值+2(或3)十rel 目的地址=转移指令地址+转移指令字节数+rel
单周期:64 双周期:45 四周期:2
若fosc=12MHz, 大多指令执行 仅1μs
按照指令的功能分5大类
一、数据传送类指令(29条) 二、算术运算类指令(24条) 三、逻辑操作类指令(24条) 四、控制转移类指令(17条) 五、位操作类指令 (17条)
在描述指令系统的功能时,常用符号介绍:
@——间址符号,如@Ri,@DPTR 13. / ——位操作数的前缀,表示对该位操作 数取反,如/bit。 14. (×)——由×寻址的单元中的内容。 15. ((X))——由X的内容作为地址的存 储单元的内容。 16. ← ——箭头右边的内容取代箭头左边的 内容。
12.
一、数据传送类指令(29条)

MS51单片机

MS51单片机
在8051中,位地址常用下列两种方式表示: (1)直接使用位地址。 (2)直接用特殊功能寄存器名加位数表示,
如PSW.3
例如:MOV C, 37H; (Cy) ← (37H)
二、寻址空间及举例
寻址空间见表3-1
例3-1 将D5H位的内容送入Cy,可用几种方式表达?
(1) MOV C, D5H (2) MOV C, D0H.5 (3) MOV C, F0 (4) MOV C, PSW.5
目的地址=PC当前值+rel=起始地址+转移指令 本身字节数+rel
相对偏移量rel是有符号的8位二进制数,用补 码表示。
例如:程序存储器1068H地址单元开始存放双字节指令 SJMP 30H,执行后PC当前值为(PC)←(PC) +2=1068H+2=106AH,则跳转目的地地址为
106AH+30H=109AH
例3.2 判断下列指令个操作数的寻址方式
(1) MOV (2) MOV (3) MOV (4) MOV
A, #65H @ R1, 65H 30H, R2 C, 20H
(5) DJNZ R2, (6) MOV 60H, (7) MOVC A,
LOOP @R1
@A+DPTR
例如: MOVC A,@A+DPTR;((A)+(DPTR))→(A)
6、相对寻址
相对寻址只出现在相对转移指令中。相对转移 指令执行时,是以当前的PC值加上指令中给出 的相对偏移量rel而形成转移目的地址。
PC的当前值是执行完相对转移指令后的PC值, 实际上是紧接转移指令下面一条指令的地址。
7、位寻址
位寻址适用于可以进行单独位操作的指 令,指令中直接给出位地址寻找位操作 数。

单片机的几种寻址方式

单片机的几种寻址方式

单片机的几种寻址方式
寻址就是寻找指令中操作数或操作数所在的地址。

所谓寻址方式,就是如何找到存放操作数的地址,把操作数提取出来的方法。

通常指源操作数的寻址方式。

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

1、寄存器寻址
寄存器寻址是指操作数存放在某一寄存器中,指令中给出寄存器名,就能得到操作数。

寄存器可以使用寄存器组R0~R7 中某一个或其它寄存器(A,B,DPTR 等)。

例如:
MOV A,R0 ;(R0 )→A
MOV P1,A ;(A)→P1
ADD A, R0 ;(A)+(R0) →A。

51系列单片机的寻址方式

51系列单片机的寻址方式

51系列单⽚机的寻址⽅式AT89C51单⽚机能直接认识和执⾏的机器指令有255条,有7种寻址⽅式,即⽴即寻址、直接寻址、寄存器寻址、寄存器间接寻址、变址寻址、相对寻址和位寻址。

1. 直接寻址:指令中直接给出参与操作的数据的地址,该地址⼀般⽤direct表⽰。

汇编指令:MOV A,direct该指令的功能是将⽚内RAM地址direct单元中的内容(参与操作的数据)传送到累加器A中,双字节指令。

2. ⽴即寻址:指令中直接给出参与操作的数据,称⽴即数,⽤data表⽰。

在汇编语⾔中,为标明⽴即数,为data加前缀”#”。

⽴即数可以是8位和16位⼆进制数,分别⽤#data和#data16表⽰。

汇编语⾔指令:MOV A,#data该指令将⽴即数data传送到累加器A中,双字节指令。

3. 寄存器寻址:参与操作的数据存放在寄存器中,汇编指令中直接以寄存器名来表⽰参与操作的数据地址,寄存器包括⼯作寄存器R0~R7、累加器A、AB、数据指针DPTR和位运算寄存器C。

汇编语⾔指令:MOV A,Rn ;n=0~7该指令将Rn中的内容传送到累加器A中,单字节指令。

4. 寄存器间接寻址:寄存器间接寻址为⼆次寻址,第⼀次寻址得到寄存器的内容为(Ri)或(DPTR),第⼆次寻址是将第⼀次寻址得到的寄存器内容作为地址,并在其中存、取参与操作的数据。

汇编语⾔中,寄存器前缀@是寄存器间接寻址的标志,有@Ri、@DPTR等。

汇编语⾔指令:MOV A,@Ri ;i=0、1该指令是将Ri中的内容作为地址,再将该地址中的内容传送到累加器A中,单字节指令。

5. 变址寻址:间接寻址由两个寄存器提供。

若由A、PC提供,在汇编语⾔指令中寻址地址表⽰为@A+PC;若由A和DPTR提供,在汇编语⾔指令中寻址地址为@A+DPTR。

其中,PC或DPTR被称为基址寄存器,A被称为变址寄存器,基址与变址相加为16位⽆符号加法。

若变址寄存器A中内容加基址寄存器DPTR(或PC)中内容时,低8位有进位,则该进位直接加到⾼位,不影响进位标志。

MCS-51系列单片机寻址方式

MCS-51系列单片机寻址方式

程序存储器
SFR
PC
10010011 操作码 A
1XEXH
030FH
XX
DPH 02H 02F1H DPL F1H
ALU
02F1H +1EH=030FH
7
6、相对寻址(一)
相对寻址以PC当前值(PC当前值是执行完指令后的值,也就 是当前指令的PC值+指令所占的字节数)作为基地址,与指令 中给定的偏移量rel相加,所得的结果作为程序的转移地址, 指令中的偏移量rel是一个用补码表示的8位带符号数。相对 寻址用于相对转移指令中,如:
MCS-51系列单片机寻址方 式
寻址方式:计算机指令中操作数(按地址)获取的方式 MCS-51系列单片机提供了7种寻址方式,如果一条指令 中包含多个操作数,就可能用到一种以上的寻址方式
1、立即寻址 2、直接寻址 3、寄存器寻址 4、寄存器间接寻址 5、变址寻址 6、相对寻址 7、位寻址
1
1、立即寻址(一)
8
6、相对寻址(二)
程序存储器
PC 0100H PC+1 0101H PC+2 0102H
60H 30H
操作码
偏移量 rel=30H
PC 01032H
PC 0123H XX
ALU 0102H +30H= 0132H
9
7、位寻址
MCS-51系列单片机中有专用的位运算指令,可以对位寻址区的每一 个位进行数据传送、逻辑运算等操作,如:
R5 XX
A XX
5
4、寄存器间接寻址
在指令的操作码中包含了某一工作寄存器的地址(可用作地 址指针的工作寄存器是@Ri:R0、R1),而操作数地址则存 放在该寄存器中,如:

MCS-51单片机寻址方式小结

MCS-51单片机寻址方式小结

MCS-51单片机寻址方式小结MCS-51单片机寻址方式小结MCS-51单片机寻址方式小结20__-08-2920:34:02|分类:エ程|标签:|字号大中小订阅MCS-51单片机指令系统共使用7中寻址方式,包括寄存器寻址、直接寻址、立即数寻址、寄存器间接寻址、变址寻址、相对寻址、位寻址等。

寻址方式定义操作数存放(1)通用寄存器R0~R7;寄存器于寄存器中,(2)部分专用寄存器,例如累加器A、寄存器B以寻址指令中给出数据指针DPTR等名寄存器存放操作数的(1)内部RAM中的低128地址单元,地址范围为内存单元地址00H~FFH;直接寻址直接写在指令中立即数操作数直接寻址写在指令中(2)专用寄存器。

专用寄存器除以单元地址形式给出外,还可以以寄存器符号形式给出。

源操作数为立即数,立即数前面必须加“#”号,以区别立即数和直接地址(1)内部RAM的低128字节。

对内部RAM的低128字节单元的间接寻址,只能使用R0或R1做间将存放操作接寻址寄存器,其通过形式为@Ri(i=0或1);MOVP1,#55HMOVDPTR,#20__HMOVR1,20HMOVA,P1CLRAMOVP1,R4MOVA,R1寻址区域指令举例数的内存单元(2)外部RAM的64K字节。

对外部RAM的64KMOVA,@R0寄存器的地址放在寄字节的间接寻址,使用DPTR作间接寻址寄存器,MOVXA,@DPTR间接寻址存器中,指令其形式为@DPTR;MOVXA,@R0中只给出该寄(3)外部RAM的低256字节。

外部RAM的低256存器字节是一个特殊的寻址区,除了可以使用DPTR作间接寻址寄存器外,还可以使用R0或R1作间接寻址寄存器将基寄存器变址寻址与变址寄存器的内容相(1)变址寻址是专门针对程序存储器的寻址方式,所以只能对程序存储器进行寻址,寻址范围为64K字节;MOVCA,@A+PC加,结果作为操作数的地址(2)变址寻址指令只有2条:MOVCA,@A+PCMOVCA,@A+DPTR将程序计数器PC的当前内容与指令相对寻址中的操作数相加,其结果作为跳转指令的转移地址(1)内部RAM的位寻址区,地址范围是20H~2FH,共16个RAM单元,每个单元包括8个位,共按位进行的位寻址操作(2)特殊功能寄存器SFR中的11个寄存器可以位寻址,包括83个位计128个位,位地址为00H~7FH;MOVC,0D0HMOVC,0DOH.0MOVC,PMOVC,PSW.0专门为改变程序执行方向而设置的SJMP54H扩展阅读:课题MCS-51型单片机的寻址方式广告灯设计软件部分课题MCS-51型单片机的寻址方式授课方式:讲授教学目的:1.让学生了解汇编语言指令的格式;2.让学生掌握单片机指令的7种寻址方式。

第三讲51单片机存储器及寻址方式

第三讲51单片机存储器及寻址方式

TMOD 定时器方式寄存器
部分专用寄存器介绍
1) 程序状态字寄存器PSW C AC F0 RS1 RS0 OV F1 P
C:为进位标志,AC:半进位标志,F0 、 F1为用户标志, RS1和RS0为当前工作寄存器组的选择位,OV 是溢出标志 位, P是奇偶标志位。
2)ACC:累加器 3)DPTR:地址寄存器
B ACC PSW TH2* TL2* RCAP2H* RCAP2L* T2MOD* T2CON* IP P3 专 IE 用 WDTRST 寄 P2 存 SBUF 器 SCON 区 P1 SFR TH1 TH0 TL1 TL0 TMOD TCON PCON DP1H DP1L DPH DPL SP P0
工作寄存器区: 00H~1FH
30H 2FH
用户RAM区

位寻址区:
20H~2FH
20H 1FH 18H 17H
位寻址区 (位地址00H~7FH)
第3组工作寄存器区R0~R7

用户RAM区: 30H~7FH
第2组工作寄存器区R0~R7 10H 0FH 第1组工作寄存器区R0~R7 08H 07H 第0组工作寄存器区R0~R7 00H
二、数据存储器
工作寄存器区

地址:00H~1FH,32B;

4组:每组为8个8位寄存器
R0~R7;

由PSW中的RS1,RS0选择 当前工作寄存器。
RS1RS0与工作寄存器的关系
工作寄存器选择

0 1 2
RS1 RS0 R0
0 0 1 0 1 0 00H 08H 10H
R1
01H 09H 11H
假定R1寄存器的内容是 60H,则其功能是以 R1寄存 器的内容60H为地址,将60H地址单元的内容与累加器A 中的数相“与”,其结果仍存放在A中。

51单片机寻址方式

51单片机寻址方式

51单片机的寻址方式寻址方式:指定操作数所在单元的方法。

在我们学习的8051单片机中,有7种寻址方法,下面我们将逐一进行分析。

一、立即寻址用“#”作前缀MOV A,#20H在这种寻址方式中,指令多是双字节的。

立即数就是存放在程序存储器中的常数,换句话说就是操作数(立即数)是包含在指令字节中的。

例如:MOV A,#3AH这条指令的指令代码为74H、3AH,是双字节指令,这条指令的功能是把立即数3AH送入累加器A中。

MOV DPTR,#8200H在前面学单片机的专用寄存器时,我们已学过,DPTR是一个16位的寄存器,它由DPH及DPL两个8位的寄存器组成。

这条指令的意思就是把立即数的高8位(即82H)送入DPH寄存器,把立即数的低8位(即00H)送入DPL寄存器。

二、直接寻址指令中直接给出操作数的地址。

MOV A,30H;这条指令中操作数就在30H单元中,也就是30H是操作数的地址,并非操作数。

MOV 30H,DPH在80C51单片机中,直接地址只能用来表示内部数据存储器、位地址空间以及特殊功能寄存器,具体的说就是:1、内部数据存储器RAM低128单元。

在指令中是以直接单元地址形式给出。

我们知道低128单元的地址是00H-7FH。

在指令中直接以单元地址形式给出这句话的意思就是这0-127共1 28位的任何一位,例如0位是以00H这个单元地址形式给出、1位就是以01H单元地址给出、127位就是以7FH形式给出。

2、位寻址区。

20H-2FH地址单元。

3、特殊功能寄存器。

专用寄存器除以单元地址形式给出外,还可以以寄存器符号形式给出。

例如下面我们分析的一条指令 MOV IE,#85H 前面的学习我们已知道,中断允许寄存器IE的地址是80H,那么也就是此指令也可以以 MOV 80H,#85H的形式表述。

直接寻址是唯一能访问特殊功能寄存器的寻址方式!大家来分析下面几条指令:MOV 65H,A ;将A的内容送入内部RAM的65H单元地址中MOV A,direct ;将直接地址单元的内容送入A中MOV direct,direct;将直接地址单元的内容送直接地址单元MOV IE,#85H ;将立即数85H送入中断允许寄存器IE前面我们已学过,数据前面加了“#”的,表示后面的数是立即数(如#85H,就表示85H就是一个立即数),数据前面没有加“#”号的,就表示后面的是一个地址地址(如,MOV 65H,A这条指令的65H就是一个单元地址)。

51单片机寻址方式

51单片机寻址方式
指 令 的寻址方式M O V A ,# 2 0 H 这 条 指 令 , 第 一 个 词M O V 是 命 令 动 词 , 也 就 是 决 定 做 什 么 事 情 的 。M O V 是英文 单词 “ M O V E ” 少 写 了 一 个E ,代 表 的含 义 是 “ 传 递 或 传 送 ” ,这 就 是 指 令 , 规 定 做 什 么 事情 , 数 据 传 递 必 须 要 有 一 个 “ 源 ”也 就 是你 要 送 什 么 数 , 必 须 要 有 一 个 “目的 ” , 也 就 是 你 这 个 数 要 送 到 什 么 地 方 去 , 显 然 在 上 面 那 条 指 令 中 ,要 送 的 数 ( 源 )就是2 0 H , 而 要 送 达 的地 方 ( 目 的地 )就 是A 这个 累加 器 。注 意 :源 操 作 数 、 目的操 作 数 都 有 各 自的 寻址 方 式 ,而 这 里 所 介 绍 的 寻 址 方 式 是 指 目的操 作 数 的寻 址 方 式 。在 我 们 学 习 的8 0 5 l 单 片机 中 ,有 7 种 寻址 方 法 ,下 面 我 们 将 逐 一 进 行 分 析 。
A。
M O V 3 0 H ,2 0 H ; 把 内 部R A M 2 0 H 单 元 的 内 容 送 入 内 部 R A M 3 0 H 单元。 在8 0 C 5 1 单 片 机 中 , 直 接 地 址 只 能用 来 表 示 特 殊 功 能 寄存

S I L I C O N
VALLEY 爨 ≯f 高新技术产业发展】
5 1 单 片 机 寻 址 方 式
王赞
( 广 东省岭 南X - 商第一 高级技工 学校 广 东 广 州 5 1 0 8 0 0 )
摘 要 : 我们 已经知道 ,单 片机 的工作过 程就是一条 一条 ̄A k P . OM存储 器 中取 出指令 然后执 行相 关的操 作 。一般 来说 ,一条指令 总是有

MCS51寻址方式

MCS51寻址方式
2020/5/2
(4)立即寻址方式 • 立即寻址:操作数在指令中直接给出
例1:8位立即数操作 MOV A, #3AH ; MOV A,#data
例2:16位立即数操作 MOV DPTR, #data16 ;
2020/5/2
(5)变址间接寻址方式 • 变址间接寻址:以DPTR或PC作为基址寄存器,以累
通用形式:MOVX指令,例:MOVX A, DPTR; (3)外部RAM的低256字节,除用上面的DPTR,还可
用间址寄存器R0和R1去寻找片外RAM的低256字节 ;通用形式:MOVX 指令及Ri(i=1或0); (4)堆栈操作指令(PUSH和POP), 以堆栈指针( SP)作间址寄存器的间接寻址方式。
7FH
例1:MOV A, R0;
ACC
若(R0)=55H
AAH
例2:书P47
2020/5/2
55H AAH
R0 55H 00H
片内低128字节RAM
• 寄存器间接寻址的范围: (1)内部RAM低128字节,通用形式:MOV指令及 Ri(i
=1或0); (2)外部RAM的64K空间,使用间址寄存器:DPTR;
2020/5/2
2020/5/2
MCS-51存储器映像图
• 寻址:在单片机的存储空间中寻找指令规定的 操作数据的地址,并将操作数取出来。通常是 根据指令的源操作数来决定寻址方式的。
• MCS-51单片机中共有7种寻址方式。 见书P46表3.3
2020/5/2
(1)寄存器寻址方式
• 寄存器寻址:操作数在寄存器中,其中寄存器 包括:当前工作寄存器组R0~R7或A、B、 DPTR等
2020/5/2
专用寄存器的寻址位在指令中的表达方式(4种): 1、 直接使用位地址 2、 使用位名称 3、 使用单元地址加位数 4、 使用专用寄存器符号加位数

单片机原理及应用及C51程序设计第三章习题答案

单片机原理及应用及C51程序设计第三章习题答案

找到后第一时间上传,献给各位电子班的同学习题三1.在MCS-51单片机中,寻址方式有几种?其中对片内RAM可以用哪几种寻址方式?对片外RAM可以用哪几种寻址方式?答:寻址方式可分为数的寻址和指令寻址,数的寻址有:常数寻址(立即寻址)、寄存器数寻址(寄存器寻址)、存储器数寻址(直接寻址方式、寄存器间接寻址方式、变址寻址方式)和位寻址,指令的寻址有绝对寻址和相对寻址。

片内RAM寻址有:寄存器寻址、直接寻址方式和寄存器间接寻址方式。

片外RAM寻址有:寄存器间接寻址方式。

2.在对片外RAM单元寻址中,用Ri间接寻址与用DPTR间接寻址有什么区别?答:片外数据存储器寻址中,用Ri间接寻址只能访问低端的256字节单元,而用DPTR 作指针间接访问可访问整个64K字节。

3.在位处理中,位地址的表示方式有哪几种?答:1.直接位地址(00H~0FFH)。

例如:20H2.字节地址带位号。

例如:20H.3表示20H单元的3位。

3.特殊功能寄存器名带位号。

例如:P0.1表示P0口的1位。

4.位符号地址。

例如:TR0是定时/计数器T0的启动位。

4.写出完成下列操作的指令。

(1)R0的内容送到R1中。

MOV A,R0MOV R1,A(2)片内RAM的20H单元内容送到片内RAM的40H单元中。

MOV 40H,20H(3)片内RAM的30H单元内容送到片外RAM的50H单元中。

MOV A,30HMOV R0,#50HMOVX @R0,A(4)片内RAM的50H单元内容送到片外RAM的3000H单元中。

MOV A,50HMOV DPTR,#3000HMOVX @DPTR,A(5)片外RAM的2000H单元内容送到片内RAM的20H单元中。

MOV DPTR,#2000HMOVX A,@DPTRMOV 20H,A(6)片外RAM的1000H单元内容送到片外RAM的4000H单元中。

MOV DPTR,#1000HMOVX A,@DPTRMOV DPTR,#4000HMOV @DPTR,A(7)ROM的1000H单元内容送到片内RAM的50H单元中。

51单片机buf用法

51单片机buf用法

51单片机buf用法51单片机的BUF指令是一种数据传输指令,用于将一个数据或一个数据段传送到8位的SFR寄存器中。

该指令可以用于将数据从一个寄存器复制到另一个寄存器,也可以用于将数据加载到SFR寄存器中。

BUF指令的语法格式如下:BUF dst,src其中,dst表示目的寄存器,src表示源寄存器。

BUF指令有不同的寻址方式,可以按照直接寻址、寄存器间接寻址和立即寻址进行操作。

1. 直接寻址:BUF A,R1这个指令的作用是将R1寄存器中的值传送到累加器A中。

通过这种方式,可以实现寄存器之间的数据传输。

2. 寄存器间接寻址:BUF @R0,@R1这个指令的作用是将R1中的值作为地址,找到对应的内部RAM中的数据,并将其传送到R0寄存器中。

通过这种方式,可以实现RAM和RAM之间的数据传输。

3. 立即寻址:BUF A,#20H这个指令的作用是将立即数20H加载到累加器A中。

通过这种方式,可以将立即数加载到SFR寄存器中。

BUF指令的应用场景非常广泛。

下面以一些实例来说明BUF指令的具体使用。

例1:将一个8位的温度数据传送到串行通信寄存器LDR A,P1 ;从引脚P1读取温度数据到累加器ABUF SBUF,A ;将累加器A中的数据传送到串行通信寄存器SBUF中通过BUF指令,将引脚P1上的温度数据传送到串行通信寄存器中,实现了数据的传输。

例2:将RAM中的一段数据复制到另一个RAM区域MOV R0,#20H ;设置源地址MOV R1,#30H ;设置目的地址BUF @R1,@R0 ;将源地址为20H的RAM中的数据传送到目的地址为30H的RAM中通过BUF指令,将RAM中的一段数据从一个地址复制到另一个地址,实现了数据的拷贝。

例3:将立即数加载到特殊功能寄存器中MOV A,#40H ;将立即数40H加载到累加器A中BUF P0,A ;将累加器A中的数据传送到特殊功能寄存器P0中通过BUF指令,将立即数加载到特殊功能寄存器中,实现了对特殊功能寄存器的设置。

第03章 MCS - 51单片机指令系统

第03章 MCS - 51单片机指令系统
这里源操作数不能进行寄存器间接寻址, 也就是MOV Rn , @Rn 这个指令是不能用 的。
第 二 节 数 据 传 送 指 令
第3章 MCS-51单片机指令系统
(2)将数据传送到工作寄存器Rn的指令(3条) 例:已知累加器A的内容为30H,寄存器R7的内容 为50H,内部RAM30H单元的内容为40H,内部 RAM50H单元的内容为10H,请指出下列每条指令 执行以后相应单元内容的变化.
第 一 节 指 令 格 式 与 寻 址 方 式
第3章 MCS-51单片机指令系统
(6) 相对寻址:
在MCS -51 指令系统中设有转移指令, 分 为直接转移和相对转移指令, 在相对转移 指令中采用相对寻址方式。这种寻址方式 是以PC的内容为基本地址, 加上指令中给 定的偏移量作为转移地址,也就是目的地 址(用来修改PC的值)。指令中给出的偏 移量是一个 8 位带符号的常数, 可正可负, 其范围为-128~+127。
第3章 MCS-51单片机指令系统
(1) 立即寻址:
立即寻址方式是将操作数直接存放在指令字 节中,作为指令的一部分存放在代码段里。 比如:MOV A, #3AH 跟在指令操作码后面的数就是参加运 算的数, 该操作数称为立即数。立即数有一字 节和二字节两种可能, 如指令: MOV DPTR, #0DFFFH 上述两条指令均为立即寻址方式, 第 一条指令的功能是将立即数 3AH送累加器A中, 第二条指令的功能是将立即数 0DFFFH送数据 指针DPTR中(DPH, 0FFH→DPL)。
第 二 节 数 据 传 送 指 令
第3章 MCS-51单片机指令系统
3.2数据传送指令
程序中使用最多的指令,主要用于内部RAM、 寄存器、外部RAM以及程序存储器之间的数据 传送、保存以及交换。 工作原理:将源操作数简单地传给目的 操作数,而源操作数的内容不变,PSW的内容 不改变。 分类:内部数据传送指令、外部传送指 令、查表指令、交换指令和堆栈指令。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

51单片机的寻址方式学习汇编程序设计,要先了解CPU的各种寻址法,才能有效的掌握各个命令的用途,寻址法是命令运算码找操作数的方法。

指令的寻址方式 MOV P1,#0FFH这条指令,第一个词MOV是命令动词,也就是决定做什么事情的,MOV是MOVE少写了一个E,所以就是“传递”,这就是指令,规定做什么事情,数据传递必须要有一个“源”也就是你要送什么数,必须要有一个“目的”,也就是你这个数要送到什么地方去,显然在上面那条指令中,要送的数(源)就是0FFH,而要送达的地方(目的地)就是P1这个寄存器。

寻址方式:指定操作数所在单元的方法。

注意:源操作数、目的操作数都有各自的寻址方式。

掌握指令的7种寻址方式的作用以及不同寻址方式所查询的存储空间及范围,对于常用的指令,能够给出指令的寻址方式。

在我们学习的8051单片机中,有7种寻址方法,下面我们将逐一进行分析。

立即寻址所要找的操作数是一二进制数或十进制数,出现在指令中,用“#”作前缀MOV A,#20H在这种寻址方式中,指令多是双字节的,一般第一个字节是操作码,第二个字节是操作数。

该操作数直接参与操作,所以又称立即数,有“#”号表示。

立即数就是存放在程序存储器中的常数,换句话说就是操作数(立即数)是包含在指令字节中的。

例如:MOV A,#3AH这条指令的指令代码为74H、3AH,是双字节指令,这条指令的功能是把立即数3AH送入累加器A中。

MOV DPTR,#8200H在前面学单片机的专用寄存器时,我们已学过,DPTR是一个16位的寄存器,它由DPH及DPL两个8位的寄存器组成。

这条指令的意思就是把立即数的高8位(即82H)送入DPH寄存器,把立即数的低8位(即00H)送入DPL寄存器。

这里也特别说明一下:在80C51单片机的指令系统中,仅有一条指令的操作数是16位的立即数,其功能是向地址指针DPTR传送16位的地址,即把立即数的高8位送入DPH,低8位送入DPL。

直接寻址指令中直接给出操作数的地址。

MOV A,30HMOV 30H,DPH直接寻址方式是指在指令中操作数直接以单元地址的形式给出,也就是在这种寻址方式中,操作数项给出的是参加运算的操作数的地址,而不是操作数。

例如:MOV A,30H这条指令中操作数就在30H单元中,也就是30H是操作数的地址,并非操作数。

在80C51单片机中,直接地址只能用来表示特殊功能寄存器、内部数据存储器以及位地址空间,具体的说就是:1、内部数据存储器RAM低128单元。

在指令中是以直接单元地址形式给出。

我们知道低128单元的地址是00H-7FH。

在指令中直接以单元地址形式给出这句话的意思就是这0-127共128位的任何一位,例如0位是以00H这个单元地址形式给出、1位就是以01H单元地址给出、127位就是以7FH形式给出。

2、位寻址区。

20H-2FH地址单元。

3、特殊功能寄存器。

专用寄存器除以单元地址形式给出外,还可以以寄存器符号形式给出。

例如下面我们分析的一条指令 MOV IE,#85H 前面的学习我们已知道,中断允许寄存器IE的地址是80H,那么也就是这条指令可以以MOV IE,#85H 的形式表述,也可以MOV 80H,#85H的形式表述。

关于数据存储器RAM的内部情况,请查看我们课程的第十二课。

直接寻址是唯一能访问特殊功能寄存器的寻址方式!大家来分析下面几条指令:MOV 65H,A ;将A的内容送入内部RAM的65H单元地址中MOV A,direct ;将直接地址单元的内容送入A中MOV direct,direct;将直接地址单元的内容送直接地址单元MOV IE,#85H ;将立即数85H送入中断允许寄存器IE前面我们已学过,数据前面加了“#”的,表示后面的数是立即数(如#85H,就表示85H就是一个立即数),数据前面没有加“#”号的,就表示后面的是一个地址地址(如,MOV 65H,A这条指令的65H就是一个单元地址)。

寄存器寻址操作数存放在工作寄存器R0 ~ R7中,或寄存器B中。

MOV A,R2寄存器寻址的寻址范围是:1、4个工作寄存器组共有32个通用寄存器,但在指令中只能使用当前寄存器组(工作寄存器组的选择在前面专用寄存器的学习中,我们已知道,是由程序状态字PSW中的RS1和RS0来确定的),因此在使用前常需要通过对PSW中的RS1、RS0位的状态设置,来进行对当前工作寄存器组的选择。

2、部份专用寄存器。

例如,累加器A、通用寄存器B、地址寄存器DPTR和进位位CY。

寄存器寻址方式是指操作数在寄存器中,因此指定了寄存器名称就能得到操作数。

例如:MOV A,R0这条指令的意思是把寄存器R0的内容传送到累加器A中,操作数就在R0中。

INC R3这条指令的意思是把寄存器R3中的内容加1从前面的学习中我产应可以理解到,其实寄存器寻址方式就是对由PSW程序状态字确定的工作寄存器组的R0-R7进行读/写操作。

寄存器间接寻址指令中寄存器的内容作为操作数存放的地址,指令中间接寻址寄存器前用“@”表示前缀。

举“两个抽屉,两把钥匙”的例子。

MOV R0,#30HMOV A,@R0MOV A,#20HMOV R1,#40HMOV @R1,A寄存间接寻址方式是指寄存器中存放的是操作数的地址,即操作数是通过寄存器间接得到的,因此称为寄存器间接寻址。

MCS-51单片机规定工作寄存器的R0、R1做为间接寻址寄存器。

用于寻址内部或外部数据存储器的256个单元。

为什么会是256个单元呢?我们知道,R0或者R1都是一个8位的寄存器,所以它的寻址空间就是2的八次方=256。

例:MOV R0,#30H ;将值30H加载到R0中MOV A,@R0 ;把内部RAM地址30H内的值放到累加器A中MOVX A,@R0 ;把外部RAM地址30H内的值放到累加器A中大家想想,如果用DPTR做为间址寄存器,那么它的寻址范围是多少呢?DPTR是一个16位的寄存器,所以它的寻址范围就是2的十六次方=65536=64K。

因用DPTR做为间址寄存器的寻址空间是64K,所以访问片外数据存储器时,我们通常就用DPTR做为间址寄存器。

例:MOV DPTR,#1234H ;将DPTR值设为1234H(16位)MOVX A,@DPTR ;将外部RAM或I/O地址1234H内的值放到累加器A中在执行PUSH(压栈)和POP(出栈)指令时,采用堆栈指针SP作寄存器间接寻址。

例:PUSH 30H ;把内部RAM地址30H内的值放到堆栈区中堆栈区是由SP寄存器指定的,如果执行上面这条命令前,SP为60H,命令执行后会把内部RAM地址30H内的值放到RAM的61H内。

那么做为寄存器间接寻址用的寄存器主要有哪些呢?我们前面提到的有四个,R0、R1、DPTR、SP寄存器间接寻址范围总结:1、内部RAM低128单元。

对内部RAM低128单元的间接寻址,应使用R0或R1作间址寄存器,其通用形式为@Ri(i=0或1)。

2、外部RAM 64KB。

对外部RAM64KB的间接寻址,应使用@DPTR作间址寻址寄存器,其形式为:@DPTR。

例如MOVX A,@DPTR;其功能是把DPTR指定的外部RAM的单元的内容送入累加器A中。

外部RAM的低256单元是一个特殊的寻址区,除可以用DPTR作间址寄存器寻址外,还可以用R0或R1作间址寄存器寻址。

例如MOVX A,@R0;这条指令的意思是,把R0指定的外部RAM单元的内容送入累加器A。

堆栈操作指令(PUSH和POP)也应算作是寄存器间接寻址,即以堆栈指针SP作间址寄存器的间接寻址方式。

寄存器间接寻址方式不可以访问特殊功能寄存器!!寄存器间接寻址也须以寄存器符号的形式表示,为了区别寄存器寻址我寄存器间接寻址的区别,在寄存器间接寻址方式式中,寄存器的名称前面加前缀标志“@”。

基址寄存器加变址寄存器的变址寻址操作数地址 = 变地址 + 基地址基地址寄存器 DPTR 或 PC变址寄存器 @A该寻址方式常用于访问程序存储器,查表。

MOV A,@A + DPTR这种寻址方式以程序计数器PC或DPTR为基址寄存器,累加器A为变址寄存器,变址寻址时,把两者的内容相加,所得到的结果作为操作数的地址。

这种方式常用于访问程序存储器ROM中的数据表格,即查表操作。

变址寻址只能读出程序内存入的值,而不能写入,也就是说变址寻址这种方式只能对程序存储器进行寻址,或者说它是专门针对程序存储器的寻址方式。

例:MOVC A,@A+DPTR这条指令的功能是把DPTR和A的内容相加,再把所得到的程序存储器地址单元的内容送A假若指令执行前A=54H,DPTR=3F21H,则这条指令变址寻址形成的操作数地址就是54H+3F21H=3F75H。

如果3F75H单元中的内容是7FH,则执行这条指令后,累加器A中的内容就是7FH。

变址寻址的指令只有三条,分别如下:JMP @A+DPTRMOVC A,@A+DPTRMOVC A,@A+PC第一条指令JMP @A+DPTR这是一条无条件转移指令,这条指令的意思就是DPTR加上累加器A的内容做为一个16位的地址,执行JMP这条指令是,程序就转移到A+DPTR指定的地址去执行。

第二、三条指令MOVC A,@A+DPTR和MOVC A,@A+PC指令这两条指令的通常用于查表操作,功能完全一样,但使用起来却有一定的差别,现详细说明如下。

我们知道,PC是程序指针,是十六位的。

DPTR是一个16位的数据指针寄存器,按理,它们的寻址范围都应是64K。

我们在学习特殊功能寄存器时已知道,程序计数器PC是始终跟踪着程序的执行的。

也就是说,PC的值是随程序的执行情况自动改变的,我们不可以随便的给PC赋值。

而DPTR是一个数据指针,我们就可以给空上数据指针DPTR进行赋值。

我们再看指令MOVC A,@A+PC这条指令的意思是将PC的值与累加器A的值相加作为一个地址,而PC是固定的,累加器A是一个8位的寄存器,它的寻址范围是256个地址单元。

讲到这里,大家应可明白,MOVC A,@A+PC这条指令的寻址范围其实就是只能在当前指令下256个地址单元。

所在,这在我们实际应用中,可能就会有一个问题,如果我们需要查询的数据表在256个地址单元之内,则可以用MOVC A,@A+PC这条指令进行查表操作,如果超过了256个单元,则不能用这条指令进行查表操作。

刚才我们已说到,DPTR是一个数据指针,这个数据指针我们可以给它赋值操作的。

通过赋值操作。

我们可以使MOVC A,@A+DPTR这条指令的寻址范围达到64K。

这就是这两条指令在实际应用当中要注意的问题。

变址寻址方式是MCS-51单片机所独有的一种寻址方式。

位寻址80C51单片机有位处理功能,可以对数据位进行操作,因此就有相应的位寻址方式。

相关文档
最新文档