第三讲 第3章MCS-51单片机指系统.ppt

上传人:s****8 文档编号:82765578 上传时间:2023-03-26 格式:PPT 页数:91 大小:238KB
返回 下载 相关 举报
第三讲 第3章MCS-51单片机指系统.ppt_第1页
第1页 / 共91页
第三讲 第3章MCS-51单片机指系统.ppt_第2页
第2页 / 共91页
点击查看更多>>
资源描述

《第三讲 第3章MCS-51单片机指系统.ppt》由会员分享,可在线阅读,更多相关《第三讲 第3章MCS-51单片机指系统.ppt(91页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

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,#06ADDA,#24必须用手工或汇编器翻译成机器程序;必须用手工或汇编器翻译成机器程序;

3、汇编语言精确的表示了汇编语言精确的表示了CPU操作及实现细节,但会掩操作及实现细节,但会掩盖了程序的原始意图;盖了程序的原始意图;汇编语言的与汇编语言的与CPU有关特点,带来的有关特点,带来的CPU的不可移植性。的不可移植性。高级语言高级语言C:高级语言是接近于人的思维方式:高级语言是接近于人的思维方式的自然语言,对问题和其求解的表述比汇编语的自然语言,对问题和其求解的表述比汇编语言更容易理解,如言更容易理解,如X=6+24,但同样不能接被机,但同样不能接被机器识别,也要汇编成机器语言,才能被机器执器识别,也要汇编成机器语言,才能被机器执行。高级语言掩盖了行。高级语言掩盖了CPU的实现细节,但

4、高级的实现细节,但高级语言可读姓高、移植性强。语言可读姓高、移植性强。文本编辑器文本编辑器PC源文件源文件建造过程建造过程列表与图表文件列表与图表文件目标代码目标代码调试程序调试程序 建造时错误建造时错误运行时错误运行时错误目的机目的机内内存存代码运行代码运行软件构筑的一般过程软件构筑的一般过程文本编辑器:用以创建所有源文件程序;文本编辑器:用以创建所有源文件程序;源文件:程序员所编写的原始程序代码;源文件:程序员所编写的原始程序代码;用汇编语言编写,汇编语言代码就是源;用用汇编语言编写,汇编语言代码就是源;用C语言编写,语言编写,C代码就是源;有二进制编写,机代码就是源;有二进制编写,机器代

5、码就是源。器代码就是源。目标代码:软件建造过程过程所得到的结果代目标代码:软件建造过程过程所得到的结果代码,对为控制器进行编程时,目标代码就是机码,对为控制器进行编程时,目标代码就是机器语言。器语言。介绍三种文本编辑器介绍三种文本编辑器UltraEdit10.10cUltraEdit:一个强大的替代:一个强大的替代Windows记事本记事本(Notepad)的编辑器,可以用它直接编的编辑器,可以用它直接编辑十六进制文件辑十六进制文件(HEX);KeilC51:KeilC51是美国是美国KeilSoftware公司出品的公司出品的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)指定操作结果存放的地址。)指定操作结果存放的地址。返回3)指令描述符号介绍指令描述符号介绍R

10、n当当前前选选中中的的寄寄存存器器区区中中的的8个个工工作作寄寄存存器器R0R7(n=07)。)。Ri当当前前选选中中的的寄寄存存器器区区中中的的2个个工工作作寄寄存存器器R0、R1(i=0,1)。)。direct8位的内部数据存储器单元中的地址。位的内部数据存储器单元中的地址。#data包含在指令中的包含在指令中的8位常数。位常数。#data16包含在指令中的包含在指令中的16位常数。位常数。addr1616位目的地址。位目的地址。addr1111位目的地址。位目的地址。rel8位带符号的偏移字节,简称偏移量。位带符号的偏移字节,简称偏移量。DPTR数据指针,可用作数据指针,可用作16位地址

