MCS-51指令简介
mcs51单片机指令集

一个单片机所需执行指令的集合即为单片机的指令系统。
单片机使用的机器语言、汇编语言及高级语言,但不管使用是何种语言,最终还是要“翻译”成为机器码,单片机才能执行之。
现在有很多半导体厂商都推出了自己的单片机,单片机种类繁多,品种数不胜数,值得注意的是不同的单片机它们的指令系统不一定相同,或不完全相同。
但不管是使用机器语言、汇编语言还是高级语言都是使用指令编写程序的。
所谓机器语言即指令的二进制编码,而汇编语言则是指令的表示符号。
在指令的表达式上也不会直接使用二进制机器码,最常用的是十六进制的形式。
但单片机并不能直接执行汇编语言和高级语言,都必须通过汇编器“翻译”成为二进制机器码方能执行,但如果直接使用二进制来编写程序,那将十分不便,也很难记忆和识别,不易编写、难于辨读,极易出错,同时出错了也相当难查找。
所以现在基本上都不会直接使用机器语言来编写单片机的程序。
最好的办法就是使用易于阅读和辨认的指令符号来代替机器码,我们常称这些符号为助记符,用助记符的形式表示的单片机指令就是汇编语言,为便于记忆和阅读,助记符号通常都使用易于理解的英文单词和拼音字母来表示。
每种单片机都有自己独特的指令系统,那么指令系统是开发和生产厂商定义的,如要使用其单片机,用户就必须理解和遵循这些指令标准,要掌握某种(类)单片机,指令系统的学习是必须的。
MCS-51共有111条指令,可分为5类:[1].数据传送类指令(共29条)[2].算数运算类指令(共24条)[3].逻辑运算及移位类指令(共24条)[4].控制转移类指令(共17条)[5].布尔变量操作类指令(共17条)一些特殊符号的意义在介绍指令系统前,我们先了解一些特殊符号的意义,这对今后程序的编写都是相当有用的。
Rn——当前选中的寄存器区的8个工作寄存器R0—R7(n=0-7)。
Ri——当前选中的寄存器区中可作为地址寄存器的两个寄存器R0和R1(i=0,1)direct—内部数据存储单元的8位地址。
第3章MCS-51指令系统

第3章 MCS-51指令系统 4. 伪指令 在汇编语言源程序中,除了包含可以转化为特定计算机系 统的机器语言指令所对应的汇编语言指令外,还可能包含一些 伪指令,如“ORG 2000H”、“END”等。“伪”者,假也,尽 尽 管它不是计算机系统对应的指令,汇编时也不产生机器码,但 管它不是计算机系统对应的指令,汇编时也不产生机器码, 汇编语言程序中的伪指令并非可有可无。伪指令的作用是指导 汇编语言程序中的伪指令并非可有可无。 源程序的汇编过程, 源程序的汇编过程,例如“ORG 2000H”伪指令,指示汇编程序 将该伪指令后的汇编语言指令对应的机器码从2000H单元开始存 放。
第3章 MCS-51指令系统
· 52/54子系列内部RAM后128字节(即地址编码为80~FFH) 各单元之间不能直接传送。原因是高128字节内部RAM只能使 用寄存器间接寻址方式,而一条指令中,最多只允许一个操作 数使用寄存器间接寻址方式。 数据传送指令一般不会影响程序状态字寄存器PSW中的标 志位,但当数据传送到累加器A时,PSW中的奇偶标志位P会改 变,原因是奇偶标志位P总是体现累加器A中“1”的个数的奇偶 性。
第3章 MCS-51指令系统 1. 内部 内部RAM与特殊功能寄存器之间的数据传送 与特殊功能寄存器之间的数据传送 表3-1 内部RAM与特殊功能寄存器之间的数据传送指令
指令名称 指令格式 MOV A,Rn 以累加器A作为 目的操作数 MOV A,direct MOV A,@Ri MOV A,#data 机器码 11101rrr 11100101 direct 1110011i 01110100 data 功能 A←Rn A←(direct) A←(Ri) A←data 指令周期 1 1 1 1
MOV 90H,0F0H ; 将特殊功能寄存器0F0H单元(即寄存器B) 内容传送到特殊功能寄存器90H ; 单元(即P1口锁存器)中
MCS-51指令系统

