单片机的指令系统
- 格式:docx
- 大小:20.24 KB
- 文档页数:12
单片机第4章8051单片机指令系统在单片机的世界里,指令系统就如同指挥官手中的指令手册,指引着单片机完成各种复杂的任务。
8051 单片机的指令系统更是其中的重要组成部分,它为我们提供了丰富多样的指令,让我们能够灵活地控制单片机的运行。
8051 单片机的指令系统可以分为五大类,分别是数据传送指令、算术运算指令、逻辑运算指令、控制转移指令和位操作指令。
数据传送指令是指令系统中的基础,就像是在战场上调配物资一样。
它能够实现寄存器之间、寄存器与存储器之间、立即数与寄存器或存储器之间的数据传递。
比如 MOV 指令,它可以将一个数据从源地址传送到目的地址。
假设我们要将立即数 50H 传送到累加器 A 中,就可以使用指令“MOV A, 50H”。
这样,累加器 A 就存储了 50H 这个数值。
算术运算指令则像是在进行战斗中的兵力计算。
它包括加法、减法、乘法和除法等运算。
ADD 指令用于加法运算,SUBB 指令用于带借位的减法运算。
例如,我们要将累加器 A 中的值与寄存器 B 中的值相加,并将结果存放在累加器 A 中,就可以使用指令“ADD A, B”。
如果要进行带借位的减法运算,比如从累加器 A 中减去寄存器 B 中的值以及借位标志位 CY 的值,可以使用指令“SUBB A, B”。
逻辑运算指令就像是在制定战略时的思考逻辑。
AND 指令用于逻辑与操作,ORL 指令用于逻辑或操作,XRL 指令用于逻辑异或操作。
以 AND 指令为例,如果我们要将累加器 A 中的值与立即数 80H 进行逻辑与操作,并将结果存放在累加器 A 中,就可以使用指令“AND A, 80H”。
控制转移指令则是指挥战斗中的战略部署调整。
它可以改变程序的执行顺序,使单片机能够根据不同的条件执行不同的程序段。
比如 JZ 指令,如果累加器 A 的值为 0,则程序跳转到指定的地址;JC 指令,如果进位标志位 CY 为 1,则程序跳转到指定的地址。
位操作指令则专注于对单个位的操作,就像是在精细地调整战斗中的某个关键环节。
第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变址寻址示意图4单片机原理及其接口技术(第2版)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的堆栈变化示意图6单片机原理及其接口技术(第2版)3.3.4数据交换指令(4条)3.4算术与逻辑运算和移位指令3.4.1算术运算指令(24条)1. 加法指令2. 减法指令3. 十进制调整指令4. 乘法和除法指令3.4.2逻辑运算指令(20条)1. 逻辑与运算指令2. 逻辑或指令3. 逻辑异或指令4. 累加器清零和取反指令3.4.3移位指令(5条)单片机原理及其接口技术(第2版)7图3-10例3.26附图3.5控制转移和位操作指令3.5.1控制转移指令(17条)1. 无条件转移指令图3-11 AJMP指令转移范围8单片机原理及其接口技术(第2版)图3-12例3.29附图图3-13带符号数的比较方法3. 子程序调用和返回指令图3-14二级子程序嵌套及断点地址存放单片机原理及其接口技术(第2版)9图3-15例3.33附图10单片机原理及其接口技术(第2版)4. 空操作指令3.5.2位操作指令(17条)1. 位传送指令2. 位置位和位清零指令3. 位运算指令4. 位控制转移指令习题与思考题3.1指令通常有哪三种表示形式?各有什么特点?3. 2 MCS-51指令按功能可以分为哪几类?每类指令的作用是什么?3. 3 MCS-51共有哪七种寻址方式?各有什么特点?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)direct—内部数据存储单元的8位地址。
单片机的指令系统一、数据传送指令数据传送指令主要负责把数据、地址或马上数传送到寄存器或存储单元中。
这类指令共有29条,可分为以下3大类:基本数据传送指令,数据交换指令,栈操作指令。
执行数据传送指令时,除以累加器A为目的操作数的指令会对奇偶标志位P有影响外,其余指令执行时均不会影响任何标志位。
1.基本数据传送指令依据数据取自何方和传到何方,MOV指令有着很多不同的形式。
(1)以累加器A为目的操作数类指令这组指令的作用是把源操作数指向的内容送到累加器A。
有马上数、直接、寄存器和寄存器间接寻址方式:MOVA,#data ;data→(A)MOVA,direct ;(direct)→(A)MOVA,Ri ;(Ri)→(A)MOVA,@Rj ;((Rj))→(A)(2)以寄存器Ri为目的操作数的指令这组指令的功能是把源操作数指定的内容送到所选定的工作寄存器Ri中。
有马上、直接和寄存器寻址方式:(3)以直接地址为目的操作数的指令这组指令的功能是把源操作数指定的内容送到由直接地址direct所选定的片内RAM中。
有马上、直接、寄存器和寄存器间接4种寻址方式:(4)以间接地址为目的操作数的指令这组指令的功能是把源操作数指定的内容送到以Rj中的内容为地址的片内RAM中。
有马上、直接和寄存器3种寻址方式(5)查表指令这组指令的功能是对存放于程序存储器中的数据表格进行查找传送,使用变址寻址方式:MOVCA,@A+DPTR ;((A)+(DPTR))→(A)MOVCA,@A+PC ;((PC))+1→(PC),((A)+(PC))→(A)(6)累加器A与片外数据存储器RAM传送指令这组指令的作用是累加器A与片外RAM间的数据传送。
使用寄存器寻址方式:MO@DPTR,A ;(A)→((DPTR))MOA,@DPTR ;((DPTR))→(A)MOA,@Rj ;((Rj))→(A)MO@Rj,A ;(A)→((Rj))(7)16位数据传送指令这条指令的功能是把16位常数送入数据指针寄存器。
MOVDPTR,#data16 ;dataH→(DPH),dataL→(DPL)2.交换指令MOV指令主要完成从一处到另一处的拷贝,XCH指令则可实现数据的双向传送。
全部的操作都涉及到累加器A,可以把把累加器A中的内容与源操作数所指的数据相互交换。
XCHA,direct ;(A)←→(direct)XCHA,Ri ;(A)←→(Ri)XCHA,@Rj ;(A)←→((Rj))XCHDA,@Rj ;(A3-0)←→((Rj)3-0)SWAPA ;(A3-0)←→(A7-4)3.入栈/出栈指令这类指令的作用是把直接寻址单元的内容传送到堆栈指针SP所指的单元中,以及把SP所指单元的内容送到直接寻址单元中。
⑴PUSH指令堆栈的入栈指令,该指令可以把某片内RAM单元(低128字节)或某专用寄存器的内容入栈。
PUSHdirect ;(SP)+1→(SP),(direct)→(SP)⑴POP指令堆栈的出栈指令,该指令用于恢复某片内RAM单元(低128字节)或某专用寄存器的内容。
POPdirect ;(SP)→(direct),(SP)-1→(SP)二、算术运算指令在51系列单片机的指令系统中,供应了完备的加、减、乘、除算术运算指令及增量(加1)、减量(减1)运算,可处理不带符号或带符号的8/16二进制数。
除加1和减1指令外,算术运算指令会影响进位、半进位和溢出位三个标志位。
1.不带进位的加法指令这组指令的作用是把马上数,直接地址、工作寄存器及间接地址内容与累加器A的内容相加,运算结果存在A中。
ADDA,#data ;(A)+data→(A)ADDA,direct ;(A)+(direct)→(A)ADDA,Ri ;(A)+(Ri)→(A)ADDA,@Rj ;(A)+((Rj))→(A)本组指令的执行将影响标志位AC、CY、OV、P。
当和的第3、7位有进位时,分别将AC,CY标志位置位;否则复位。
对于无符号数,进位标志位CY=1,表示溢出;CY=0表示无溢出。
带符号数运算的溢出取决于第6、7位,若这2位中有一位产生进位,而另一位不产生进位,则溢出标志位OV置位,否则被复位。
2.带进位加法指令这组指令的作用是把马上数,直接地址、工作寄存器及间接地址内容与累加器A的内容以及进位位C相加,运算结果存在A中。
本组指令执行对标志位AC、CY、OV、P的影响与ADD指令相同。
3.增量指令这组指令的的功能均为原寄存器的内容加1,结果送回原寄存器。
这组指令共有直接、寄存器、寄存器间接寻址等寻址方式:INCA ;(A)+1→(A)INCdirect ;(direct)+1→(direct)INCRi ;(Rn)+1→(Ri)INC@Rj ;((Rj))+1→((Rj))INCDPTR ;(DPTR)+1→(DPTR)增量指令不会对任何标志有影响。
4.带借位减法指令这组指令包含马上数、直接地址、间接地址及工作寄存器与累加器A连同借位位C内容相减,结果送回累加器A中。
SUBBA,#data ;(A)-data-(C)→(A)SUBBA,direct ;(A)-(direct)-(C)→(A)SUBBA,Ri ;(A)-(Ri)-(C)→(A)SUBBA,@Rj ;(A)-((Rj))-(C)→(A)本指令执行将影响标志位AC、CY、OV、P。
若第七位有借位,则将CY置位,否则CY复位。
若第3位有错位,则置位帮助进位标志AC,否则AC复位。
若第7和第6位中有一位需借位,而另一位不借位,则置位溢出标志OV。
当在进行单字节或多字节减法前,不知道进位标志位CY的值,则应在减法指令前先将CY复位清“0”。
5.减量指令这组指令的作用是把所指的寄存器内容减1,结果送回原寄存器,这组指令共有直接、寄存器、寄存器间接寻址等寻址方式:DECA ;(A)-1→(A)DECdirect ;(direct)-1→(direct)DECRi ;(Ri)-1→(Ri)DEC@Rj ;((Rj))-1→((Rj))运算结果不影响任何标志位。
6.乘法指令这条指令的作用是把累加器A和寄存器B中的8位无符号数相乘,所得到的是16位乘积,这个结果低8位存在累加器A,而高8位存在寄存器B中。
MULAB ;(A)×(B)→(B)和(A)乘法指令需要4个机器周期。
假如乘积大于255(0FFH),即B的内容不为0时,则置位溢出标志位OV,否则OV复位。
进位标志位CY总是复位为0。
7.除法指令这条指令的作用是把累加器A的8位无符号整数除以寄存器B中的8位无符号整数,所得到的商存在累加器A,而余数存在寄存器B中。
DIVAB;(A)÷(B)→(A)和(B)除法指令需要4个机器周期。
本指令总是将CY和OV标志位复位。
当除数(B中内容)为00H 时,那么执行结果将为不定值,则置位溢出标志位OV。
8.十进制调整指令在进行BCD码运算时,这条指令总是跟在ADD或ADDC指令之后,其功能是将执行加法运算后存于累加器A中的结果进行调整和修正。
DAA三、规律运算指令在51系列单片机的指令系统中供应的规律运算指令主要包括ANL(与),ORL(或),XRL(异或)等指令。
1.规律与指令ANL这组指令的功能是在指出的变量之间以位为基础的规律与操作。
操作数有寄存器寻址、直接寻址、寄存器间接寻址和马上寻址等寻址方式:ANLA,#data;(A)⑴data→(A)ANLA,direct ;(A)⑴(direct)→(A)ANLA,Ri ;(A)⑴(Ri)→(A)ANLA,@Rj ;(A)⑴((Rj))→(A)ANLdirect,#data ;(direct)⑴data→(direct)ANLdirect,A ;(direct)⑴(A)→(A)2.规律或指令ORL这组指令的功能是在所指出的变量之间执行以位为基础的规律或操作,结果存到目的变量中去。
操作数有马上寻址、直接寻址、寄存器寻址和寄存器间接寻址方式:3.规律异或指令XRL这组指令的功能是在所指出的变量之间执行以位为基础的规律异或操作,结果存放到目的变量中去。
操作数有马上寻址、直接寻址、寄存器寻址和寄存器间接寻址方式:4.循环移位指令这4条指令的作用是将累加器中的内容循环左或右移一位,后两条指令是连同进位位CY一起移位。
RLA ;累加器A中的内容左移一位。
RRA ;累加器A中的内容右移一位。
RLCA ;累加器A中的内容连同进位位CY左移一位。
RRCA ;累加器A中的内容连同进位位CY右移一位。
5.求反指令这条指令将累加器中的内容按位取反。
CPLA ;累加器中的内容按位取反。
6.清零指令这条指令将累加器中的内容清0。
CLRA ;0→(A),累加器中的内容清0。
四、位操作类指令MCS-51单片机内部有一个布尔处理机,对位地址空间具有丰富的位操作指令。
1.位传送指令这2条指令的功能是把由源操作数指出的布尔变量送到目的操作数指定的位中去。
其中一个操作数必需为进位标志,另一个可以是任何直接寻址位。
MOVC,bit ;bit→CY,某位数据送CY。
MOVbit,C ;CY→bit,CY数据送某位。
本组指令不影响其他寄存器和标志位。
2.位变量修改指令这些指令对CY及可寻址位进行置位或复位操作CLRC ;0→CY,复位CY。
CLRbit ;0→bit,复位某一位。
SETBC ;1→CY,置位CY。
SETBbit ;1→bit,置位某一位。
本组指令不影响其他标志。
3.位变量规律指令位运算都是规律运算,有与、或、非三种指令ANLC,bit ;(CY)⑴(bit)→CYANLC,/bit;(CY)⑴()→CYORLC,bit ;(CY)⑴(bit)→CYORLC,/bit ;(CY)⑴()→CYCPLC ;()→CYCPLbit ;()→bit4.位变量条件转移指令位变量条件转移指令是以位的状态作为实现程序转移的推断条件:JCrel ;(CY)=1转移,(PC)+2+rel→PC,否则程序往下执行,(PC)+2→PC。
JNCrel ;(CY)=0转移,(PC)+2+rel→PC,否则程序往下执行,(PC)+2→PC。
JBbit,rel ;位状态为1转移。
JNBbit,rel;位状态为0转移。
JBCbit,rel ;位状态为1转移,并使该位清“0”。
五、掌握转移指令一般状况下指令是挨次执行的逐条执行的,但实际上程序不行能全部挨次执行而常常需要转变程序的执行流程,常用的掌握转移指令有:1.无条件转移指令这组指令执行完后,程序就会无条件转移到指令所指向的地址上去。
长转移指令访问的程序存储器空间为16地址64kB,肯定转移指令访问的程序存储器空间为11位地址2kB空间。