11、寄存器。位地址寄存器。bit内部内部RAM或专用寄存器中的直接寻址位。或专用寄存器中的直接寻址位。A累加器。累加器。B专用寄存器,用于乘法和除法指令中。专用寄存器,用于乘法和除法指令中。C进位标志或进位位,或布尔处理机中的累加器。进位标志或进位位,或布尔处理机中的累加器。间间址址寄寄存存器器或或基基址址寄寄存存器器的的前前缀缀,如如Ri,DPTR。/位位操操作作数数的的前前缀缀,表表示示对对该该位位操操作作数数取取反,如反,如/bit。片内片内RAM的直接地址或寄存器。的直接地址或寄存器。()由由寻址的单元中的内容。寻址的单元中的内容。箭箭头头左左边边的的内内容容被被箭箭头头右右边边的的内内容

12、容所所代替。代替。返回2、寻址方式寻址方式寻找操作数的过程称寻址寻找操作数的过程称寻址(1)立即寻址立即寻址(2)直接寻址直接寻址(3)寄存器寻址寄存器寻址(4)寄存器间接寻址寄存器间接寻址(5)变址寻址变址寻址(6)相对寻址相对寻址(7)位寻址位寻址返回本章首页(1)立即寻址立即寻址指指令令中中直直接接给给出出操操作作数数的的寻寻址址方方式式。立立即即操操作作数数用用前前面加有面加有#号的号的8位或位或16位数来表示。位数来表示。例如:例如:MOV A,#60H;A#60HMOV DPTR,#3400H;DPTR#3400HMOV 30H,#40H;30H单元单元#40H上上述述三三条条指指

13、令令执执行行完完后后,累累加加器器A中中数数据据为为立立即即数数据据60H,DPTR寄寄存存器器中中数数据据为为3400H,30H单单元元中中数数据为立即数据为立即数40H。返回本节(2)直接寻址直接寻址指指令令中中直直接接给给出出操操作作数数地地址址的的寻寻址址方方式式,能能进进行行直直接接寻寻址址的的存存储储空空间间有有SFR寄寄存存器器和和内内部数据部数据RAM。例如:例如:MOV PSW,#20H;PSW#20HPSW为直接寻址寄存器的符号地址。为直接寻址寄存器的符号地址。MOVA,30H;A30H内内部部RAM单单元中的内容元中的内容30H为直接给出的内部为直接给出的内部RAM的地址

14、。的地址。返回本节(3)寄存器寻址)寄存器寻址以以通通用用寄寄存存器器的的内内容容为为操操作作数数的的寻寻址址方方式式。通用寄存器指通用寄存器指A、B、DPTR以及以及R0R7。例如:例如:CLRA;A0INCDPTR;DPTRDPTR+1ADDR5,#20H;R5#20H+R5返回本节(4)寄存器间接寻址寄存器间接寻址以以寄寄存存器器中中内内容容为为地地址址,以以该该地地址址中中内内容容为为操操作作数数的的寻寻址址方方式式。间间接接寻寻址址的的存存储储器器空空间间包括内部数据包括内部数据RAM和外部数据和外部数据RAM。能能用用于于寄寄存存器器间间接接寻寻址址的的寄寄存存器器有有R0,R1,

15、DPTR,SP。其其中中R0、R1必必须须是是工工作作寄寄存存器器组中的寄存器。组中的寄存器。SP仅用于堆栈操作。仅用于堆栈操作。例例如如:MOVR0,A;内内部部RAM(R0)A其指令操作过程示意图如图其指令操作过程示意图如图3-1所示。所示。又又如如:MOVXA,R1;A外外部部RAM(P2R1)其指令操作过程示意图如图其指令操作过程示意图如图3-2所示。所示。再如:再如:MOVXDPTR,A;外部外部RAM(DPTR)A其指令操作过程示意图如图其指令操作过程示意图如图3-3所示。所示。片内RAM30HR034HA30H34H图3-1 MOV R0,A间接寻址示意图片外RAM34HP245