目的地址=源地址+相对转移指令字节数 +rel
如 JC
75H ;(PC)+2+75H->PC
位寻址
操作数按8位二进制数中的某一位为单元 进行存取和操作。 位寻址的两种方式: 直接使用位地址 特殊功能寄存器可由寄存器名字加位数 表示
如: MOV C,01H ;01H为位地址 SETB EA ;中断允许寄存器IE的位7置1
三、以直接寻址的单元为目的操作数的指令 (5条)
•
•
MOV direct,A ;(A)direct 这组指令的功能是把源操作数送入由直接地址指出的存贮单元。 MOV direct,Rn ;(Rn)direct 源操作数有寄存器寻址、直接寻址、寄存器间接寻址和立即寻址 等寻址方式。 MOV direct,direct;(源direct)目的 direct MOV direct,@Ri ;((Ri))direct 例3: MOV ;(A) P1,寄存器寻址 MOV P1,A direct,#data ; MOV 70H,R2 ;(R2) 70H,寄存器寻址 datadirect MOV 0E0H,78H ;(78H) ACC,直接寻址
变址寻址
这种寻址方式以16位的程序计数器PC或 数据指针DPTR作为基寄存器,以8位的累 加器A作为变址寄存器。基寄存器和变址 寄存器的内容相加形成16位的地址,该 地址即为操作数的地址。
• 只能访问程序存储器,范围:64KB
• MCS-51指令系统中总共有如下三条基寄存器加变址寄 存器间接寻址指令
立即寻址
立即寻址方式中操作数包含在指令中。即操作数以指令字 节的形式存放于程序存储器中。在操作码后面。用“#”表 示。
操作数可以是8位的,也可以是16位的。
MCS-51指令大全

MCS-51系列单片机指令大全以字母的顺序排列(A--Z)A:--------------------------------------------------------------------1、ACALL addr11指令名称:绝对调用指令指令代码:指令功能:构造目的地址,进行子程序调用其方法是以指令提供的11位地址(al0~a0),取代PC的低11位,PC的高5位不变。
操作内容:PC←(PC)+2SP←(SP)+1(SP)←(PC)7~0SP←(SP)+1(SP)←(PC)15~8PC10~0←addr l0~0字节数:2机器周期:2使用说明:由于指令只给出子程序入口地址的低11位,因此调用范围是2KB。
2、ADD A,Rn指令名称:寄存器加法指令指令代码:28H~2FH指令功能:累加器内容与寄存器内容相加操作内容:A←(A)+(R n),n=0~7字节数:1机器周期;1影响标志位:C,AC,OV3、ADD A,direct指令名称:直接寻址加法指令指令代码:25H指令功能:累加器内容与内部RAM单元或专用寄存器内容相加操作内容:A←(A)+(direct)字节数:2机器周期:1影响标志位:C,AC,OV4、ADD A,@Ri ’指令名称:间接寻址加法指令指令代码:26H~27H指令功能:累加器内容与内部RAM低128单元内容相加操作内容:A←(A)+((Ri)),i=0,1字节数:1机器周期:1影响标志位:C,AC,OV5、ADD A,#data指令名称:立即数加法指令指令代码:24H指令功能:累加器内容与立即数相加操作内容:A←(A)+data字节数:2机器周期:1影响标志位:C,AC,OV6、ADDC A,Rn指令名称:寄存器带进位加法指令指令代码:38H~3FH指令功能:累加器内容、寄存器内容和进位位相加操作内容:A←(A)+(Rn)+(C),n=0~7字节数:1机器周期:1影响标志位:C,AC,OV7、ADDC A,direct指令名称:直接寻址带进位加法指令指令代码:35H指令功能:累加器内容、内部RAM低128单元或专用寄存器内容与进位位加操作内容:A←(A)+(direct)+(C)字节数:2机器周期:1影响标志位:C,AC,OV8、ADDC A,@Ri指令名称:间接寻址带进位加法指令指令代码:36H~37H指令功能:累加器内容、内部RAM低128单元内容及进位位相加操作内容:A←(A)+((Ri))+(C),i=0,1字节数:1机器周期:1影响标志位:C,AC,OV9、ADDC A,#data指令名称:立即数带进位加法指令指令代码:34H指令功能:累加器内容、立即数及进位位相加操作内容:A←(A)+dat a+(C)字节数:2机器周期:1影响标志位:C,AC,OV10、AJMP addr11指令名称:绝对转移指令指令代码:指令功能:构造目的地址,实现程序转移。
MCS-51单片机指令全总结

