版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第第3章章 MCS-51单片机指令系统单片机指令系统1、编程语言介绍编程语言介绍2、 MCS-51指令系统的分类、格式及一般说明指令系统的分类、格式及一般说明3 、 寻址方式寻址方式4、 分类指令分类指令编程语言编程语言微处理器常用的三种语言:微处理器常用的三种语言:机器语言:机器语言:CPU是数字电路,是数字电路, CPU能理解的语能理解的语言是由言是由0、1组成的二进制语言,机器语言。组成的二进制语言,机器语言。如如0111010000000110,0010010000011000,是,是用用8051汇编语言表述的汇编语言表述的6+24。机器能识别、执行速度快;难读、易错、不易机器能识别、
2、执行速度快;难读、易错、不易查找。查找。 汇编语言:为使机器指令对程序员是可读的,汇编语言:为使机器指令对程序员是可读的,CPU制制造商对各种造商对各种CPU定义了汇编语言,汇编语言是面向机定义了汇编语言,汇编语言是面向机器的,使用助记符(通常取相应英文单词缩写)表示的器的,使用助记符(通常取相应英文单词缩写)表示的汇编语言指令,它方便程序员编写、记忆、阅读和识汇编语言指令,它方便程序员编写、记忆、阅读和识别,但不能直接被机器识别理解。别,但不能直接被机器识别理解。将将6+24写成汇编语言:写成汇编语言:MOV A,#06 ADD A,#24必须用手工或汇编器翻译成机器程序;必须用手工或汇编器
3、翻译成机器程序;汇编语言精确的表示了汇编语言精确的表示了CPU操作及实现细节,但会掩操作及实现细节,但会掩盖了程序的原始意图;盖了程序的原始意图;汇编语言的与汇编语言的与CPU有关特点,带来的有关特点,带来的CPU的不可移植性。的不可移植性。高级语言高级语言C:高级语言是接近于人的思维方式:高级语言是接近于人的思维方式的自然语言,对问题和其求解的表述比汇编语的自然语言,对问题和其求解的表述比汇编语言更容易理解,如言更容易理解,如X=6+24,但同样不能接被机,但同样不能接被机器识别,也要汇编成机器语言,才能被机器执器识别,也要汇编成机器语言,才能被机器执行。高级语言掩盖了行。高级语言掩盖了CP
4、U的实现细节,但高级的实现细节,但高级语言可读姓高、移植性强。语言可读姓高、移植性强。文本编辑器文本编辑器PC源文件源文件建造过程建造过程列表与图表文件列表与图表文件目标代码目标代码调试程序调试程序 建造时错误建造时错误运行时错误运行时错误目的机目的机内内 存存代码运行代码运行软件构筑的一般过程软件构筑的一般过程文本编辑器:用以创建所有源文件程序;文本编辑器:用以创建所有源文件程序;源文件:程序员所编写的原始程序代码;源文件:程序员所编写的原始程序代码;用汇编语言编写,汇编语言代码就是源;用用汇编语言编写,汇编语言代码就是源;用C语言编写,语言编写, C代码就是源;有二进制编写,机代码就是源;
5、有二进制编写,机器代码就是源。器代码就是源。目标代码:软件建造过程过程所得到的结果代目标代码:软件建造过程过程所得到的结果代码,对为控制器进行编程时,目标代码就是机码,对为控制器进行编程时,目标代码就是机器语言。器语言。介绍三种文本编辑器介绍三种文本编辑器UltraEdit10.10cUltraEdit:一个强大的替代:一个强大的替代Windows记事本记事本(Notepad)的编辑器,可以用它直接编的编辑器,可以用它直接编辑十六进制文件辑十六进制文件(HEX);Keil C51:Keil C51是美国是美国Keil Software公司出品的公司出品的51系列兼容单片机系列兼容单片机C语言软
6、件开发系统。是众多单片机应语言软件开发系统。是众多单片机应用开发的优秀软件之一,它集编辑、编译、仿真于一用开发的优秀软件之一,它集编辑、编译、仿真于一体,支持汇编;体,支持汇编; MedWin:是万利电子有限公司是万利电子有限公司Insight系列仿真开发系系列仿真开发系统的高性能集成开发环境。集编辑、编译统的高性能集成开发环境。集编辑、编译/汇编、在线汇编、在线及模拟调试为一体。及模拟调试为一体。MedWin集成开发环境使用说明集成开发环境使用说明返回本节MCS-51单片机指令系统概述单片机指令系统概述 汇编语言的指令类型:汇编语言的指令类型:MCS-51单片机汇编语言,包含两类不同性质的单
7、片机汇编语言,包含两类不同性质的指令。指令。1)基本指令:即指令系统中的指令。它们都是)基本指令:即指令系统中的指令。它们都是机器能够执行的指令,每一条指令都有对应的机器能够执行的指令,每一条指令都有对应的机器码。机器码。2)伪指令:汇编时用于控制汇编的指令。它们)伪指令:汇编时用于控制汇编的指令。它们都是机器不执行的指令,无机器码。都是机器不执行的指令,无机器码。MCS-51单片机指令系统有如下特点:单片机指令系统有如下特点:(1)指令执行时间快。)指令执行时间快。(2)指令短,约有一半的指令为单字节指令。)指令短,约有一半的指令为单字节指令。(3)用一条指令即可实现)用一条指令即可实现2个
8、一字节的相乘或个一字节的相乘或相除。相除。(4)具有丰富的位操作指令。)具有丰富的位操作指令。 (5)可直接用传送指令实现端口的输入输出)可直接用传送指令实现端口的输入输出操作。操作。MCS-51指令系统的分类、格式及一般说明指令系统的分类、格式及一般说明(1 ) 指令分类指令分类(2 ) 指令格式指令格式(3) 指令描述符号介绍指令描述符号介绍返回本章首页1) 指令分类指令分类 按指令功能,按指令功能,MCS-51指令系统分为数据传递指令系统分为数据传递与交换、算术运算、逻辑运算、程序转移、与交换、算术运算、逻辑运算、程序转移、布尔处理操作、布尔处理操作、CPU控制等控制等6类。类。 布尔处
9、理操作类指令又称位操作指令。布尔处理操作类指令又称位操作指令。返回2) 指令格式指令格式在在MCS-51指令中,一般指令主要由操作码、操作数组指令中,一般指令主要由操作码、操作数组成。成。操作码操作码 目标操作数目标操作数, 源操作数源操作数操作码操作码 目标操作数目标操作数(源操作数源操作数)指令应具有以下功能:指令应具有以下功能:(1)操作码指明执行什么性质和类型的操作。例如,)操作码指明执行什么性质和类型的操作。例如, 数的传送、加法、减法等。数的传送、加法、减法等。(2)操作数指明操作的数本身或者是操作数所在的地)操作数指明操作的数本身或者是操作数所在的地 址。址。(3)指定操作结果存
10、放的地址。)指定操作结果存放的地址。返回3) 指令描述符号介绍指令描述符号介绍Rn当前选中的寄存器区中的当前选中的寄存器区中的8个工作寄存个工作寄存器器R0R7(n=07)。)。Ri当前选中的寄存器区中的当前选中的寄存器区中的2个工作寄存器个工作寄存器R0、R1(i=0,1)。)。direct8位的内部数据存储器单元中的地址。位的内部数据存储器单元中的地址。#data包含在指令中的包含在指令中的8位常数。位常数。#data16包含在指令中的包含在指令中的16位常数。位常数。addr1616位目的地址。位目的地址。addr1111位目的地址。位目的地址。rel8位带符号的偏移字节,简称偏移量。位
11、带符号的偏移字节,简称偏移量。DPTR数据指针,可用作数据指针,可用作16位地址寄存器。位地址寄存器。bit内部内部RAM或专用寄存器中的直接寻址位。或专用寄存器中的直接寻址位。A累加器。累加器。B专用寄存器,用于乘法和除法指令中。专用寄存器,用于乘法和除法指令中。C进位标志或进位位,或布尔处理机中的累加器。进位标志或进位位,或布尔处理机中的累加器。间址寄存器或基址寄存器的前缀,如间址寄存器或基址寄存器的前缀,如Ri,DPTR。/ 位操作数的前缀,表示对该位操作数取反,位操作数的前缀,表示对该位操作数取反,如如/bit。片内片内RAM的直接地址或寄存器。的直接地址或寄存器。()由由寻址的单元中
12、的内容。寻址的单元中的内容。 箭头左边的内容被箭头右边的内容所箭头左边的内容被箭头右边的内容所代替。代替。返回2、 寻址方式寻址方式寻找操作数的过程称寻址寻找操作数的过程称寻址(1 ) 立即寻址立即寻址(2 ) 直接寻址直接寻址(3 ) 寄存器寻址寄存器寻址(4 ) 寄存器间接寻址寄存器间接寻址(5 ) 变址寻址变址寻址(6 ) 相对寻址相对寻址(7 ) 位寻址位寻址返回本章首页(1 ) 立即寻址立即寻址 指令中直接给出操作数的寻址方式。立即操作数用指令中直接给出操作数的寻址方式。立即操作数用前面加有前面加有#号的号的8位或位或16位数来表示。位数来表示。例如:例如:MOV A,# 60H ;
13、A#60H MOV DPTR,# 3400H;DPTR#3400HMOV 30H,# 40H ;30H单元单元#40H 上述三条指令执行完后,累加器上述三条指令执行完后,累加器A中数据为立即数据中数据为立即数据60H,DPTR寄存器中数据为寄存器中数据为3400H,30H单元中数单元中数据为立即数据为立即数40H。返回本节(2 ) 直接寻址直接寻址 指令中直接给出操作数地址的寻址方式,能指令中直接给出操作数地址的寻址方式,能进行直接寻址的存储空间有进行直接寻址的存储空间有SFR寄存器和内寄存器和内部数据部数据RAM。例如:例如:MOV PSW,# 20H ; PSW#20H PSW为直接寻址寄
14、存器的符号地址。为直接寻址寄存器的符号地址。 MOVA,30H;A30H内部内部RAM单单元中的内容元中的内容 30H为直接给出的内部为直接给出的内部RAM的地址。的地址。返回本节(3 )寄存器寻址)寄存器寻址 以通用寄存器的内容为操作数的寻址方式。以通用寄存器的内容为操作数的寻址方式。通用寄存器指通用寄存器指A、B 、DPTR以及以及R0R7 。 例如:例如:CLR A ;A0 INC DPTR;DPTRDPTR+1 ADDR5,# 20H ;R5#20H+R5返回本节(4 ) 寄存器间接寻址寄存器间接寻址 以寄存器中内容为地址,以该地址中内容为以寄存器中内容为地址,以该地址中内容为操作数的
15、寻址方式。间接寻址的存储器空间操作数的寻址方式。间接寻址的存储器空间包括内部数据包括内部数据RAM和外部数据和外部数据RAM。 能用于寄存器间接寻址的寄存器有能用于寄存器间接寻址的寄存器有R0,R1,DPTR,SP。其中。其中R0、R1必须是工作寄存器必须是工作寄存器组中的寄存器。组中的寄存器。SP仅用于堆栈操作。仅用于堆栈操作。例如:例如:MOV R0,A ;内部;内部RAM(R0)A其指令操作过程示意图如图其指令操作过程示意图如图3-1所示。所示。又如:又如:MOVX A,R1;A外部外部RAM(P2R1)其指令操作过程示意图如图其指令操作过程示意图如图3-2所示。所示。再如:再如:MOV
16、X DPTR,A;外部;外部RAM(DPTR)A 其指令操作过程示意图如图其指令操作过程示意图如图3-3所示。所示。片内RAM30HR034HA30H34H图3-1 MOV R0,A间接寻址示意图片外RAM34HP245HA3410H45H10HR1片外RAM2000HDPTR30HA2000H30H图3-2 MOVX A,R1间接寻址示意图 图3-3 MOVX DPTR,A间接寻址示意图返回本节(5) 变址寻址变址寻址 变址寻址只能对程序存储器中数据进行操作。变址寻址只能对程序存储器中数据进行操作。由于程序存储器是只读的,因此变址寻址只由于程序存储器是只读的,因此变址寻址只有读操作而无写操作
17、,在指令符号上采用有读操作而无写操作,在指令符号上采用MOVC的形式(如图的形式(如图3-4所示)。所示)。例如:例如:MOVC A, A+DPTR;A(A+DPTR)又如,又如,MOVC A, A+PC ;A(A+PC) 这条指令与上条指令不同的是,基址寄存器这条指令与上条指令不同的是,基址寄存器是是PC。(6 ) 相对寻址相对寻址 以当前程序计数器以当前程序计数器PC的内容为基础,加上指的内容为基础,加上指令给出的一字节补码数(偏移量)形成新的令给出的一字节补码数(偏移量)形成新的PC值的寻址方式。值的寻址方式。 相对寻址用于修改相对寻址用于修改PC值,主要用于实现程序值,主要用于实现程序
18、的分支转移。的分支转移。 例如,例如,SJMP 08H返回本节(7) 位寻址位寻址 位寻址只能对有位地址的单元作位寻址操作。位寻址只能对有位地址的单元作位寻址操作。 位寻址其实是一种直接寻址方式,不过其地址位寻址其实是一种直接寻址方式,不过其地址是位地址。是位地址。 例如:例如:SETB 10H ;将;将10H位置位置1若若22H单元中存放着数据单元中存放着数据40H,22H单元的单元的D0位的位位的位地址为地址为10H,执行上述指令后(,执行上述指令后(22H)=41H。 又如:又如:MOV 32H,C ;32H进位位进位位C ORL C ,32H ;CC32H返回本节位寻址的几种寻址方式位
19、寻址的几种寻址方式 1)直接使用)直接使用00H7FH范围内的某一位地址。如范围内的某一位地址。如00H位、位、26H位等。位等。2)采用单元地址)采用单元地址+位序号的表示方法。如位序号的表示方法。如20H.0H(00H位)、位)、24H.6(26H位)、位)、P0口(口(80H)的)的D6位位80H.6等。等。3)直接位地址表示,如)直接位地址表示,如A中的第中的第2位的位地址位的位地址E2H4)位名称表示,专用寄存器中有一些位是有符号名)位名称表示,专用寄存器中有一些位是有符号名的,如的,如PSW中的中的D0位其符号名为位其符号名为P,PSW中的中的D7位其位其符号名为符号名为C,它们都
20、可以在指令中用位名称表示。,它们都可以在指令中用位名称表示。5)专用寄存器符号名)专用寄存器符号名+位序号,如位序号,如PSW.0、PSW.1、P1.1。例如:。例如:SETB 10H;将将10H位即位即22H单元的单元的D0位位置置1若若22H单元中存放着数据单元中存放着数据40H,22H单元的单元的D0位的位地位的位地址为址为10H,执行上述指令后(,执行上述指令后(22H)=41H。又如:又如:MOV 32H,C ;32H进位位进位位C若若26H单元中存放着数据单元中存放着数据12H,26H单元的单元的D2位的位地位的位地址为址为32H,当,当CY=1时,执行上述指令后(时,执行上述指令
21、后(26H)=16H。必须指出,上述讨论的各种寻址方式都是针对指令中某必须指出,上述讨论的各种寻址方式都是针对指令中某一个操作数而言的,若一个指令中有两个或三个操作一个操作数而言的,若一个指令中有两个或三个操作数,就有可能存在两种或三种操作方式。数,就有可能存在两种或三种操作方式。 伪指令伪指令1)ORG:汇编起始地址:汇编起始地址用来说明以下程序段在存储器中存放的起始地用来说明以下程序段在存储器中存放的起始地址。例如程序址。例如程序ORG1000H START: MOV A,#20H MOVB,#30H 2)EQU:赋值指令:赋值指令给变量标号赋予一个确定的数值。给变量标号赋予一个确定的数值
22、。指令格式指令格式:字符名字符名 EQU 赋值项赋值项赋值项可以是常数、地址、表达式,其值可以赋值项可以是常数、地址、表达式,其值可以是是8位或位或16位二进制数。用位二进制数。用EQU赋值后的字符赋值后的字符名可以作为地址或立即数使用。名可以作为地址或立即数使用。注意:使用注意:使用EQU指令时,必须先给字符名指令时,必须先给字符名 赋值赋值然后使用,赋值后的字符名不能在改变然后使用,赋值后的字符名不能在改变例如:例如:A10EQU 10HDELAYEQU 3000HMOV A,A10ACALL DELAY返回本节 3)DB:定义数据字节定义数据字节 本指令用于从指定的地址单元开始,在程序存
23、储器中定义本指令用于从指定的地址单元开始,在程序存储器中定义若干个内存单元的内容。若干个内存单元的内容。指令格式指令格式:(:(标号:)标号:) DB 项或项表项或项表标号可选项;标号可选项;项或项表是指一个字节或用逗号分开的字符串,或用单项或项表是指一个字节或用逗号分开的字符串,或用单(双)引号括起来(双)引号括起来ASCII码字符串;码字符串;DB指令经编译后把指指令经编译后把指令中项或项表的内容依次存入标号开始的单元中。令中项或项表的内容依次存入标号开始的单元中。 例如:例如:ORG 2000HFIRST:DB77H,29H,90H,00HSECOND:DB 90H,1,“2”,A,B4
24、)DW:定义数据字:定义数据字本指令用于从指定的地址单元开始,在程序存储器中定本指令用于从指定的地址单元开始,在程序存储器中定义若干个义若干个16位数据。位数据。指令格式指令格式:(:(标号:)标号:) DW 项或项表项或项表标号可选项;标号可选项;项或项表是指一个字或用逗号分开的字串,项或项表是指一个字或用逗号分开的字串,汇编时,每个字的高汇编时,每个字的高8位安排在低地址单元,低位安排在低地址单元,低 8位安排在高地址单元。位安排在高地址单元。ORG 2000HHATB:DW1234H,77H,29HSECOND:DW 90H,0011H5)DS:定义存储区:定义存储区从指定的地址单元开始
25、,保留一定数量存储单元。从指定的地址单元开始,保留一定数量存储单元。指令格式指令格式:(:(标号:)标号:) DS 表达式表达式表达式:表达式的值是预留存储单元的数目。表达式:表达式的值是预留存储单元的数目。ORG 2000HDS0AH注意:注意:DB、DW、DS只能用于程序存储器,不能用来只能用于程序存储器,不能用来对数据存储器内容进行赋值或初始化。对数据存储器内容进行赋值或初始化。 6)BIT:位定义:位定义将位地址赋予字符名将位地址赋予字符名指令格式指令格式:字符名字符名 BIT 位地址位地址例如:例如:AA BIT P1.0把把P1.0的位地址赋给了字符名的位地址赋给了字符名AA,在其
26、后的指令在其后的指令中就可以通过中就可以通过AA来访问位地址来访问位地址P1.0单元。单元。 7)END:汇编结束:汇编结束汇编程序结束标志,在汇编程序结束标志,在END指令之后的语句,指令之后的语句,汇编程序将不予处理。一般放在整个程序后,汇编程序将不予处理。一般放在整个程序后,但有时也可用来调试程序用。但有时也可用来调试程序用。ORG0000HTESTEQU 1000H;#define TEST 1000H MOVDPTR,#TEST MOVR7,#04H MOVA,#01HLOOP: MOVC A,A+DPTRINCADJNZR7,LOOPSJMP$LCALLTESTORG1000H D
27、W 01H,0102H,0406H,0910HEND 3 、 分类指令分类指令(1) 数据传送类指令数据传送类指令(2 ) 算术运算类指令算术运算类指令(3 ) 逻辑运算与循环类指令逻辑运算与循环类指令(4 ) 程序转移类指令程序转移类指令(5) 调用子程序及返回指令调用子程序及返回指令(6 ) 位操作指令位操作指令(7 ) 空操作指令空操作指令返回本章首页1 ) 数据传送类指令数据传送类指令 数据传送类指令共数据传送类指令共28条,是将源操作数送到目条,是将源操作数送到目的操作数。指令执行后,源操作数不变,目的的操作数。指令执行后,源操作数不变,目的操作数被源操作数取代。数据传送类指令用到操
28、作数被源操作数取代。数据传送类指令用到的助记符有的助记符有MOV、MOVX、MOVC、XCH、XCHD、SWAP、PUSH、POP8种。种。 源操作数可采用寄存器、寄存器间接、直接、源操作数可采用寄存器、寄存器间接、直接、立即、变址立即、变址5种寻址方式寻址,目的操作数可种寻址方式寻址,目的操作数可以采用寄存器、寄存器间接、直接寻址以采用寄存器、寄存器间接、直接寻址3种寻种寻址方式。址方式。MCS-51单片机片内数据传送途径如单片机片内数据传送途径如图图3-6所示。所示。直接地址直接地址direct累加器累加器A直接地址直接地址direct间接地址间接地址Ri寄存器寄存器Rn立即数立即数#da
29、ta寄存器寄存器DPTR图图3-6 MCS-51单片机片内数据传送图单片机片内数据传送图(1)以)以A为目的操作数为目的操作数MOV A,Rn;A RnMOV A,direct ;A(direct)MOV A,Ri;A(Ri)MOV A,#data ;A #data(2)以)以Rn为目的操作数为目的操作数MOV Rn,A;Rn AMOV Rn,direct;Rn (direct)MOV Rn,#data;Rn #data(3)以直接地址为目的操作数)以直接地址为目的操作数MOV direct ,A;(;(Ri) AMOV direct ,direct;(;(Ri) (direct)MOV di
30、rect ,#data;(;(Ri) #data(4)以间接地址为目的操作数)以间接地址为目的操作数MOV Ri,A;(;(Ri) AMOV Ri,direct;(;(Ri) (direct)MOV Ri,#data;(;(Ri) #data例如:例如:设(设(30H)=6FH,R1=40H,执行,执行MOV R1,30H后,后,30H单元中数据取出送入单元中数据取出送入R1间接寻址的间接寻址的40H单元,(单元,(40H)=6FH。编程编程:ORG0000HMOV 30H,#6FHMOV R1,#40HMOV R1,30HSJMP$END(5)以)以DPTR为目的操作数为目的操作数MOV D
31、PTR,#data16 ;DPTR #data16例如执行例如执行 MOV DPTR,#2000H 后,后,(DPTR)= 2000H。(6)访问外部数据)访问外部数据RAM MOVX A,DPTR;A (DPTR)MOVX DPTR,A;(;(DPTR) AMOVX A,Ri ;A (P2Ri)MOVX Ri,A ;(;(P2Ri) A(7)读程序存储器)读程序存储器MOVC A,A+DPTR;A (A+DPTR)MOVC A,A+PC;A (A+PC)例如已知例如已知A=30H,DPTR=3000H, 程序存储器单元(程序存储器单元(3030H)=50H,执行,执行MOVC A, A+DP
32、TR后,后,A=50H。(8)数据交换)数据交换l l 字节交换字节交换XCH A,Rn;A RnXCH A ,direct ;A(direct)XCH A,Ri;A(Ri)l l 半字节交换半字节交换XCHD A,Ri ;A03(Ri)03SWAP A;A03A47(9)堆栈操作)堆栈操作 所谓堆栈是在片内所谓堆栈是在片内RAM中按中按“先进后出,后先进后出,后进先出进先出”原则设置的专用存储区。数据的进原则设置的专用存储区。数据的进栈出栈由指针栈出栈由指针SP统一管理。堆栈的操作有如统一管理。堆栈的操作有如下两条专用指令:下两条专用指令: PUSH direct;SP(SP+1),(),(
33、SP)(direct) POP direct;(;(direct)(SP),),SP SP-1 PUSH是进栈(或称为压入操作)指令。指是进栈(或称为压入操作)指令。指令执行过程如图令执行过程如图3-7所示。所示。【例【例3.1】 将片内将片内RAM 35H单元与单元与45H单元中的单元中的内容互换。内容互换。方 法方 法 1 ( 直 接 地 址 传 送( 直 接 地 址 传 送法):法): MOV31H,35H MOV30H,45H MOV45H,31H SJMP$方法方法2(间接地址传送法):(间接地址传送法): MOVR0,#45H MOVR1,#35H MOVA,R0 MOVB,R1
34、MOVR1,A MOVR0,B SJMP$方 法方 法 3 ( 字 节 交 换 传 送( 字 节 交 换 传 送法):法): MOV A,35H XCH A,45H MOV 35H,A SJMP $方法方法4(堆栈传送法):(堆栈传送法): PUSH35H PUSH45H POP35H POP45H SJMP$返回本节 算术运算类指令算术运算类指令(1)加法指令)加法指令ADD A,Rn;A A + RnADD A,direct;A A +(direct)ADD A,Ri;A A +(Ri)ADD A,#data;A A + #data加法指令影响进位加法指令影响进位C例如,设例如,设A=9F
35、H,R2=6EH,执行执行ADD ,R2 后后A=?ORG0000HMOVA,#9FHMOVR2,#6EHADDA,R2SJMP$END编程编程(2)带进位加指令)带进位加指令ADDC A,Rn;A A + Rn + CADDC A,direct;A A +(direct)+ CADDC A,Ri ;A A +(Ri)+ CADDC A,#data ;A A + #data + CC为来自为来自PSW状态寄存器中的进位位状态寄存器中的进位位C。例如,设例如,设A=20H,R0=21H,C=1,执行指令,执行指令 ADDC,R0后,后,A=42H。 实验一、实验二的输入验证实验一、实验二的输入验
36、证试编程将十六进制数:试编程将十六进制数:1234h+5678h送往内部送往内部RAM的的40H42H单元中,单元中,42H放高位。放高位。(3)带借位减指令)带借位减指令SUBB A,Rn;A A - Rn - CSUBB A,direct ;A A -(direct)- CSUBB A,Ri;A A -(Ri)- CSUBB A,#data ;A A - #data C例如,设例如,设A=39H,R0=20H,(,(20H)=32H,C=1,执行指令,执行指令 SUBB,R0后,后,A=06H。(4)乘法指令)乘法指令MUL AB ;BA AB A和和B中各存放一个中各存放一个8位无符号数
37、,指令执行位无符号数,指令执行后,后,16位乘积的高位乘积的高8位在位在B中,低中,低8位存位存A中。中。例如,例如,A=30H,B=60H,执行,执行 MUL AB 后,后,A=00H,B=12H。( 5)除法指令)除法指令 DIV AB ;AB商在商在A中,余数在中,余数在B中中 A和和B中各存放一个中各存放一个8位无符号数,位无符号数,A放被除放被除数,数,B放除数。指令执行后,放除数。指令执行后,A中存放商,中存放商,B中存入余数。若中存入余数。若B=00H,则指令执行后,则指令执行后OV=1,A与与B不变。不变。 例如,例如,A=30H,B=07H,执行,执行 DIV AB 后,后,
38、A=06H,B=06H。6加加1指令指令INC A;A (A) + 1INC Rn;Rn (Rn) + 1INC direct ;(;(direct) (direct)+ 1INC Ri;(;(Ri)(Ri)+ 1INC DPTR;DPTR DPTR + 1例如,(例如,(30H)=22H,执行,执行 INC 30H 后,后,(30H)=23H。(7)减)减1指令指令DEC A;A A - 1DEC Rn;Rn Rn - 1DEC direct;direct (direct)- 1DEC Ri ;(;(Ri)(Ri)- 1例如,例如,R0=30H,(,(30H)=22H,执行,执行 DEC R
39、0 后,(后,(30H)=21H。【例题【例题3.2】 将片内将片内RAM 35H单元与片外单元与片外0045H单元中的内容互换单元中的内容互换查指令表,写出将四种方法进行手工汇编。查指令表,写出将四种方法进行手工汇编。(8)十进制调整指令)十进制调整指令DA A ;把;把A中按二进制相加的结果调整成中按二进制相加的结果调整成按按BCD码相加的结果码相加的结果 例如,例如,A=99BCD,B=88BCD,C=0, 执行下列语句执行下列语句 ADDA,B DAAA=87 BCD,C=1。99+88 1+ 6 2 7+ 6 1 8 73) 逻辑运算指令逻辑运算指令(1)“与与”操作指令操作指令 (
40、2)“或或”操作指令操作指令(3)“异或异或”操作指令操作指令(4)求反与清除指令)求反与清除指令返回本节逻辑操作指令逻辑操作指令 1)“逻辑与逻辑与”操作指令操作指令 ANL A,Rn ;AARnANL A,direct ; AA(direct)ANL A,Ri ;AA(Ri)ANL A,#data ;AA#dataANL direct,A ;(direct)A(direct)ANL direct,#data ; (direct)(direct) #data使用逻辑与操作可以使字节数据的某几位清零使用逻辑与操作可以使字节数据的某几位清零(屏蔽)而其它几位不变。如将累加器(屏蔽)而其它几位不变
41、。如将累加器A的高的高5位不变、低位不变、低3位清零,位清零, 可以使用:可以使用:ANL A,#0F8H2)“逻辑或逻辑或”操作指令操作指令ORL A,Rn ;AARnORL A,direct ; AA (direct)ORL A,Ri ;AA(Ri)ORL A,#data ;AA#dataORL direct,A ;(direct)A(direct)ORL direct,#data ; (direct)(direct) #data使用逻辑或操作可以将字节数据合并使用逻辑或操作可以将字节数据合并如将如将40H中的中的BCD码码8与与41H中中BCD码码5合合并为并为58HMOV A,41HS
42、WAP AORL A,40H3)“逻辑异或逻辑异或”操作指令操作指令XRL A,Rn ;AA RnXRL A,direct ; AA (direct)XRL A,Ri ;AA (Ri)XRL A,#data ;AA #dataXRL direct,A ;(direct)A (direct)XRL direct,#data ; (direct)(direct) #data 当目标操作数与源操作数按位异或运算当目标操作数与源操作数按位异或运算时,两位状态相同,结果为时,两位状态相同,结果为“0”;两位状态不;两位状态不同,结果为同,结果为“1”。通常逻辑异或用来比较两数。通常逻辑异或用来比较两数是
43、是否相同否相同 XRL A,R1 逻辑运算适用于字节中的按位运算。运算逻辑运算适用于字节中的按位运算。运算结果在累加器结果在累加器A或直接地址单元中。如当要求或直接地址单元中。如当要求对字节数据的某几位清零、要传送字节数据的对字节数据的某几位清零、要传送字节数据的某几位而其它几位不变时,我们无法使用传送某几位而其它几位不变时,我们无法使用传送指令,这时只能使用逻辑指令实现对字节数据指令,这时只能使用逻辑指令实现对字节数据进行位操作。进行位操作。【例题【例题3.3】 已知已知A=ABH,P1=FEH,试编程把累加器,试编程把累加器A中的高四位送到中的高四位送到P1口的低四位,要求口的低四位,要求
44、A的值保持不的值保持不变。变。编程分析:要解决的问题是经过程序设计,使编程分析:要解决的问题是经过程序设计,使P1口的口的内容变为内容变为FA,A的内容不变。程序设计到仅将累加器的内容不变。程序设计到仅将累加器中的几位传送,不是整个字节传送,所以不能用传送指中的几位传送,不是整个字节传送,所以不能用传送指令。可以用逻辑操作完成。因程序执行后令。可以用逻辑操作完成。因程序执行后A的内容不的内容不变,所以编程时将变,所以编程时将A送到暂存区保护(可选用寄存器、送到暂存区保护(可选用寄存器、直接地址单元、直接地址单元、B等),现选等),现选B作暂存区。作暂存区。 ORG 0000H MOVB,A;B
45、AANLA,#0F0;屏蔽屏蔽A的低四位的低四位SWAPA; A03A47ANLP1,#0F0;屏蔽屏蔽P1口的低四位口的低四位ORLP1,A ; P1P1 AMOVA,B;ABSJMP$;原地跳转原地跳转4)累加器累加器A求反与清零指令求反与清零指令CLR A指令功能:将累加器指令功能:将累加器A中的内容清零。指令执行后,累中的内容清零。指令执行后,累加器加器A中的内容为零。此指令只影响中的内容为零。此指令只影响PSW中的奇偶效验中的奇偶效验位位P,不影响进位标志,不影响进位标志CY、半进位标志、半进位标志AC、溢出标、溢出标OVCPL A指令功能:将累加器指令功能:将累加器A中的内容按位取
46、反。指令执行中的内容按位取反。指令执行后,累加器后,累加器A中的内容与原状态相反。此指令只影响中的内容与原状态相反。此指令只影响PSW中的奇偶效验位中的奇偶效验位P,不影响进位标志,不影响进位标志CY、半进位、半进位标志标志AC、溢出标志、溢出标志OV循环指令循环指令MCS-51指令系统中有指令系统中有4条对累加器条对累加器A中的内容进中的内容进行移位的指令,可以实现对行移位的指令,可以实现对A中的内容不带进位中的内容不带进位位循环左、右移位和带进位位循环左、右移位功位循环左、右移位和带进位位循环左、右移位功能。不带进位位循环左移,见图能。不带进位位循环左移,见图3-9 a)所示)所示不带进位
47、位循环右移,见图不带进位位循环右移,见图3-9 b)所示)所示RRA指令功能:将累加器指令功能:将累加器A中的内容按位右移。指中的内容按位右移。指令执行后,若累加器令执行后,若累加器A中的内容为偶数,则中的内容为偶数,则A中中的数据减小一半。的数据减小一半。 带进位位循环左移,见图带进位位循环左移,见图3-10 a)所示)所示RLCA指令功能:将累加器指令功能:将累加器A中的中的D7位移入进位位位移入进位位CY,D6移入移入D7,CY移入累加器移入累加器A的的D0位。位。本章总结本章总结本章学习主要内容可归纳以下几点:本章学习主要内容可归纳以下几点:1MCS-51单片机汇编语言,包含两类不同性
48、质的指单片机汇编语言,包含两类不同性质的指令。令。1)基本指令:即指令系统中的指令。它们都是机器能)基本指令:即指令系统中的指令。它们都是机器能够执行的指够执行的指令,每一条指令都有对应的机器码。令,每一条指令都有对应的机器码。2)伪指令:汇编时用于控制汇编的指令。它们都是机)伪指令:汇编时用于控制汇编的指令。它们都是机器不执行的器不执行的指令,无机器码。指令,无机器码。2MCS-51指令系统指令系统1)MCS-51基本指令基本指令指令是控制计算机执行各种操作的符号序列。指令是控制计算机执行各种操作的符号序列。MCS-51指令系统专用于指令系统专用于MCS-51系列单片机,共有系列单片机,共有111条指令,条指令,包含了五种类型的指令:数据传送、算术运算、逻辑操包含了五种类型的指令:数据传送、算术运算、逻辑操作、程序转移和位操作。一般说,指令由操作码和操作作、程序转移和位操作。一般说,指令由操作码和操作数组成,操作码规定数组成,操作码规定CPU执行什么操作,操作数是操作执行什么操作,操作数是操作码操作的对象。码操作的对象。 2)MCS-51单片机的寻址方式单片机的寻址方式访问操作数的方式叫寻址方式。访问操作数的方式叫寻址方式。MCS-51指令系统规定
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年黄石市铁山区事业单位人员招聘笔试备考试题及答案详解
- 2026年伊春市汤旺河区事业单位人员招聘笔试备考试题及答案详解
- 2026中国南方航空股份有限公司黑龙江分公司第二批招聘考试备考题库及答案详解
- 2025年桂林市七星区公务员招聘考试试题及答案详解
- 2026年阜新市清河门区事业单位人员招聘笔试参考题库及答案详解
- 2026年济南市槐荫区党校系统人员招聘笔试备考试题及答案详解
- 2026年攀枝花市仁和区公务员招聘笔试备考题库及答案详解
- 2026年成都市锦江区公务员招聘考试参考题库及答案详解
- 2026年新疆维吾尔自治区吐鲁番市事业单位人员招聘笔试备考题库及答案详解
- 2026年德州市德城区公务员招聘考试参考题库及答案详解
- 2025年房地产经纪人考试试题及答案
- 内镜标本规范处理
- 2025年广东省广州海珠区教育系统招聘财务工作人员和校医26人历年高频重点提升(共500题)附带答案详解
- 电工电子技术-002-国开机考复习资料
- 儿科护理学常见急症
- 北京市西城区2023-2024学年六年级上学期期末英语试题
- 公安机关出租屋法律知识讲座
- 《中国碳中和通用指引》
- 原辅料进货记录表模板
- JJF 1001-2011通用计量术语及定义
- GB/T 23827-2021道路交通标志板及支撑件
评论
0/150
提交评论