16、HA3410H45H10HR1片外RAM2000HDPTR30HA2000H30H图3-2 MOVX A,R1间接寻址示意图 图3-3 MOVX DPTR,A间接寻址示意图返回本节(5)变址寻址变址寻址变变址址寻寻址址只只能能对对程程序序存存储储器器中中数数据据进进行行操操作作。由由于于程程序序存存储储器器是是只只读读的的,因因此此变变址址寻寻址址只只有有读读操操作作而而无无写写操操作作,在在指指令令符符号号上上采采用用MOVC的形式(如图的形式(如图3-4所示)。所示)。例如:例如:MOVCA,A+DPTR;A(A+DPTR)又如,又如,MOVCA,A+PC;A(A+PC)这条指令与上条指令

17、不同的是,基址寄存器这条指令与上条指令不同的是,基址寄存器是是PC。(6)相对寻址相对寻址以以当当前前程程序序计计数数器器PC的的内内容容为为基基础础,加加上上指指令令给给出出的的一一字字节节补补码码数数(偏偏移移量量)形形成成新新的的PC值的寻址方式。值的寻址方式。相相对对寻寻址址用用于于修修改改PC值值,主主要要用用于于实实现现程程序序的分支转移。的分支转移。例如,例如,SJMP08H返回本节(7)位寻址位寻址位寻址只能对有位地址的单元作位寻址操作。位寻址只能对有位地址的单元作位寻址操作。位位寻寻址址其其实实是是一一种种直直接接寻寻址址方方式式,不不过过其其地地址址是位地址。是位地址。例例

18、如如:SETB10H;将将10H位位置置1若若22H单单元元中中存存放放着着数数据据40H,22H单单元元的的D0位位的的位位地地址为址为10H,执行上述指令后(执行上述指令后(22H)=41H。又如:又如:MOV32H,C;32H进位位进位位CORLC,32H;CC32H返回本节位寻址的几种寻址方式位寻址的几种寻址方式1)直接使用)直接使用00H7FH范围内的某一位地址。如范围内的某一位地址。如00H位、位、26H位等。位等。2)采用单元地址)采用单元地址+位序号的表示方法。如位序号的表示方法。如20H.0H(00H位)、位)、24H.6(26H位)、位)、P0口(口(80H)的)的D6位位

19、80H.6等。等。3)直接位地址表示,如)直接位地址表示,如A中的第中的第2位的位地址位的位地址E2H4)位名称表示,专用寄存器中有一些位是有符号名)位名称表示,专用寄存器中有一些位是有符号名的,如的,如PSW中的中的D0位其符号名为位其符号名为P,PSW中的中的D7位其位其符号名为符号名为C,它们都可以在指令中用位名称表示。,它们都可以在指令中用位名称表示。5)专用寄存器符号名)专用寄存器符号名+位序号,如位序号,如PSW.0、PSW.1、P1.1。例如:。例如:SETB10H;将将10H位即位即22H单元的单元的D0位位置置1若若22H单元中存放着数据单元中存放着数据40H,22H单元的单

20、元的D0位的位地位的位地址为址为10H,执行上述指令后(,执行上述指令后(22H)=41H。又如:又如:MOV 32H,C;32H进位位进位位C若若26H单元中存放着数据单元中存放着数据12H,26H单元的单元的D2位的位地位的位地址为址为32H,当,当CY=1时,执行上述指令后(时,执行上述指令后(26H)=16H。必须指出,上述讨论的各种寻址方式都是针对指令中某必须指出,上述讨论的各种寻址方式都是针对指令中某一个操作数而言的,若一个指令中有两个或三个操作一个操作数而言的,若一个指令中有两个或三个操作数,就有可能存在两种或三种操作方式。数,就有可能存在两种或三种操作方式。伪指令伪指令1)OR

21、G:汇编起始地址汇编起始地址用来说明以下程序段在存储器中存放的起始地用来说明以下程序段在存储器中存放的起始地址。例如程序址。例如程序ORG1000H START:MOVA,#20HMOVB,#30H 2)EQU:赋值指令赋值指令给变量标号赋予一个确定的数值。给变量标号赋予一个确定的数值。指令格式指令格式:字符名字符名EQU赋值项赋值项赋值项可以是常数、地址、表达式,其值可以赋值项可以是常数、地址、表达式,其值可以是是8位或位或16位二进制数。用位二进制数。用EQU赋值后的字符赋值后的字符名可以作为地址或立即数使用。名可以作为地址或立即数使用。注意:使用注意:使用EQU指令时,必须先给字符名指令

22、时,必须先给字符名赋值赋值然后使用,赋值后的字符名不能在改变然后使用,赋值后的字符名不能在改变例如:例如:A10EQU 10HDELAYEQU 3000HMOVA,A10ACALLDELAY返回本节3)DB:定义数据字节定义数据字节本指令用于从指定的地址单元开始,在程序存储器中定义本指令用于从指定的地址单元开始,在程序存储器中定义若干个内存单元的内容。若干个内存单元的内容。指令格式指令格式:(:(标号:)标号:)DB项或项表项或项表标号可选项;标号可选项;项或项表是指一个字节或用逗号分开的字符串,或用单项或项表是指一个字节或用逗号分开的字符串,或用单(双)引号括起来(双)引号括起来ASCII码

