MCS-51单片机的寻址方式和指令系统
- 格式:doc
- 大小:456.00 KB
- 文档页数:18
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种寻址方式。
MCS-51单片机指令系统与汇编语言程序设计伪指令............................................. (2)MCS-51单片机的寻址方式 (4)MCS-51单片机的指令系统 (7)数据传送指令 (8)算数运算指令 (10)逻辑运算及移位指令 (12)控制转移指令 (13)位操作指令 (18)指令格式:指令的表示方式称为指令格式,它规定了指令的长度和内部信息的安排。
完整的指令格式如下:[标号:] 操作码 [操作数] [,操作数] [;注释]标号: 代表指令的具体地址操作码: 又称助记符,英文缩写操作数: 操作数中常数可以用二、八、十、十六进制表示,如果用十六进制表示,最高位用A以上的数开头时,前面须加0,否则机器不识别注释:增加程序的可读性伪指令(1)定位伪指令ORG格式:ORG n其中:n通常为绝对地址,可以是十六进制数、标号或表达式。
功能:规定编译后的机器代码存放的起始位置。
在一个汇编语言源程序中允许存在多条定位伪指令,但每一个n值都应和前面生成的机器指令存放地址不重叠。
例如程序:ORG 1000HSTART:MOV A,#20HMOV B,#30H┇(2)结束汇编伪指令END格式:[标号:] END [表达式]功能:放在汇编语言源程序的末尾,表明源程序的汇编到此结束,其后的任何内容不予理睬。
(3)赋值伪指令EQU格式:字符名称x EQU 赋值项n功能:将赋值项n的值赋予字符名称x。
程序中凡出现该字符名称x就等同于该赋值项n,其值在整个程序中有效。
赋值项n可以是常数、地址、标号或表达式。
在使用时,必须先赋值后使用。
“字符名称”与“标号”的区别是“字符名称”后无冒号,而“标号”后面有冒号。
(4)定义字节伪指令DB格式:[标号:] DB x1, x2,…, xn功能:将8位数据(或8位数据组)x1, x2,…, xn顺序存放在从当前程序存储器地址开始的存储单元中。
xi可以是8位数据、ASCII码、表达式,也可以是括在单引号内的字符串。
两个数据之间用逗号“,”分隔。
xi为数值常数时,取值范围为00H~FFH。
xi为ASCII码时,要使用单引号‘’,以示区别。
xi为字符串常数时,其长度不应超过80个字符。
(5)定义双字节伪指令DW格式:[标号:] DW x1, x2,…, xn功能:将双字节数据[或双字节数据组]顺序存放在从标号指定地址单元开始的存储单元中。
其中,xi为16位数值常数,占两个存储单元,先存高8位(存入低位地址单元中),后存低8位(存入高位地址单元中)。
(6)预留存储空间伪指令DS格式:[标号:] DS n功能:从标号指定地址单元开始,预留n个存储单元,汇编时不对这些存储单元赋值。
n可以是数据,也可以是表达式。
(7)定义位地址符号伪指令BIT格式:字符名称x BIT 位地址n功能:将位地址n的值赋予字符名称x。
程序中凡出现该字符名称x就代表该位地址。
位地址n可以是绝对地址,也可以是符号地址。
(8)数据地址赋值伪指令DATA格式:字符名称x DATA 表达式n功能:把表达式n的值赋值给左边的字符名称x。
n可以是数据或地址,也可以是包含所定义的“字符名称x”在内的表达式,但不能是汇编符号。
DATA与EQU的主要区别是:EQU定义的“字符名称”必须先定义后使用,而DATA定义的“字符名称”没有这种限制,DATA定义的字符名称作为标号登记在符号表中(以类似于R1,R0的符号存在,用到时才定义)。
所以,DATA伪指令通常用在源程序的开头或末尾。
指令的分类MCS-51指令系统有111条指令,可按下列几种方式分类:1.按指令字节数分类单字节指令(49条)、双字节指令(46条)和三字节指令(16条)。
2. 按指令执行时间分类单机器周期指令(65条)、双机器周期指令(44条)和四机器周期指令(2条)。
3. 按功能分类数据传送指令(29条)、算术操作指令(24 条)、逻辑操作指令(24条)、控制转移指令(17条)和位操作指令(17条)。
指令中的常用符号addr11:表示11位目的地址,主要用于ACALL和AJMP指令中addr16:表示16位目的地址,主要用于LCALL和LJMP指令中rel:用补码形式表示的8位二进制地址偏移量,取值范围为 128~+127,主要用于相对转移指令,以形成转移的目的地址。
DPTR:数据指针,用于寄存器间接寻址方式和变址寻址方式$:表示当前的指令地址。
/:在位操作指令中,表示对该位先求反后再参与操作。
(X):表示由X所指定的某寄存器或某单元中的内容。
((X)):表示由X间接寻址单元中的内容。
←:表示指令的操作结果是将箭头右边的内容传送到左边。
→:表示指令的操作结果是将箭头左边的内容传送到右边。
∨、∧、⊕:表示逻辑或、与、异或。
MCS-51单片机的寻址方式寻址方式:MCS-51单片机的指令系统提供了7种寻址方式,分别为立即寻址、直接寻址、寄存器寻址、寄存器间接寻址、变址寻址、相对寻址和位寻址。
一条指令可能含多种寻址方式。
4.1 立即寻址定义:将操作数的地址直接存放在指令中,这种寻址方式称为直接寻址。
特点:指令中含有操作数的地址。
该地址指出了参与操作的数据所在的字节单元地址或位地址。
计算机执行它们时便可根据直接地址找到所需要的操作数。
寻址范围:ROM、片内RAM区、SFR和位地址空间。
4.2 直接寻址定义:将操作数的地址直接存放在指令中,这种寻址方式称为直接寻址。
特点:指令中含有操作数的地址。
该地址指出了参与操作的数据所在的字节单元地址或位地址。
计算机执行它们时便可根据直接地址找到所需要的操作数。
寻址范围:ROM、片内RAM区、SFR和位地址空间。
4.3 寄存器寻址定义:操作数存放在MCS-51内部的某个工作寄存器Rn(R0~R7)或部分专用寄存器中,这种寻址方式称为寄存器寻址。
特点:由指令指出某一个寄存器的内容作为操作数。
存放操作数的寄存器在指令代码中不占据单独的一个字节,而是嵌入(隐含)到操作码字节中。
寻址范围:四组通用寄存器Rn(R0~R7)、部分专用寄存器( A, B, DPTR, Cy )。
4.4 寄存器间接寻址定义:指令给出的寄存器中存放的是操作数据的单元地址。
这种寻址方式称为寄存器间接寻址,简称为寄存器间址。
特点:指令给出的寄存器中存放的是操作数地址。
寄存器间接寻址是一种二次寻找操作数地址的寻址方式,寄存器前边必须加前缀符号“@”。
不能用于寻址特殊功能寄存器SFR。
寻址范围:内部RAM低128B(只能使用R0或R1作间址寄存器)、外部RAM(只能使用DPTR作间址寄存器)。
对于外部低256单元RAM的访问,除可以使用DPTR外,还可以使用R0或R1作间址寄存器。
4.5 变址寻址定义:操作数存放在变址寄存器(累加器A)和基址寄存器(DPTR或PC)相加形成的16位地址单元中。
这种寻址方式称为基址加变址寄存器间接寻址,简称为变址寻址。
特点:指令操作码中隐含作为基址寄存器用的DPTR(或PC )和作为变址用的累加器A。
在执行变址寻址指令时,MCS-51单片机先把基地址( DPTR或PC 的内容)和地址偏移量(A的内容)相加,以形成操作数地址,再由操作数地址找到操作数,并完成相应的操作。
变址寻址方式是单字节指令。
寻址范围:只能对程序存储器ROM进行寻址,主要用于查表性质的访问。
注意:累加器A中存放的操作数地址相对基地址的偏移量的范围为00H~FFH(无符号数)。
MCS-51单片机共有以下三条变址寻址指令:MOVC A, @A+PC ;(A)←(A)+(PC)+1MOVC A, @A+DPTR ;(A)←(A)+(DPTR)JMP @A+DPTR ;(PC)←(A)+(DPTR)4.6 相对寻址定义:将程序计数器PC的当前值(取出本条指令后的PC值)与指令第二个字节给出的偏移量(rel)相加,形成新的转移目标地址。
称为相对寻址方式。
特点:相对寻址方式是为实现程序的相对转移而设计的,为相对转移指令所使用,其指令码中含有相对地址偏移量,能生成浮动代码。
如: SJMP rel ; (PC)←(PC) + 2 + rel相对转移指令的目的地址=指令地址+指令字节数+偏移量寻址范围:只能对程序存储器ROM进行寻址。
相对地址偏移量(rel)是一个带符号的 8位二进制补码,其取值范围为 128~+127 (以PC为中间的256个字节范围)。
4.7 位寻址定义:指令中给出的操作数是一个可单独寻址的位地址,这种寻址方式称为位寻址方式。
特点:位寻址是直接寻址方式的一种,其特点是对8位二进制数中的某一位的地址进行操作。
寻址范围:片内RAM低128B中位寻址区、部分SFR(其中有83位可以位寻址)。
可位寻址的位地址的表示形式如下:(1)直接使用位地址形式。
如:MOV 00H, C ;(00H)←(Cy)其中:00H是片内RAM中20H地址单元的第0位。
(2)字节地址加位序号的形式。
如:MOV 20H.0, C ; (20H.0)←(Cy)其中:20H.0是片内RAM中20H地址单元的第0位。
(3)位的符号地址(位名称)的形式。
对于部分特殊功能寄存器,其各位均有一个特定的名字,所以可以用它们的位名称来访问该位。
如:ANL C, P ; (C)←(C)∧(P)其中:P是PSW的第0位,C是PSW的第7位。
(4)字节符号地址(字节名称)加位序号的形式。
对于部分特殊功能寄存器(如状态标志寄存器PSW),还可以用其字节名称加位序号形式来访问某一位。
如:CPL PSW.6 ; (AC)←(/AC)其中: PSW.6表示该位是PSW的第6位。
MCS-51单片机的指令系统MCS-51指令系统使用44种助记符,它们代表着33种功能,可以实现51种操作。
指令助记符与操作数的各种可能的寻址方式的结合一共可构造出111条指令。
MCS-51单片机指令系统按其功能可分为数据传送类指令、算术运算类指令、逻辑运算和移位类指令、控制转移类指令和位操作类指令五大类。
学习指令系统时,应注意:(1)指令的格式、功能。
(2)操作码的含义,操作数的表示方法。
(3)寻址方式,源、目的操作数的范围。
(4)对标志位的影响。
(5)指令的适用范围。
(6)正确估算指令的字节数。
一般地,操作码占1字节;操作数中,直接地址derict占1字节,#data占1字节,#data16占两字节;操作数中的A、B、R0~R7、 @Ri、DPTR、@ A+ DPTR、 @ A+ PC等均隐含在操作码中。
CPU在进行算术和逻辑操作时,绝大多数指令都有操作数,所以数据传送是一种最基本、最主要的操作。
数据传送指令数据传送指令共29条,可分为内部RAM数据传送、外部RAM数据传送、程序存储器数据传送、数据交换和堆栈操作等五类。