MCS-51单片机指令全总结MCS-51单片机指令全总结MCS-51单片机指令总结(1)操作数中有direct、#data、bit的都是2字节指令;(2)在操作数中没有以上三个变量却有@标志的都是1字节指令;(3)凡是3字节指令的都是两周期的指令;(4)乘除是单字节四周期的指令;(5)字节调用指令、字节/位转移指令、字节/位逻辑指令、进/出栈指令、返回指令、INCDPTR、MOVdirect,Rn、MOVRn,direct、MOVdirect,@Ri、MOV@Ri,direct、MOVX(外部数据)以及MOVC(程序寄存器)都是2周期指令;(6)凡是direct、#data在一起的,数值比较转移指令(CJNE)、减1条件转移指令(DJNZ)、位条件转移指令(JB/JNB)、位条件清0转移指令(JBC)、长调用指令(LCALL)、长转移指令(LJMP)、MOVDPTR,#data16都是3字节指令;(7)绝对调用指令(ACALL)、绝对转移指令(AJMP)、减1条件转移指令(DJNZ)、累加器位条件转移指令(JC/JNC)、判0转移指令(JZ/JNZ)、短转移指令(SJMP)都是2字节指令;(8)其他指令都是1字节1周期指令,所有指令中无3周期指令;以上即51单片机所有指令的汇总,如有不足,敬请指正。
20xx-10-20扩展阅读:MCS-51单片机学习及其心得MCS-51单片机学习及其心得机械电子工程学院09电子(2)班曹小迪20xx1033023620xx-20xx上学年我们专业开设了MCS-51单片机的原理及接口技术这么专业课程,对于电子专业学生的我们是非常有必要的。
单片机是一切自动智能电子产品必须具备的一个不可或缺的控制中枢系统。
通俗点讲就是电子产品的“大脑”。
所以学习单片机对于做电子设计的我们来说有着远的意义。
MCS51是指由美国INTEL公司(对了,就是大名鼎鼎的INTEL)生产的一系列单片机的总称,这一系列单片机包括了好些品种,如8031,8051,8751,8032,8052,8752等,其中8051是最早最典型的产品,该系列其它单片机都是在8051的基础上进行功能的增、减、改变而来的,所以人们习惯于用8051来称呼MCS51系列单片机,而8031是前些年在我国最流行的单片机,所以很多场合会看到8031的名称。
第3章 MCS-51单片机指令系统1