23、字符串;码字符串;DB指令经编译后把指指令经编译后把指令中项或项表的内容依次存入标号开始的单令中项或项表的内容依次存入标号开始的单元元中。中。例如:例如:ORG 2000HFIRST:DB77H,29H,90H,00HSECOND:DB90H,1,“2”,A,B4)DW:定义数据字定义数据字本指令用于从指定的地址单元开始,在程序存储器中定本指令用于从指定的地址单元开始,在程序存储器中定义若干个义若干个16位数据。位数据。指令格式指令格式:(:(标号:)标号:)DW项或项表项或项表标号可选项;标号可选项;项或项表是指一个字或用逗号分开的字串,项或项表是指一个字或用逗号分开的字串,汇编时,每个字的

24、高汇编时,每个字的高8位安排在低地址单元,低位安排在低地址单元,低8位安排在高地址单元。位安排在高地址单元。ORG 2000HHATB:DW1234H,77H,29HSECOND:DW90H,0011H5)DS:定义存储区定义存储区从指定的地址单元开始,保留一定数量存储单元。从指定的地址单元开始,保留一定数量存储单元。指令格式指令格式:(:(标号:)标号:)DS表达式表达式表达式:表达式的值是预留存储单元的数目。表达式:表达式的值是预留存储单元的数目。ORG 2000HDS0AH注意:注意:DB、DW、DS只能用于程序存储器,不能用来只能用于程序存储器,不能用来对数据存储器内容进行赋值或初始化

25、。对数据存储器内容进行赋值或初始化。6)BIT:位定义位定义将位地址赋予字符名将位地址赋予字符名指令格式指令格式:字符名字符名BIT位地址位地址例如:例如:AABITP1.0把把P1.0的位地址赋给了字符名的位地址赋给了字符名AA,在其后的指令在其后的指令中就可以通过中就可以通过AA来访问位地址来访问位地址P1.0单元。单元。7)END:汇编结束汇编结束汇编程序结束标志,在汇编程序结束标志,在END指令之后的语句,指令之后的语句,汇编程序将不予处理。一般放在整个程序后,汇编程序将不予处理。一般放在整个程序后,但有时也可用来调试程序用。但有时也可用来调试程序用。ORG0000HTESTEQU10

26、00H;#defineTEST 1000HMOVDPTR,#TESTMOVR7,#04HMOVA,#01HLOOP:MOVC A,A+DPTRINCADJNZR7,LOOPSJMP$LCALLTESTORG1000HDW01H,0102H,0406H,0910HEND3、分类指令分类指令(1)数据传送类指令数据传送类指令(2)算术运算类指令算术运算类指令(3)逻辑运算与循环类指令逻辑运算与循环类指令(4)程序转移类指令程序转移类指令(5)调用子程序及返回指令调用子程序及返回指令(6)位操作指令位操作指令(7)空操作指令空操作指令返回本章首页1)数据传送类指令数据传送类指令数数据据传传送送类类指

