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条)

MCS51单片机指令系统

MCS51单片机指令系统

第一条指令为远查表指令,可以在64K的程序存储器空间寻 址。基地址寄存器为DPTR,其意思为,DPTR里面存放的是 程序存储器中数据表格的首地址,A为数据地址的偏移量。
这条指令执行以后,以 (A)+(DPTR)的数值为地址数 据就送进A里面来了,也就是从表格首地址开始以后的第(A) 个数据被送进A了。(举例子说明)
编写好的程序都放在程序存储器中,由于一个存储地址所 指示的存储单元只能存放一字节的数据。所以,在存放指令时, 必须将指令拆分成一个一个字节进行连续存放。
比如: 实现“累加器加10H”这条指令,其机器语言为 0111010000010000, 占用了两个字节,就必须拆成两个字节 进行连续存储。
但是,用二进制来表示比较麻烦,因此,也常用十六进制来 表示如:74H 10H来表示以上这条机器语言。可见,用十六进 制表示指令比较简单,但是,指令系统有上百条指令,不易记 住。所以,一般采用容易记住的一些缩写符号来表示机器语言,
2. 在指令中直接给出操作数的地址, 这种寻址方式就属
于直接寻址方式。在这种方式中, 指令的操作数部分直接 是操作数的地址。
比如:MOV A,30H;将30H里面的数送到A里面 MOV 21H,30H;将30H里面的数存放到21H里面 在MCS -51 单片机指令系统中, 直接寻址方式中可
以访问 3 种存储器空间: (1) 内部数据存储器的低 128 个字节单元(00H~
7. 位寻址 指按照位进行的寻址操作,(前面讲的都是按字节进
行的寻址操作)。该种寻址方式中, 操作数是内部RAM单元 中20H到2FH的128个位地址以及SFR中的11个可进行 位寻址的寄存器中的位地址寻址。
比如:MOV C,20H;就是将RAM中位寻址区中20H位地 址中的内容送给C。区别与MOV A,20H;这个是将内部 RAM中20H单元的内容送给A。

51单片机考试试题带答案

51单片机考试试题带答案

51单片机考试试题带答案一、选择题1. 以下哪项是51单片机的定时器模式?A. 仅工作在工作模式0B. 工作在工作模式0和工作模式1之间切换C. 工作在工作模式0和工作模式1之间循环切换D. 工作在工作模式0、工作模式1和工作模式2之间循环切换答案:D2. 下列哪种类型的引脚在51单片机中不可作为普通IO口使用?A. 内部RAM地址线引脚B. 外部中断引脚C. IAP/IAP引脚D. 全双工串行口引脚答案:A3. 51单片机的中断向量表是存放在内存的哪个区域?A. 0x0000~0x007FB. 0x0080~0x00FFC. 0x0100~0x017FD. 0x0180~0x01FF答案:C二、填空题1. 请列举51单片机的三种工作模式:____________, ____________, ____________。

答案:工作模式0、工作模式1、工作模式22. 51单片机的系统时钟频率为_________。

答案:12MHz三、解答题1. 请简要描述51单片机的位寻址方式。

答案:51单片机的位寻址方式即按位进行寻址,可以直接对单片机的寄存器或存储器中的某个位进行操作。

通过指定位寻址方式,我们可以将某个特定的位设置为1或者设置为0,或者进行一些位运算操作。

2. 请写出51单片机中TIMER 0的工作模式0的特点和优缺点。

答案:51单片机中TIMER 0的工作模式0特点如下:- 工作模式0是基本的定时/计数功能,仅作为一个16位定时器来使用。

- 它可以产生一个定时器中断。

- 定时器0的计数值可以从TH0和TL0中读取。

优点:- 简单易用,适用于基本的定时功能。

- 可以通过改变定时器的初值来实现不同的定时周期。

缺点:- 功能相对有限,不适用于复杂的定时及计数需求。

- 不能通过使用外部输入源来启动或停止定时器。

四、编程题请使用C语言编写一个程序,实现以下功能:当INT0引脚产生上升沿中断时,将P1口的高4位清0,低4位保持不变。

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系列单片机寻址方式


程序存储器
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单片机寻址方式小结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单片机的寻址方式寻址方式:指定操作数所在单元的方法。

在我们学习的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就是一个单元地址)。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

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共128位的任何一位,例如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就是一个单元地址)。

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

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

2、部分专用寄存器。

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

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

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

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

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

寄存间接寻址方式是指寄存器中存放的是操作数的地址,即操作数是通过寄存器间接得到的,因此称为寄存器间接寻址。

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中B:大家想想,如果用DPTR做为间址寄存器,那么它的寻址范围是多少呢?DPTR是一个16位的寄存器,所以它的寻址范围就是2的十六次方=65536=64K。

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

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

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

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

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

B、外部RAM 64KB。

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

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

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

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

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

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

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

这种寻址方式以程序计数器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这条指令的意思是将P C的值与累加器A的值相加作为一个地址,而PC是固定的,累加器A 是一个8位的寄存器,它的寻址范围是256个地址单元。

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

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

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

通过赋值操作。

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

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

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

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

所谓位寻址,就是对内部RAM或可位寻址的特殊功能寄存器SFR内的某个位,直接加以置位为1或复位为0。

位寻址的范围,也就是哪些部份可以进行位寻址:A、我们在学习51单片机的存储器结构时,我们已知道在单片机的内部数据存储器RAM的低128单元中有一个区域叫位寻址区。

它的单元地址是20H-2FH。

共有16个单元,一个单元是8位,所以位寻址区共有128位。

这128位都单独有一个位地址,其位地址的名字就是00H -7FH。

这里就有一个比较麻烦的问题需要大家理解清楚了。

我们在前面的学习中00H、01H。

7FH等等,所表示的都是一个字节(或者叫单元地址),而在这里,这些数据都变成了位地址。

我们在指令中,或者在程序中如何来区分它是一个单元地址还是一个位地址呢?这个问题,也就是我们现在正在研究的位寻址的一个重要问题。

其实,区分这些数据是位地址还是单元地址,我们都有相应的指令形式的。

这个问题我们在后面的指令系统学习中再加以论述。

B、对专用寄存器位寻址。

这里要说明一下,不是所有的专用寄存器都可以位寻址的。

具体哪些专用寄存器可以哪些专用寄存器不可以,请大家回头去看看我们前面关于专用寄存器的相关文章。

一般来说,地址单元可以被8整除的专用寄存器,通常都可以进行位寻址,当然并不是全部,大家在应用当中应引起注意。

(后面有详细介绍)7、相对寻址把指令中给定的地址偏移量与本指令所在单元地址(PC内容)相加得到真正有效的操作数所存放的地址。

举“李同学20岁,张同学比李同学大3岁”的例子。

JC 60H ;设(PC) = 2000H,则当C = 1时,转移的目的地址 = (PC)+ 2 + 60H-------------------------------------------------------------------------专用寄存器的位寻址表示方法:下面我们以程序状态字PSW来进行说明1、直接使用位地址表示:看上表,PSW的第五位地址是D5,所以可以表示为D5HMOV C,D5H2、位名称表示:表示该位的名称,例如PSW的位5是F0,所以可以用F0表示MOV C,F03、单元(字节)地址加位表示:D0H单元位5,表示为DOH.5 MOV C,D0H.54、专用寄存器符号加位表示:例如PSW.5MOV C,PSW.5这四种方法实现的功能都是相同的,只是表述的方式不同而已。

相关文档
最新文档