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寻址方式
• 学习单片机的寻址方式及其功能
• 学习如何判断一条是何种寻址方式
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 字节数据存储器的结构划分以及对应的寻址方式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单片机的寻址方式和指令系统
由此可把数据传送指令分成三部分
(一)内部数据传送(通用传送指令)
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单片机指令系统
第一条指令为远查表指令,可以在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单片机考试试题带答案一、选择题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就是一个单元地址)。
51单片机寻址方式
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 单 片 机 中 , 直 接 地 址 只 能用 来 表 示 特 殊 功 能 寄存
T
S I L I C O N
VALLEY 爨 ≯f 高新技术产业发展】
5 1 单 片 机 寻 址 方 式
王赞
( 广 东省岭 南X - 商第一 高级技工 学校 广 东 广 州 5 1 0 8 0 0 )
摘 要 : 我们 已经知道 ,单 片机 的工作过 程就是一条 一条 ̄A k P . OM存储 器 中取 出指令 然后执 行相 关的操 作 。一般 来说 ,一条指令 总是有
MCS-51单片机指令系统的寻址方式
MCS-51单片机指令系统的寻址方式1、寄存器寻址寄存器寻址方式可用于访问选定寄存器区的8个工作寄存器R0~R7。
由指令操作码的低3位指示所用的寄存器,寄存器A、B、DPTR和C 位(位处理机的累加器)也可作为寻址的对象。
2、直接寻址直接寻址是访问特别功能寄存器的唯一方法。
它也用于访问内部RAM(低128个字节)。
采纳直接寻址方式的指令是双字节指令,其中第一个字节是操作码,其次个字节是内部RAM或特别功能寄存器的直接地址。
3、寄存器间接寻址寄存器间接寻址方式可用于访问内部RAM或外部数据存储器。
这种寻址方式是由指令指定某一寄存器的内容作为操作数的地址。
访问内部RAM或外部数据存储器的低256个字节时,可采纳R0或R1作为间址寄存器。
4、马上寻址采纳马上寻址方式的指令是双字节的。
第一个字节是操作码,其次字节就是操作数。
因此,操作数就是存放在程序存储器内的常数。
5、基址寄存器加变址寄存器间址寻址这种寻址方式用于访问程序存储器的一个单元,该单元的地址是基址寄存器(DPTR或PC)的内容与变址寄存器A的内容之和。
例如指令“MOVC A,@A+DPTR”,其中A的原有内容为05H,DPTR的内容为4000H,该指令执行的结果是把程序存储器4005H单元的内容传送给累加器A。
6、相对寻址相对寻址用于访问程序存储器,它只消失在相对转移指令中。
相对寻址是将程序计数器PC中的当前值与指令其次字节所给出的数据(该数据也称为偏移量)相加,其和为跳转指令的转移地址。
转移地址也称为转移目的地址。
偏移量是一有符号数,其取值范围为-128~+127。
7、位寻址位寻址是指对片内RAM的位寻址区(20H~2FH)和可以位寻址的专用寄存器进行位操作时的寻址方式。
这种寻址方式与直接寻址方式的形式和执行过程基本相同。
在进行位操作时,借助于进位C作为操作的位累加器,操作数直接给出该位的地址,然后依据操作码的性质对其进行位操作。
MCS51寻址方式
(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程序设计第三章习题答案
找到后第一时间上传,献给各位电子班的同学习题三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单片机存储器及寻址方式
定寻址方式时,应考虑到需要和可能。80C51
系列单片机指令系统中共有以下7种寻址方式。
1、立即寻址
立即寻址是指在指令中直接给出操作数。出现在指 令中的操作数称为立即数,将这种寻址方式称为立即 寻址,在立即数前面加前缀“#”。 例如: 指令 MOV A,#3AH 其中3AH就是立即数, 功能是把8位立即数3AH送入累加器。
direct 内部的8位地址,既可以指片内RAM的低128个单元地址,也
rel
DPTR bit
相对转移指令中的偏移量,为8位带符号数。
地址寄存器,16位。 片内RAM (包括特殊功能寄存器)中的直接寻址位。
二、寻址方式和寻址空间
执行任何一条指令都需要使用操作数。寻 址方式就是在指令中用于说明操作数所在地址 的方法。 寻址方式越多,计算机的功能就越强,灵 活性越大,指令系统也就愈加复杂。因此在设
二、数据存储器
特殊功能寄存器区: 简写为SFR(Special Function Register) 功能:管理各功能器件,如定 时器、串行口、中断系统、外 围芯片等;用户通过对SFR编 程可方便地管理所有功能部件。
FFH 用户RAM区 SFR区 (仅89S52有) 80H 7FH FFH F0H E0H D0H CDH CCH CBH CAH C9H C8H B8H B0H A8H A6H A0H 99H 98H 90H 8DH 8CH 8BH 8AH 89H 88H 87H 85H 84H 83H 82H 81H 80H
能是把片内RAM中 3AH单元内的数据传送给累加器A。
2、直接寻址
直接寻址方式只能给出8位地址,因此,这种寻址 方式的寻址范围只限于片内RAM,具体地说: (1) 低128单元,在指令中直接以单元地址形式 给出。 (2) 特殊功能寄存器,这时除可以单元地址形式 给出外,还可以寄存器符号形式给出。虽然特殊功能 寄存器可以使用符号标志,但在指令代码中还是按地 址进行编码的。 应当说明的是,直接寻址是访问特殊功能寄存器的 惟一方法。
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指令,将立即数加载到特殊功能寄存器中,实现了对特殊功能寄存器的设置。
第三章 MCS-51单片机指令系统
位操作类指令(17条)
位操作指令实际就是布尔处理机的指令系统,这 为开关量控制提供了非常有效的手段。
位传送
位置位复位
位运算 位控制转移
位数据传送指令(2条)
MOV MOV
C , bit bit,C
例:片内RAM中(20H)=7FH,执行指令
MOV C,07H 则C=0
位置位复位指令(4条)
调用与返回指令组(4条)
长调用指令 绝对调用指令 子程序返回指令
LCALL addr16 ACALL addr11 RET
中断服务程序返回指令 RETI
空操作指令(1条)
NOP
例:把2000H开始的外部RAM单元中的数据送到3000H
开始的外部RAM单元中,数据个数存放在内部RAM 35H单元。
ANL(ORL,XRL) A , { #data ; direct ; @Ri ; Rn }
2. 直接地址单元与累加器A、立即数之间的逻辑操作(6条)
ANL(ORL,XRL) direct , { A ; #data }
清零与取反指令(2条)
清零: 取反:
CLR A CPL A
循环移位指令(4条)
2. 带进位加法指令(4条) ADDC A , { #data ; direct ; @Ri ; Rn }
3. 带借位减法指令(4条) SUBB A , { #data ; direct; @Ri ; Rn }
影响所有标志位状态
例: 执行指令 MOV A , #0C2H ADD A , #0A9H 对PSW相应状态位的影响如下 1 1 1
3.2 MCS-51指令分类介绍
共分5大类,111条指令。
1.数据传送类指令(29条) 2.算术运算类指令(24条) 3.逻辑运算及移位类指令(24条) 4.控制转移类指令(17条) 5.位操作类指令(17条)
经典:7种寻址方式
15.12.2020
7
的确,这两条指令执行的结果是完全相同的, 都是将00H单元中的内容送到A中去,但是执行的过 程不同,执行第一条指令需要2个机器周期,而第二 条则只需要1个机器周期,第一条指令变成最终的目 标码要两个字节(E5H 00H),而第二条则只要一个 字节(E8H)就可以了。
15.12.2020
15.12.2020
6
3.2.3 寄存器寻址
Register Addressing
对选定的工作寄存器R0~R7、累加器A、通用寄存器B、 地址寄存器DPTR中的数进行操作。 例:MOV A,R0;将R0工作寄存器中的数据送到累加器A中去。
MOV AL,BL (8086CPU的寄存器寻址方式)
提一个问题:我们知道,工作寄存器就是内存单元 的一部分,如果我们选择工作寄存器组0,则R0就 是RAM的00H单元,那么这样一来,MOV A,00H 和 MOV A,R0不就没什么区别了吗?
寄存器间接寻址
变址寻址 相对寻址
位寻址
15.12.2020
寻址空间(操作数存放空间) 程序存储器
片内RAM低128字节、SFR 工作寄存器R0~R7,A,B,DPTR 片内RAM:@R0,@R1,SP 片外RAM:@R0 ,@R1,@DPTR 程序存储器:@A+PC,@A+DPTR 程序存储器256字节范围内:PC+偏移量 片内RAM的位寻址区(20H~2FH字节地址) 某些可位寻址的SFR
第三章 MCS-51指令系统 Instruction Set
§3.1 概述
7种寻址方式,111条指令
字节数
单字节指令:49条 双字节指令:45条 三字节指令:17条
运算速度
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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这四种方法实现的功能都是相同的,只是表述的方式不同而已。