27、指令令共共28条条,是是将将源源操操作作数数送送到到目目的的操操作作数数。指指令令执执行行后后,源源操操作作数数不不变变,目目的的操操作作数数被被源源操操作作数数取取代代。数数据据传传送送类类指指令令用用到到的的助助记记符符有有MOV、MOVX、MOVC、XCH、XCHD、SWAP、PUSH、POP8种。种。源源操操作作数数可可采采用用寄寄存存器器、寄寄存存器器间间接接、直直接接、立立即即、变变址址5种种寻寻址址方方式式寻寻址址,目目的的操操作作数数可可以以采采用用寄寄存存器器、寄寄存存器器间间接接、直直接接寻寻址址3种种寻寻址址方方式式。MCS-51单单片片机机片片内内数数据据传传送送途途径

28、径如如图图3-6所示。所示。直接地址直接地址direct累加器累加器A直接地址直接地址direct间接地址间接地址Ri寄存器寄存器Rn立即数立即数#data寄存器寄存器DPTR图图3-6MCS-51单片机片内数据传送图单片机片内数据传送图(1)以)以A为目的操作数为目的操作数MOVA,Rn;ARnMOVA,direct;A(direct)MOVA,Ri;A(Ri)MOVA,#data;A#data(2)以)以Rn为目的操作数为目的操作数MOVRn,A;RnAMOVRn,direct;Rn(direct)MOVRn,#data;Rn#data(3)以直接地址为目的操作数)以直接地址为目的操作数M

29、OVdirect,A;(;(Ri)AMOVdirect,direct;(;(Ri)(direct)MOVdirect,#data;(;(Ri)#data(4)以间接地址为目的操作数)以间接地址为目的操作数MOVRi,A;(;(Ri)AMOVRi,direct;(;(Ri)(direct)MOVRi,#data;(;(Ri)#data例如:例如:设(设(30H)=6FH,R1=40H,执行执行MOVR1,30H后,后,30H单元中数据取出送入单元中数据取出送入R1间接寻址的间接寻址的40H单元,(单元,(40H)=6FH。编程编程:ORG0000HMOV30H,#6FHMOVR1,#40HMOV

30、R1,30HSJMP$END(5)以)以DPTR为目的操作数为目的操作数MOVDPTR,#data16;DPTR#data16例如执行例如执行MOVDPTR,#2000H后,后,(DPTR)=2000H。(6)访问外部数据)访问外部数据RAMMOVXA,DPTR;A(DPTR)MOVXDPTR,A;(;(DPTR)AMOVXA,Ri;A(P2Ri)MOVXRi,A;(;(P2Ri)A(7)读程序存储器)读程序存储器MOVCA,A+DPTR;A(A+DPTR)MOVCA,A+PC;A(A+PC)例如已知例如已知A=30H,DPTR=3000H,程程序序存存储储器器单单元元(3030H)=50H,

31、执执行行MOVCA,A+DPTR后,后,A=50H。(8)数据交换)数据交换l l字节交换字节交换XCHA,Rn;ARnXCHA,direct;A(direct)XCHA,Ri;A(Ri)l l半字节交换半字节交换XCHDA,Ri;A03(Ri)03SWAPA;A03A47(9)堆栈操作)堆栈操作所所谓谓堆堆栈栈是是在在片片内内RAM中中按按“先先进进后后出出,后后进进先先出出”原原则则设设置置的的专专用用存存储储区区。数数据据的的进进栈栈出出栈栈由由指指针针SP统统一一管管理理。堆堆栈栈的的操操作作有有如如下两条专用指令:下两条专用指令:PUSHdirect;SP(SP+1),(),(SP)

32、(direct)POP direct;(;(direct)(SP),),SPSP-1PUSH是进栈(或称为压入操作)指令。指是进栈(或称为压入操作)指令。指令执行过程如图令执行过程如图3-7所示。所示。【例例3.1】将片内将片内RAM35H单元与单元与45H单元中的单元中的内容互换。内容互换。方法方法1(直接地址传送法):(直接地址传送法):MOV31H,35HMOV35H,45HMOV45H,31HSJMP$方法方法2(间接地址传送法):(间接地址传送法):MOVR0,#45HMOVR1,#35HMOVA,R0MOVB,R1MOVR1,AMOVR0,BSJMP$方法方法3(字节交换传送法):