2.操作码:指明指令功能,是指令功能的英文缩写。 汇编语句格式中唯一不能空缺的部分。
MOV__move传送 XCH__exchange交换 ANL__and logic与逻辑运算 XRL__exclusive or异或运算
MUL__Multiply乘法
RR__rotate right右循环 SJMP__short jump短跳转 RET__return 子程序返回 操作码助记符
MCS-51系列单片机指令系统分类
按寻址方式分为以下七种 1、立即寻址 2、直接寻址 3、寄存器寻址 按功能分为以下五种: 1、数据传送指令 2、算术运算指令 3、逻辑运算指令
4、寄存器间接寻址指令
5、相对寻址
4、控制转移指令
5、位操作指令
6、变址寻址
7、位寻址
3.3 指令系统的寻址方式
我的信在她 那!找信去!
快件
目的地
MOV A,#30H
30H
A
这类指令大都是双字节指令,仅有指令:MOV DPTR,#DATA16是三字节指令,它提供两字节立即 数。 第一位数字
是A~F时在 其前加0
对立即数的书写要求:对于单字节立即数,若 数值大于等于A0H,则要在其前面加一个0,如指令 “MOV A,#0A0H”,该指令含义是把立即数A0H送 累加器;对于双字节立即数,若数值大于等于 A000H,则要在其前面加一个0。对于直接地址和偏 移量也按相同方法书写。
1.标号:指令的符号地址 一般由字母和数字组成,第一位必须为字母,冒 号 “ :” 结 束 。 字 符 个 数 不 能 超 过 8 个 。 AD5 、 Q555、BB5D、pat、loop等为合法标号;5P、PA、10AD、+A等为非法标号。 不能用汇编语言已定义的符号作标号。如助记符、 伪指令、寄存器名称等。 同一标号在一个程序中只能定义一次。 标号在语句中的有无取决于本语句是否被访问。
(单片机原理及应用)第3章MCS-51单片机指令系统

3
模块化设计
将相关的函数和功能模块化,最小化每个模块的功能,便于调试程序。
单片机的发展趋势
人工智能
通过运用神经网络、深度学习 等技术,单片机正在向智能控 制方向发展。
虚拟现实
单片机和传感器技术的发展为 虚拟现实提供了广泛的应用场 景,可以用于游戏、医疗、工 业、设计等领域。
智慧城市
单片机和物联网技术将成为智 慧城市的基石,可以提供更加 智能化的交通、能源、环境、 安全等方面的控制。
SWAP
交换累加器A的低4位和高4位。
循环指令
JMP
无条件跳转到目标地址处。
JZ
当累加器A 为0时,跳转到目标地址处。
DJNZ
将某个存储单元的数值减1,若减去1后不为0, 则跳转到目标地址处。
CJNE
比较两个操作数,并进行条件跳转。
分支指令
1
JBC
判断某一位是否为1,若为1,则跳转到指定地址,并将该位清0。
单片机系统设计实例
L ED 跑马灯
通过循环移位操作,使LED 灯组织成流动效果。
温度控制器
通过D S18B20传感器采集温度信号,使用PWM技术控制风扇的转速,实现温度控制。
红外遥控器
通过学习已有遥控器的编码序列,使用红外遥控模块控制其他设备。
单片机应用案例分析
1 汽车电子
单片机广泛应用于发动机控制、安全气囊、中控系统、车载娱乐设备等方面。
EEPROM
只读、只写存储器,用于存储程序和数据。
地址寻址模式
1
直接寻址
用地址直接指向寄存器或存储单元。
寄存器寻址
用寄存器中存放的地址确定要寻找的存储单元。
3
寄存器间接寻址
mcs-51指令系统

