MCS-51单片机指令系统教程(3)
- 格式:ppt
- 大小:2.11 MB
- 文档页数:117


第3章MCS-51单片机指令系统
3.1概述
3.1.1指令格式
3.1.2指令的三种表示形式
3.1.3指令的字节数
1. 单字节指令(49条)
图3-1 MOVA,Rn指令的格式 单片机原理及其接口技术(第2版)
2
2. 双字节指令(46条)
3. 三字节指令(16条)
3.1.4指令的分类
1. 数据传送指令(28条)
2. 算术运算指令(24条)
3. 逻辑操作和环移指令(25条)
4. 控制转移指令(17条)
5. 位操作指令(17条)
3.1.5指令系统综述
1. 指令系统中所用符号的说明
2. 指令对标志位的影响
3.2寻址方式
3.2.1寄存器寻址
图3-2寄存器寻址示意图 单片机原理及其接口技术(第2版)
3
3.2.2直接寻址
图3-3直接寻址示意图
3.2.3立即寻址
3.2.4寄存器间址
图3-4寄存器间址寻址示意图
3.2.5变址寻址
图3-5变址寻址示意图 单片机原理及其接口技术(第2版)
4
3.2.6相对寻址
图3-6相对寻址示意图
3.2.7位寻址
3.3数据传送指令
3.3.1内部数据传送指令(15条)
1. 立即寻址型传送指令
2. 直接寻址型传送指令
3. 寄存器寻址型传送指令
4. 寄存器间址型传送指令
5. 内部数据传送指令的使用
图3-7 8×C552/8051指令的数据传送方式 单片机原理及其接口技术(第2版)
5
3.3.2外部数据传送指令(7条)
1. 16位数传送指令
2. 外部ROM的字节传送指令
图3-8 0~9平方值表
3. 外部RAM的字节传送指令
3.3.3堆栈操作指令(2条)
图3-9例3.8的堆栈变化示意图 单片机原理及其接口技术(第2版)
6
3.3.4数据交换指令(4条)
3.4算术与逻辑运算和移位指令
3.4.1算术运算指令(24条)
1. 加法指令
2. 减法指令
3. 十进制调整指令
4. 乘法和除法指令
一个单片机所需执行指令的集合即为单片机的指令系统。单片机使用的机器语言、汇编语言及高级语言,但不管使用是何种语言,最终还是要“翻译”成为机器码, 单片机才能执行之。现在有很多半导体厂商都推出了自己的单片机,单片机种类繁多,品种数不胜数,值得注意的是不同的单片机它们的指令系统不一定相同,或不 完全相同。但不管是使用机器语言、汇编语言还是高级语言都是使用指令编写程序的。
所谓机器语言即指令的二进制编码,而汇编语言则是指令的表示符号。在指令的表达式上也不会直接使用二进制机器码,最常用的是十六进制的形式。但单片机并 不能直接执行汇编语言和高级语言,都必须通过汇编器“翻译”成为二进制机器码方能执行,但如果直接使用二进制来编写程序,那将十分不便,也很难记忆和识 别,不易编写、难于辨读,极易出错,同时出错了也相当难查找。所以现在基本上都不会直接使用机器语言来编写单片机的程序。最好的办法就是使用易于阅读和辨 认的指令符号来代替机器码,我们常称这些符号为助记符,用助记符的形式表示的单片机指令就是汇编语言,为便于记忆和阅读,助记符号通常都使用易于理解的英 文单词和拼音字母来表示。
每种单片机都有自己独特的指令系统,那么指令系统是开发和生产厂商定义的,如要使用其单片机,用户就必须理解和遵循这些指令标准,要掌握某种(类)单片机,指令系统的学习是必须的。
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)
MCS-51单片机指令系统
MCS-51单片机指令系统系统包括111条指令,按功能可以划分为一下5类:
数据传送指令(29条)
算术运算指令(24条)
逻辑运算及移位指令(24条)
控制转移指令(17条)
位操作指令(17条)
指令系统中的符号说明
符号 含义
Rn 表示当前选定寄存器组的工作寄存器R0~R7
Ri 表示作为间接寻址的地址指针R0~R1
#data 表示8位立即数,即00H~FFH
#data16 表示16位立即数,即0000H~FFFFH
addr16 表示16位地址,用于64K范围内寻址
addr11 表示11位地址,用于2K范围内寻址
direct 8位直接地址,可以是内部RAM区的某一单元或某一专用功能寄存器的地址
Rel 带符号的8位偏移量(-128~+127)
Bit 位寻址区的直接寻址位
(X) X地址单元中的内容,或X作为间接寻址寄存器时所指单元的内容
← 将 ← 后面的内容传送到前面去
一、数据传送指令(29条)
1.内部8位数据传送指令(15条)
内部8位数据传送指令共15条,主要用于MCS-51单片机内部RAM与寄存器之间的数据传送。指令基本格式:
MOV
,
(1) 以累加器A为目的地址的传送指令
助记符格式 相应操作 机器周期
MOV A,Rn A←Rn 1
MOV A,direct A←(direct) 1
MOV A,@Ri A←(Ri) 1
MOV A,#data A←#data 1
(2) 以Rn为目的地址的传送指令
助记符格式 相应操作 机器周期
MOV Rn,A Rn←A 1
MOV Rn,direct Rn←(direct) 1 MOV Rn,#data Rn←#data 1
(3) 以直接地址为目的地址的传送指令
助记符格式 相应操作 机器周期
MCS-51单片机汇编指令详解
以累加器为目的操作数的指令
MOV A,Rn
MOV A,direct
MOV A,@Ri
MOV A,#data
第一条指令中,Rn代表的是R0-R7。第二条指令中,direct就是指的直接地址,而第三条指令中,就是我们刚才讲过的。第四条指令是将立即数data送到A中。
下面我们通过一些例子加以说明:
MOV A,R1 ;将工作寄存器R1中的值送入A,R1中的值保持不变。
MOV A,30H ;将内存30H单元中的值送入A,30H单元中的值保持不变。
MOV A,@R1 ;先看R1中是什么值,把这个值作为地址,并将这个地址单元中的值送入A中。如执行命令前R1中的值为20H,则是将20H单元中的值送 入A中。 MOV A,#34H ;将立即数34H送入A中,执行完本条指令后,A中的值是34H。
以寄存器Rn为目的操作的指令
MOV Rn,A
MOV Rn,direct
MOV Rn,#data
这组指令功能是把源地址单元中的内容送入工作寄存器,源操作数不变。
以直接地址为目的操作数的指令
MOV direct,A 例: MOV 20H,A
MOV direct,Rn MOV 20H,R1
MOV direct1,direct2 MOV 20H,30H
MOV direct,@Ri MOV 20H,@R1
MOV direct,#data MOV 20H,#34H
以间接地址为目的操作数的指令
MOV @Ri,A 例:MOV @R0,A