33、(字节交换传送法):MOVA,35HXCHA,45HMOV35H,ASJMP$方法方法4(堆栈传送法):(堆栈传送法):PUSH35HPUSH45HPOP35HPOP45HSJMP$返回本节算术运算类指令算术运算类指令(1)加法指令)加法指令ADDA,Rn;AA+RnADDA,direct;AA+(direct)ADDA,Ri;AA+(Ri)ADDA,#data;AA+#data加法指令影响进位加法指令影响进位C例如,设例如,设A=9FH,R2=6EH,执行执行ADD,R2后后A=?ORG0000HMOVA,#9FHMOVR2,#6EHADDA,R2SJMP$END编程编程(2)带进位加指令)

34、带进位加指令ADDCA,Rn;AA+Rn+CADDCA,direct;AA+(direct)+CADDCA,Ri;AA+(Ri)+CADDCA,#data;AA+#data+CC为来自为来自PSW状态寄存器中的进位位状态寄存器中的进位位C。例如,设例如,设A=20H,R0=21H,C=1,执行指令执行指令ADDC,R0后,后,A=42H。实验一、实验二的输入验证实验一、实验二的输入验证试编程将十六进制数:试编程将十六进制数:1234h+5678h送往内部送往内部RAM的的40H42H单元中,单元中,42H放高位。放高位。(3)带借位减指令)带借位减指令SUBBA,Rn;AA-Rn-CSUBBA

35、,direct;AA-(direct)-CSUBBA,Ri;AA-(Ri)-CSUBBA,#data;AA-#dataC例例如如,设设A=39H,R0=20H,(20H)=32H,C=1,执行指令执行指令SUBB,R0后,后,A=06H。(4)乘法指令)乘法指令MULAB;BAABA和和B中中各各存存放放一一个个8位位无无符符号号数数,指指令令执执行行后,后,16位乘积的高位乘积的高8位在位在B中,低中,低8位存位存A中。中。例例如如,A=30H,B=60H,执执行行MULAB后后,A=00H,B=12H。(5)除法指令)除法指令DIVAB;AB商在商在A中,余数在中,余数在B中中A和和B中中