0000H 0700H …… …… ACALL Addr7-0 …… …… 2KB 2KB
一2KB范围内
ORG 07FFH
PC
07FFH
0801H 0810H 0FFFH 1000H 1100H
ACALL 0700H
ACALL 0810H ORG 1100H ACALL 1700H ACALL 0FFFH
ORL 对某些位置位 ORL P1,#00110010B ;P1口的1,4,5位置为1
A的低3 位送P1口,P1口高5位不变 ANL A,#O7H ANL P1,#0F8H ORL P1,A
XRL 对某些位取反 XRL P1,#00110001B ;P1口的0,4,5位取反
4.5 控制转移指令
00010010 2 addr 8-15 addr 0-7 (SP)=#07H SUBRTN的实际地 (PC)#0123H+#3=#0126H (SP)#07H+#1=#08H ((SP))=(08H)#26H (SP)#08H+#1=#09H ((SP))=(09H)(01H) (PC)#5678H
转移指令通过பைடு நூலகம்写PC的当前值,从而改变CPU执行 程序的顺序,使程序发生跳转。 按转移条件分类:
1)无条件转移:
执行无条件转移指令,程序无条件转移到指定处。 2)条件转移: 指令中给出转移条件,执行指令时,先测试条件,若 满足条件,则程序収生转移,否则,仍顺序执行程序。
4.5.1无条件转移指令
4.3 算术运算指令
例:被乘数3个字节,存在42H,41H,40H单元,乘数存在
R4中,将积存放到53H,52H,51H,50H中。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
MCS-51指令简介
MCS-51系列单片机指令系统分类
计算机的许多功能都是由程序实现,而程序是由指令编写而成,所以熟悉并掌握单片机的指令是非常重要的。
为了便于学习,常把指令分成许多类型。
51系列单片机共有111条指令,这些指令的集合称为指令系统。
常用的分类方式有以下几种。
按寻址方式分为以下七种:
1、立即寻址
2、直接寻址
3、寄存器寻址
4、寄存器间接寻址
5、相对寻址
6、变址寻址
7、位寻址
按功能分为以下四种
1、数据传送指令
2、算术、逻辑运算指令
3、控制转移类指令
4、位操作指令(布尔指令)
若按字节又可分为单字节指令、双字节指令和三字节指令。
指令格式
MCS-51单片机采用汇编语言指令,一条汇编语言的语句最多包括四部分:标号、操作码、操作数和注释,其结构为:
标号:操作码操作数;注释
(1)标号位于语句的开始,由字母和数字组成,它代表该语句的地址。
标号必须由字母打头,冒号结束。
字母和数字的总数不应超过一定数量,一般标号不能为助记符。
标号不是语句必要的组成部分。
(2)操作码在标号之后,是指令的助记符,表示语句的性质,是语句的核心。
没有标号时,它作为语句的开始。
(3)操作数在操作码之后,二者用空格分开。
操作数既可以是数据,也可以是地址,且必须满足寻址方式的规定。
有多个操作数时,操作数之间用“,”分开。
指令中的常数可以是十进制、十六进制或二进制,具体格式如下:
二进制常数以B结尾,如:10100011B;
十六进制常数以H结尾,如:65H、0F1H;
十进制常数以D(可以省略)结尾,如:65D或65;
字符串常数用‘’表示,如‘A’表示A的ASCII码。
(4)注释在语句的最后,以“;”开始,是说明语句的功能和性质的文
字。
例:
START:MOV A,#30H ;A←30H
START为标号,它以“:”结束,表示该指令的地址;MOV为用助记符表示的操作码,表示指令的功能为数据传送;A和#30H操作数;A←30H则为注释,它以“;”开始,说明这条语句的功能。
说明:1)指令格式中带方括号项不是每条指令必有,可有可无,称为可选项。
2)标号项不是每条指令都有,根据程序要求而设置。
指令中常用符号说明
下面根据指令的功能特性分类介绍。
在介绍指令之前,先说明指令中一些常用的符号:
Rn——当前寄存器区的8个工作寄存器R0~R7(n=0~7)
Ri——当前寄存器区可作地址寄存器的2个工作寄存器R0和R1(i=0,1)
direct——8位内部数据存储器单元的地址及特殊功能寄存器的地址 #data——表示8位常数(立即数)
#datal6——表示16位常数
add16——表示16位地址
addrll——表示11位地址
rel——8位带符号的地址偏移量
bit——表示位地址
@——间接寻址寄存器或基址寄存器的前缀
( )——表示括号中单元的内容
(( ))——表示间接寻址的内容。