36、各各存存放放一一个个8位位无无符符号号数数,A放放被被除除数数,B放放除除数数。指指令令执执行行后后,A中中存存放放商商,B中中存存入入余余数数。若若B=00H,则则指指令令执执行行后后OV=1,A与与B不变。不变。例例如如,A=30H,B=07H,执执行行DIVAB后后,A=06H,B=06H。6加加1指令指令INCA;A(A)+1INCRn;Rn(Rn)+1INCdirect;(;(direct)(direct)+1INCRi;(;(Ri)(Ri)+1INCDPTR;DPTRDPTR+1例例如如,(30H)=22H,执执行行 INC 30H 后后,(30H)=23H。(7)减)减1指令指令

37、DECA;AA-1DECRn;RnRn-1DECdirect;direct(direct)-1DECRi;(;(Ri)(Ri)-1例例如如,R0=30H,(30H)=22H,执执行行DECR0后,(后,(30H)=21H。【例题例题3.2】将片内将片内RAM35H单元与片外单元与片外0045H单元中的内容互换单元中的内容互换查指令表,写出将四种方法进行手工汇编。查指令表,写出将四种方法进行手工汇编。(8)十进制调整指令)十进制调整指令DAA;把把A中中按按二二进进制制相相加加的的结结果果调调整整成成按按BCD码相加的结果码相加的结果例如,例如,A=99BCD,B=88BCD,C=0,执行下列语

38、句执行下列语句ADDA,BDAAA=87BCD,C=1。99+881+627+61873)逻辑运算指令逻辑运算指令(1)“与与”操作指令操作指令(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使用逻辑与操

39、作可以使字节数据的某几位清零使用逻辑与操作可以使字节数据的某几位清零(屏蔽)而其它几位不变。如将累加器(屏蔽)而其它几位不变。如将累加器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使用逻辑或操作可以将字节数据合并使用逻辑或操作可以将字节数据

40、合并如将如将40H中的中的BCD码码8与与41H中中BCD码码5合合并为并为58HMOVA,41HSWAPAORLA,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”;两位状态不;两位状态不同,结果为同

41、,结果为“1”。通常逻辑异或用来比较两数。通常逻辑异或用来比较两数是是否相同否相同XRLA,R1逻辑运算适用于字节中的按位运算。运算逻辑运算适用于字节中的按位运算。运算结果在累加器结果在累加器A或直接地址单元中。如当要求或直接地址单元中。如当要求对字节数据的某几位清零、要传送字节数据的对字节数据的某几位清零、要传送字节数据的某几位而其它几位不变时,我们无法使用传送某几位而其它几位不变时,我们无法使用传送指令,这时只能使用逻辑指令实现对字节数据指令,这时只能使用逻辑指令实现对字节数据进行位操作。进行位操作。【例题例题3.3】已知已知A=ABH,P1=FEH,试编程把累加器,试编程把累加器A中的高

42、四位送到中的高四位送到P1口的低四位,要求口的低四位,要求A的值保持不的值保持不变。变。编程分析:要解决的问题是经过程序设计,使编程分析:要解决的问题是经过程序设计,使P1口的口的内容变为内容变为FA,A的内容不变。程序设计到仅将累加器的内容不变。程序设计到仅将累加器中的几位传送,不是整个字节传送,所以不能用传送指中的几位传送,不是整个字节传送,所以不能用传送指令。可以用逻辑操作完成。因程序执行后令。可以用逻辑操作完成。因程序执行后A的内容不的内容不变,所以编程时将变,所以编程时将A送到暂存区保护(可选用寄存器、送到暂存区保护(可选用寄存器、直接地址单元、直接地址单元、B等),现选等),现选B

43、作暂存区。作暂存区。ORG0000HMOVB,A;BAANLA,#0F0;屏蔽屏蔽A的低四位的低四位SWAPA;A03A47ANLP1,#0F0;屏蔽屏蔽P1口的低四位口的低四位ORLP1,A;P1P1 AMOVA,B;ABSJMP$;原地跳转原地跳转4)累加器累加器A求反与清零指令求反与清零指令CLRA指令功能:将累加器指令功能:将累加器A中的内容清零。指令执行后,累中的内容清零。指令执行后,累加器加器A中的内容为零。此指令只影响中的内容为零。此指令只影响PSW中的奇偶效验中的奇偶效验位位P,不影响进位标志,不影响进位标志CY、半进位标志、半进位标志AC、溢出标、溢出标OVCPLA指令功能:

44、将累加器指令功能:将累加器A中的内容按位取反。指令执行中的内容按位取反。指令执行后,累加器后,累加器A中的内容与原状态相反。此指令只影响中的内容与原状态相反。此指令只影响PSW中的奇偶效验位中的奇偶效验位P,不影响进位标志,不影响进位标志CY、半进位、半进位标志标志AC、溢出标志、溢出标志OV循环指令循环指令MCS-51指令系统中有指令系统中有4条对累加器条对累加器A中的内容进中的内容进行移位的指令,可以实现对行移位的指令,可以实现对A中的内容不带进位中的内容不带进位位循环左、右移位和带进位位循环左、右移位功位循环左、右移位和带进位位循环左、右移位功能。不带进位位循环左移,见图能。不带进位位循

45、环左移,见图3-9a)所示)所示不带进位位循环右移,见图不带进位位循环右移,见图3-9b)所示)所示RRA指令功能:将累加器指令功能:将累加器A中的内容按位右移。指中的内容按位右移。指令执行后,若累加器令执行后,若累加器A中的内容为偶数,则中的内容为偶数,则A中中的数据减小一半。的数据减小一半。带进位位循环左移,见图带进位位循环左移,见图3-10a)所示)所示RLCA指令功能:将累加器指令功能:将累加器A中的中的D7位移入进位位位移入进位位CY,D6移入移入D7,CY移入累加器移入累加器A的的D0位。位。本章总结本章总结本章学习主要内容可归纳以下几点:本章学习主要内容可归纳以下几点:1MCS-

46、51单片机汇编语言,包含两类不同性质的指单片机汇编语言,包含两类不同性质的指令。令。1)基本指令:即指令系统中的指令。它们都是机器能)基本指令:即指令系统中的指令。它们都是机器能够执行的指够执行的指令,每一条指令都有对应的机器码。令,每一条指令都有对应的机器码。2)伪指令:汇编时用于控制汇编的指令。它们都是机)伪指令:汇编时用于控制汇编的指令。它们都是机器不执行的器不执行的指令,无机器码。指令,无机器码。2MCS-51指令系统指令系统1)MCS-51基本指令基本指令指令是控制计算机执行各种操作的符号序列。指令是控制计算机执行各种操作的符号序列。MCS-51指令系统专用于指令系统专用于MCS-5

47、1系列单片机,共有系列单片机,共有111条指令,条指令,包含了五种类型的指令:数据传送、算术运算、逻辑操包含了五种类型的指令:数据传送、算术运算、逻辑操作、程序转移和位操作。一般说,指令由操作码和操作作、程序转移和位操作。一般说,指令由操作码和操作数组成,操作码规定数组成,操作码规定CPU执行什么操作,操作数是操作执行什么操作,操作数是操作码操作的对象。码操作的对象。2)MCS-51单片机的寻址方式单片机的寻址方式访问操作数的方式叫寻址方式。访问操作数的方式叫寻址方式。MCS-51指令系统规定了七种寻指令系统规定了七种寻址方式:立即寻址、直接寻址、寄存器寻址、寄存器间接寻址、变址方式:立即寻址

48、、直接寻址、寄存器寻址、寄存器间接寻址、变址寻址、相对寻址、位寻址。一般指令系统中寻址方式越多,指令址寻址、相对寻址、位寻址。一般指令系统中寻址方式越多,指令操作就越灵活。操作就越灵活。3MCS-51指令中的符号标识指令中的符号标识指令书写时为了简洁、方便,常用到一些符号,学指令书写时为了简洁、方便,常用到一些符号,学习者应仔细理解了这些符号的标识,以加深对指令的理习者应仔细理解了这些符号的标识,以加深对指令的理解。学习者应先理解解。学习者应先理解MCS-51指令中的符号标识。指令中的符号标识。4MCS-51单片机的数据传送类指令是将源操作数送单片机的数据传送类指令是将源操作数送到目的操作数。

49、指令执行后,源操作数不变,目的操作到目的操作数。指令执行后,源操作数不变,目的操作数被源操作数取代。数据传送指令可以以累加器数被源操作数取代。数据传送指令可以以累加器A、Rn、直接地址单元、间接地址单元、直接地址单元、间接地址单元、DPTR为目的操作为目的操作数;累加器数;累加器A可以与可以与Rn、direct、Ri进行整字节交进行整字节交换;同时可以与换;同时可以与Ri及其自身进行低四字节交换。及其自身进行低四字节交换。5算术、逻辑、移位指令算术、逻辑、移位指令算术运算指令可以完成单字节二进制数的加算术运算指令可以完成单字节二进制数的加法、减法、乘法、除法、加法、减法、乘法、除法、加1、减、

50、减1及十进制调及十进制调整任务。逻辑操作指令:整任务。逻辑操作指令:“逻辑与逻辑与”、“逻辑逻辑或或”、“逻辑异或逻辑异或”,完成完成MCS-51单片机逻辑单片机逻辑操操作。作。循环移位指令完成对累加器循环移位指令完成对累加器A中的内容进中的内容进行不带进位位循环左、右移位和带进位位循环行不带进位位循环左、右移位和带进位位循环左、右移位功能。左、右移位功能。6单片机程序设计采用模块化设计。单片机程序设计采用模块化设计。模块化设计的三种基本结构是顺序设计、分支设计、循模块化设计的三种基本结构是顺序设计、分支设计、循环设计。顺序结构程序设计中,指令的执行顺序就是指环设计。顺序结构程序设计中,指令的

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 生活常识

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