单片机MCS51指令系统教学PPT.ppt

上传人:仙人指路1688 文档编号:2248049 上传时间:2023-02-06 格式:PPT 页数:126 大小:4.97MB
返回 下载 相关 举报
单片机MCS51指令系统教学PPT.ppt_第1页
第1页 / 共126页
单片机MCS51指令系统教学PPT.ppt_第2页
第2页 / 共126页
单片机MCS51指令系统教学PPT.ppt_第3页
第3页 / 共126页
单片机MCS51指令系统教学PPT.ppt_第4页
第4页 / 共126页
单片机MCS51指令系统教学PPT.ppt_第5页
第5页 / 共126页
点击查看更多>>
资源描述

《单片机MCS51指令系统教学PPT.ppt》由会员分享,可在线阅读,更多相关《单片机MCS51指令系统教学PPT.ppt(126页珍藏版)》请在三一办公上搜索。

1、,3.1 指令系统概述,3.2 MCS-51指令的寻址方式,3.3 MCS-51指令系统介绍,下页,一台计算机所能执行的全部的指令集合,3.1 指令系统概述,指令是计算机中具有特定功能的操作命令,程序与程序设计,按预定要求编排的指令序列称为程序。编排的过程称为程序设计,指令系统,设计一种CPU,一般从设计指令系统开始,因而,一种机器的指令系统是机器本身固有的,决定了机器的性能,用户无法改变,必须继承、学习、掌握、应用,上页,下页,回目录,机器语言:,二进制代码,是机器唯一能直接识别、执行的语言。,汇编语言:,为了记忆和阅读方便,制造商对指令系统每一条指令,都给出了指令助记符。用助记符,操作数,

2、标号编写的程序称为汇编语言源程序。,一、汇编语言,汇编语言必须翻译成机器语言才能被机器执行,程序设计语言,汇编语言:,高级语言:,符号语言:,上页,下页,回目录,完成由汇编语言到机器代码的过程叫汇编,汇编的方法有两种:自动汇编、手工汇编,由机器代码到汇编语言的过程叫反汇编,汇编语言源程序,机器语言(二进制代码),汇编,反汇编,上页,下页,回目录,MCS-51交叉汇编,二、汇编语言的格式,标号:操作码 操作数;注释,其中除操作码部分是必须的,括号内的区段是任选项。,1、标号,标号是该指令的符号地址,可根据需要设定,必须以字母开始,以“:”结束,长度不超过8个字符,系统中的保留字符不能作标号,如:

3、SFR名、ADD等,标号可被其他语句的操作数直接引用源程序中,一个标号只能定义一个语句,不能相重,保持一义性,上页,下页,回目录,一个汇编语句分为四个区段,操作码,操作码,操作码,2、操作码,由指令系统的助记符、伪指令助记符组成。,操作码是每一句汇编语言所必须的,操作码和操作数之间用空格分开,3、操作数,可为二进制数(B),十进制数(D),十六进制数(H),数字大于9,则数字应以“0”开头,如:#0AFH,可以是操作数地址、立即数、标号、表达式,目的操作数和源操作数之间用“,”分开,可以是寄存器名如A、B、R、DPTR,被定义过的,上页,下页,回目录,Binary,Decimal,Hexade

4、cimal,指出该语句的操作性质,4、注释,以“;”开头,是程序员对指令操作的解释,以帮助阅读、理解程序的意义,可有可无,汇编时对这部分不予处理,不译成任何机器代码,可用英语或某种简洁的方式解释指令,或打印 程序清单,上页,下页,回目录,三、伪指令,1、起点指令 ORG,格式:,ORG H,功能:,给程序起始地址或数据块的起始地址赋值,例:,用法:,一般出现在每段源程序或数据块的开始一个源程序可多次出现ORG指令,上页,下页,回目录,首地址,首地址,2、结束命令 END,格式:END,功能:汇编程序结束标志,附在一个源程序的结尾 一个源程序只能出现一次END指令,3、定义字节命令 DB,格式:

5、,功能:,标号:DB 字节常数或字符串(8位),定义字节的内容,汇编程序把DB定义的字节依次存入标号开始的存储单元,用法:,有定义的内存单元地址,项或项表,上页,下页,回目录,例:,伪指令ORG 定义了数据块TAB的起始地址为8000H伪指令DB定义了8000H8003单元的内容依次为:,(8000H)=45H,(8001H)=49H,(8002H)=35H,(8003H)=41H,(8004H)=05H,TAB,TAB1,(1)由 ORG定义,(2)跟在其他源程序之后,上页,下页,回目录,4、定义字命令DW,格式:,功能:,标号:DW 字或字表,定义若干个字(双字节),例:,ORG 8000

6、H,TAB:DW 7234H,8AH,10,(8000H)=72H,(8001H)=34H,(8002H)=00H,(8003H)=8AH,(8005H)=0AH,汇编后:,(8004H)=00H,上页,下页,回目录,5、定义空间命令 DS,格式:,功能:,标号:DS 数据或字符及表达式,例:,(8008H)=30H,(8009H)=8AH,从指定单元地址开始,由数据或字符及表达式的值来定义应保留的单元数,备用,即:8000H8007H单元保留备用,定义空间,上页,下页,回目录,6、等值命令 EQU,格式:,字符名称 EQU 数据或汇编符号,功能:,将一个数据或汇编符号赋予标号段规定的字符名称

7、,例:,;AA与R6等值,上页,下页,回目录,例:,A10 EQU 10DELY EQU 07EBH MOV A,A10 LCALL DELY,;A10=10,;DELY=07EBH,;转向入口地址 07EBH,使用EQU指令,须先赋值后使用,不能反之,上页,下页,回目录,7、数据地址赋值等值命令 DATA,格式:,字符名称 DATA 数据或表达式,功能:,此命令把数据/代码地址赋予标号段所规定的字符名称。定义的字符名称可先使用后定义,INDEXJ DATA 8389H,;INDEXJ这个字符名称的地址为8389H,例:,上页,下页,回目录,等价于,EQU与 DATA的区别,(1)DATA与E

8、QU相似,但DATA定义的字符名称,可先使用后定义,EQU则不能,(2)EQU指令可把汇编符号赋给字符名称,DATA则不能,(3)DATA可把表达式的值赋给字符名称,EQU则不能,DATA常在程序中定义数据地址EQU常在程序中定义字符数据,上页,下页,回目录,8、位地址符号命令 BIT,格式:,字符名称 BIT 位地址,功能:,把位地址赋予标号段的字符名称,;P1.0,P2.0赋予位地址字符名称 A1、A2,在编程时可以直接把 A1、A2 当成位地址使用,上页,下页,回目录,汇编程序的操作,分两次扫描(汇编),第一次扫描(汇编),检查语法结构,对源程序中的符号、表达式、标号进行定义,处理伪指令

9、,建立符号表,上页,下页,回目录,显示 ERROR,并提示行号,显示 ERROR,并提示行号,修改!,修改!,第二次扫描(汇编),汇编成目标代码和汇编程序清单,可执行的代码(机器码),三、MCS-51指令系统的特点,1、执行速度快,存储效率高,MCS-51指令系统共有111条指令,按字节分,单字节指令49条,双字节指令45条,三字节指令17条,按周期分,单周期指令64条,双周期指令45条,四周期指令2条,设时钟频率为12MHz,则指令执行的时间分别为:,1s 58,2s 40,4s 2,占居空间,占居时间,上页,下页,回目录,硬件由221位构成,2、指令易掌握,功能强,3、适合于控制、智能仪表

10、,布尔处理机,布尔运算器ALU,布尔累加器CY(PSW.7),布尔RAM区 共128位,布尔I/O口,P0P3口每位都可做布尔I/O口,布尔指令子集,17条布尔指令,上页,下页,回目录,四、寻址方式(7种),立即寻址,直接寻址,寄存器寻址,寄存器间接寻址,基址寄存器加变址寄存器间接寻址,相对寻址,位寻址,上页,下页,回目录,数据传送(29条),算术运算(24条),逻辑运算(24条),控制转移(17条),布尔处理(17条),上页,下页,回目录,介绍描述指令符号的意义,当前选中寄存器区的8个工作寄存器(R0R7),Rn,Ri,direct,-8位内部RAM单元地址 00H7FH,专用特殊功能寄存器

11、SFR的地址80HFFH,立即数(8位),#data,#data16,立即数(16位),n=07,i=0、1,上页,下页,回目录,addr16,16位目的地址,用于LCALL、LJMP指令 地址范围64KB ROM空间,addr11,11位目的地址,用于ACALL、AJMP指令 地址范围2KB ROM空间,rel,DPTR,数据地址指针,可做16位间址寄存器,bit,内RAM或SFR中的直接位寻址,上页,下页,回目录,A,累加器,B,专用寄存器,用于MUL和DIV指令,C,位累加器(PSW.7),进位/借位标志,间址或基址寄存器前缀如 Ri,A+DPTR,/,位操作的前缀,表示对该位操作数取反

12、,(X),X中的内容,((X)),由X寻址的单元中的内容,箭头左边的内容被箭头右边的内容所代替,DPTR,A+PC,上页,下页,回目录,3.2 MCS-51指令的寻址方式,用何种方式寻找指令的操作数或指令的执行地址,1、立即寻址,寻址空间:,指令形式:,程序存储器,指令的操作数存放在程序存储器中,操作数紧跟操作码OP后面,立即寻址:,在 哪 里?,用何种方式寻找,OP#data,Immediate Addressing,上页,下页,回目录,指令的寻址方式:,指令的寻址方式:,MOV A,#30H,例1:,30H,MOV DPTR,#8000H,例2:,80H,00H,上页,下页,回目录,2、直

13、接寻址,寻址空间:,指令的三种形式:,直接寻址,直接寻址是访问 SFR 的唯一方法,Direct Addressing,上页,下页,回目录,00H7FH80HFFH,CPU内部,直接间接,“与”,上页,下页,回目录,MOV A,30H,例1:,ANL 30H,#30H,例2:,“结果”,3、寄存器寻址,寻址空间:,指令的三种形式:,当前选定的寄存器内容就是实际操作数,MOV A,R3,例1:,ADD A,R3,例2:,寄存器寻址:,Register Addressing,操作数隐含,操作数显然,隐含寻址,上页,下页,回目录,4、寄存器间接寻址,寻址空间:,指令的三种形式:,寄存器间接寻址:,R

14、egister Indirect Addressing,上页,下页,回目录,MOV R0,A,例1:,;累加器传送指令,MOVX A,DPTR,例2:,“读”,“读”,上页,下页,回目录,5、基址寄存器加变址寄存器间接寻址,基址寄存器加变址寄存器间接寻址:,以DPTR或PC作基址寄存器,A作变址寄存器两者相加形成操作数地址。,寻址空间:,程序存储器(A+DPTR、A+PC),指令形式:,上页,下页,回目录,MOVC A,A+DPTR,例:,设(A)=0FH(DPTR)=2400H,“读”,“读”,MOVC A,A+DPTR,上页,下页,回目录,6、相对寻址,程序存储器,寻址空间:,指令的三种形

15、式:,相对寻址,以当前PC值为基准地址,加上指令的偏移量“rel”,结果为目标地址。rel为有符号补码数,范围:-128+127,一般为双字节或三字节指令,Relative Addressing,上页,下页,回目录,JNZ rel,例:,;累加器A不等零则转移 设:rel=23H,(PC)=2002H,rel=23H,修正后转移目标地址D(PC)=2025H,上页,下页,回目录,(PC)=2 0 0 2 H,Rel=2 3 H,),0,0,5,2,0,2,H,D=,(PC)=2112H,rel=F2H,修正后转移目标地址 D(PC)=2104H,上页,下页,回目录,例:DJNZ R7,rel;

16、(R7)1不为“0”则转,(PC)=2 1 1 2 H,Rel=F 2 H,),F,F,4,0,1,2,H,D=,7、位寻址,寻址空间:,片内RAM的20H2FH字节地址位地址:00H7FH 共128位,SFR中12个能被8整除的字节地址位地址共93位,Bit Addressing,以访问触发器的方式,对内部RAM、SFR的位地址空间进行访问,称为位寻址。位地址用于布尔指令。,上页,下页,回目录,专为布尔指令设计,寻址方式与相应的寻址空间,小结:,上页,下页,回目录,3.3 MCS-51 指令系统介绍,MCS-51系统指令系统共111条,按操作功能分类:,数据传送类,算术运算类,逻辑运算类,控

17、制转移类,布尔处理类,上页,下页,回目录,一、数据传送类(29条),用到的指令助记符有5种:,片内传送 MOV,片外传送 MOVX,查表传送 MOVC,累加器交换 XCH、XCHD、SWAP,堆栈操作 PUSH、POP,上页,下页,回目录,1、MOV类传送指令,格式:MOV 目的字节,源字节,功能:把源字节内容送目的字节,源字节内容不变,以累加器A为目的字节的传送:,例:立即数送累加器,MOV A,#data,上页,下页,回目录,MOV A,Rn,例:寄存器内容送累加器,MOV类传送指令小结,上页,下页,回目录,MOV类传送指令小结,上页,下页,回目录,2、MOVX类传送指令,累加器A与外部R

18、AM传送数据用 MOVX,外部RAM送累加器A,MOVX A,Ri(i=0、1),单字节指令,;以Ri内容为外部RAM地址的单元中的数送A,累加器内容送外RAM,MOVX Ri,A(i=0、1),;累加器内容送以Ri内容为地址的外部RAM单元,单字节指令,上页,下页,回目录,外部RAM送累加器A,MOVX A,DPTR,单字节指令,,;以DPTR内容为地址的外部RAM单元中的数送A,累加器内容送外RAM,MOVX DPTR,A,;累加器内容送以DPTR内容为地址的外部RAM单元,单字节指令,,上页,下页,回目录,MOVX类传送指令小结,上页,下页,回目录,MOVX 片外传送指令,例:将片外RA

19、M 120H单元的内容传送到片外RAM 地址为78H的单元。,MOV DPTR,#0120H,MOVX A,DPTR,MOV R0,#78H,MOVX R0,A,例:将片内RAM 12H单元的内容传送到片内RAM 地址为78H的单元。,MOV 78H,12H,;外部RAM送累加器A,;累加器内容送外RAM,上页,下页,回目录,3、MOVC类传送指令,MOVC类传送指令,均为基址加变址寄存器寻址:,MOVC A,A+DPTR,单字节指令,,以DPTR作基址加变址寻址,上页,下页,回目录,长查表指令,16位,MOVC A,A+PC,单字节指令,,以PC作基址加变址寻址,上页,下页,回目录,短查表指

20、令,MOVC类传送指令小结,上页,下页,回目录,MOVC 查表传送指令,例:在外部ROM2000H开始的单元中存放09的平方值。根据累加器A中的数(09),查找对应的平方值。,用DPTR作基址寄存器指向表格的首地址用A作变址寄存器实际上A中的值是表格中的第几项,上页,下页,回目录,09H,;设(A)=03H,查“3”的平方,上页,下页,回目录,用PC作基址寄存器,它并不指向表格首址,;是PC当前值与所查表格首址之间的距离;即(PC)+#data TABBEL表格首址,设(A)=03H,是表格中的第3项,;单字节指令,设指令在ROM中的地址为1FF0H,ADD A,#data,MOVC A,A+

21、PC,000FH,上页,下页,回目录,;#data是变址调整值,TABBEL,MOVC A,A+PC,(PC)=1FF1H,09H,;查“3”的平方,上页,下页,回目录,查表举例,指令MOV A,A+DPTR和 MOV A,A+PCSEARCH1:MOV A,BUFFMOV DPTR,#TAB1 MOVC A,A+DPTRLJMP DISPLAYSEARCH2:MOV A,BUFFADD A,#03H;*MOVC A,A+PCLJMP DISPLAYTAB1:,TAB1:DB 0C0H,0F9H,0A4HDB 0B0H,099H,092HDB 082H,0F8H,080HDB 090H表格中依

22、次定义了从“09”的共阳LED数码管显示“7段码”*:LJMP DISPLAY指令占用3字节,即:MOVC指令到TAB之间相距3字节。,4、XCH、XCHD、SWAP类传送指令,寄存器内容与累加器内容交换,XCH A,Rn(n=07),内RAM或SFR内容与累加器内容交换,XCH A,direct(n=07),上页,下页,回目录,内RAM内容与累加器内容交换,XCH A,Ri(i=0,1),内RAM内容低4位与累加器低4位内容交换,XCHD A,Ri(i=0,1),上页,下页,回目录,累加器A高4位与低4位交换,SWAP A,上页,下页,回目录,字节拆分程序举例,MOV MEM,#0MOV M

23、EM+1,#0;对MEM的连续两个存储器清零MOV R0,#MEMMOV A,HEX;读取待拆数据,假定为“ABH”XCHD A,R0;MEM中为“0BH”,A中为“A0H”INC R0SWAP A;A中高低4位互换,“A0H”变“0AH”MOV R0,A;存“0AH”到MEM+1,例:将HEX单元内容的高4位和低4位拆分为两部分,分别存放在MEM及MEM+1单元,交换类传送指令小结,上页,下页,回目录,都在CPU内部交换,5、堆栈操作指令,进栈指令,PUSH direct,;direct地址单元的内容压入SP指向的单元,双字节指令,出栈指令,POP direct,;SP指向的单元内容弹出到以

24、direct为地址的单元,双字节指令,上页,下页,回目录,例:堆栈操作 设(A)=55H,(B)=3FH,建立堆栈,压入操作,弹出操作,55H,3FH,MOV SP,#60H,PUSH A,PUSH B,POP PSW,结果:PSW的内容3FH,SP的内容为61H,上页,下页,回目录,PSW,3FH,二、算术运算类(24条),用到的指令助记符有8种:,加法指令 ADD、ADDC、INC、DA,减法指令 SUBB,DEC,乘除指令 MUL,DIV,算术运算类指令执行结果影响标志位:CY、AC、OV,上页,下页,回目录,标志位,1、不带进位加ADD,例:累加器内容加立即数,ADD A,#data,

25、双字节指令,例:累加器内容加寄存器内容,ADD A,Rn(n=07),单字节指令,上页,下页,回目录,ADD类指令小结,上页,下页,回目录,求和指令,2、带进位加ADDC,例:累加器内容加立即数 加进位位,ADDC A,#data,双字节指令,例:累加器内容加寄存器内容加进位位,ADDC A,Rn(n=07),单字节指令,上页,下页,回目录,ADDC类指令小结,上页,下页,回目录,P90 求和指令(带进位),无符号数相加:,若和数大于255,则CY=1,否则CY=0,上页,下页,回目录,用于多字节无符号数相加的高位相加,3、增量INC,例:累加器内容加“1”,INC A,单字节指令,例:寄存器

26、内容加“1”,INC Rn,单字节指令,上页,下页,回目录,INC类指令小结,上页,下页,回目录,P90 增量指令,4、十进制调整指令,DA A,;对累加器A,作BCD码加法后进行“过9补6”调整,注意:DA 指令不能对BCD码减法的结果进行调整,单字节指令,上页,下页,回目录,ABCDEF,0123456789,BCD,上页,下页,回目录,合法,例 设(A)=37H;(R3)=36H,执行下面的程序:,0 0 1 1 0 1 1 1(37H),0 0 1 1 0 1 1 0(36H),(6DH),0 1 1 0 1 1 0 1,过“9”,0 0 0 0 0 1 1 0,0 1 1 1 0 0

27、 1 1,补“6”,(73H),;(A)=6DH,;(A)=73H,0 1 1 1 0 0 1 1(73H),1 0 0 1 1 0 0 1(99H),1 0 0 0 0 1 1 0 0(0CH),CY,0 1 1 0 0 1 1 0,0 1 1 1 0 0 1 0,(72H),;(A)=0CH CY=1,;(A)=72H,过“9”,补“6”,1 1 0 1,1,1 1 0 0,上页,下页,回目录,“+99”就等于减“-1”,互补,DA A 只能跟在加法指令之后,5、减法指令SUBB,例:累加器减立即数和借位标志,SUBB A,#data,双字节指令,例:累加器减寄存器内容和借位标志,SUBB

28、 A,Rn(n=07),单字节指令,上页,下页,回目录,SUBB类指令小结,上页,下页,回目录,P90 减法指令(带借位),6、减量 DEC,例:累加器内容减“1”,DEC A,单字节指令,例:寄存器内容减“1,DEC Rn,单字节指令,上页,下页,回目录,DEC 类指令小结,上页,下页,回目录,7、MUL,MUL A B,DIV A B,单字节指令,8、DIV,单字节指令,CY=0,上页,下页,回目录,数据转换程序如下:CHDBCD:MOV R0,#BUFF DIV ABMOV A,HEX MOV R0,A;存十位MOV B,#100 INC R0DIV AB MOV R0,B;存个位MOV

29、 R0,A;存百位 RETINC R0MOV A,BMOV B,#10,设HEX中存放着一个16进制(2进制)数,如果要将它送到数码管进行显示,首先要将其转换成3字节的BCD数,每字节的值=09。假定转换结果存放到BUFF的连续3个单元中,依次为:百位;十位和个位。,1字节16进制数转换成3字节BCD数举例,三、逻辑运算类(24条),用到的指令助记符有9种:,包括与、或、异或、清除、求反、移位等操作,ANL、ORL、XRL、CLR、CPL、RL、RLC、RR、RRC,上页,下页,回目录,1、逻辑与ANL(6条),例:累加器内容逻辑与立即数,ANL A,#data,双字节指令,例:累加器内容逻辑

30、与寄存器内容,ANL A,Rn(n=07),单字节指令,上页,下页,回目录,CPU 按位运算,ANL 类指令小结,上页,下页,回目录,读修改写,CPU 按位运算,ORL 类指令小结,上页,下页,回目录,读修改写,2、逻辑或 ORL(6条),CPU 按位运算,XRL类指令,上页,下页,回目录,读修改写,3、逻辑异或XRL(6条),按位运算:相异为“1”,相同为“0”,CPU 按位运算,例:根据累加器中40的状态修改P1端口位40的状态,ANL A,#00011111B,ANL P1,#11100000B,ORL P1,A,;A屏蔽前3位,保留后5位,;根据A的后5位的值,使P1口 相应位置“1”

31、,P1前3位不变,;P1屏蔽后5位,保留前3位,上页,下页,回目录,仅修改了 P1 口的后 5 位,“读”“修改”“写”,4 累加器清除与求反指令(2条),累加器A清零,CLR A,单字节指令,累加器A按位取反,CPL A,单字节指令,上页,下页,回目录,例:给出下面程序分析执行结果,CLR A,CPL A,;(A)=00H,;(A)=FFH,上页,下页,回目录,4 移位指令(4条),累加器内容循环左移一位,RL A,单字节指令,累加器内容连同进位标志循环左移一位,单字节指令,RLC A,CY,上页,下页,回目录,累加器内容循环右移一位,RR A,单字节指令,累加器内容连同进位标志循环右移一位

32、,单字节指令,RRC A,CY,上页,下页,回目录,例:已知RED;GRE和YEL为连续3个存储单元,将其依次右移1位。ROTATE:MOV A,YEL MOV C,ACC.0 MOV A,RED RRC A MOV RED,A MOV A,GRE RRC A MOV GRE,A MOV A,YEL RRC A MOV YEL,A RET,移位指令小结,累加器清除与求反指令小结,上页,下页,回目录,例:设(A)=5AH、CY=1,RL A,RLC A,RR A,RRC A,;(A)=B4H,;(A)=2DH,;(A)=B5H,;(A)=ADH,01011010,01011010,0,1,0,1

33、,0,0,上页,下页,回目录,四、控制转移指令(17条),控制转移指令共有17条:,无条件转移指令,条件转移指令,子程序的调用返回等,上页,下页,回目录,1、无条件转移指令,长转移,LJMP addr16,三字节指令,绝对转移,AJMP addr11,AJMP 将程序存储器分为32个区,由PC1511决定,每个区2KB,分8页,由A10A9A8决定。双字节指令,上页,下页,回目录,转移范围 2KB,转移范围 64KB,上页,下页,回目录,在2区形成11位目标地址,.,1000H17FFH,保持高5位地址以确定某区,0 0 0 1 0,例如 AJMP add11 在2区的执行过程,2KB范围内,

34、00001,短转移,SJMP rel,指令中的rel是8位带符号补码,范围-128+127。可由汇编自动计算并填入指令代码,也可手工计算。,双字节指令,计算式:rel=目标地址-(PC+2),例:分析指令 SJMP$,符号“$”指本指令执行前的PC值,指令SJMP$执行后,程序仍然转移回此指令继续执行,计算机于是不断的执行这一指令,进入等待状态。,上页,下页,回目录,原地踏步,rel=0FEH=(-2)补,间接长转移,JMP A+DPTR,单字节指令,上页,下页,回目录,无条件转移指令小结,上页,下页,回目录,(散转指令),可以有n个目标地址,则顺序执行,2、条件转移指令,累加器为零则转移,J

35、Z rel,JNZ rel,累加器不为零则转移,上页,下页,回目录,则转移,则顺序执行,则转移,累加器与立即数不等则转移,CJNE A,#data,rel,寄存器与立即数不等则转移,CJNE Rn,#data,rel,上页,下页,回目录,顺序,转移,转移,顺序,两数相减,累加器与内RAM或SFR不等则转移,CJNE A,direct,rel,内RAM与立即数不等则转移,CJNE Ri,#data,rel,上页,下页,回目录,顺序,转移,转移,顺序,判数据大小举例,假定A中有一个数,不知道大小,当其data时转到label1,当其data转到label2,当其data时转到label3,CJNE

36、 A,#data,label0 LJMP label3Label0:JC label2 LJMP label1,寄存器减“1”不等零则转移,DJNZ Rn,rel(n=07),DJNZ direct,rel,内RAM或SFR减“1”不为零则转移,上页,下页,回目录,顺序,转移,转移,顺序,循环延时程序举例,查指令表,DJNZ Rn,rel指令执行时间为2个机器周期,如果使用12M频率的晶振,则执行一次“DJNZ”指令需要2uS时间。如果此指令执行200次,可以延时0.4mS.可以设计延时30mS的程序,DJNZ应当执行:30000/2=15000=150*100次(或者25060)。程序如下:

37、DELAY30MS:MOV R7,#100(#60)DELAY:MOV R6,#150(#250)DJNZ R6,$DJNZ R7,DELAY RET这里符号“$”表示转移到本行前。凑15000时,注意每个数不能超过255(1字节),上页,下页,回目录,条件转移类指令小结,3、子程序调用及返回指令,长调用,LCALL addr16,三字节指令,;在调用子程序之前,保护断点地址,上页,下页,回目录,转向子程序,绝对调用,ACALL addr11,双字节指令,;在调用子程序之前,保护断点地址,上页,下页,回目录,转向子程序,在2KB范围内,子程序返回,RET,单字节指令,中断返回,RETI,单字节

38、指令,上页,下页,回目录,4、空操作,NOP,单字节指令,上页,下页,回目录,子程序调用及返回指令小结,上页,下页,回目录,主程序:,子程序:,不需主程序提供入口参数,从子程序开始到子程序返回,大约为20ms,例:调用延时子程序DELY,子程序开始的标号,子程序返回指令,调用子程序,上页,下页,回目录,982=196s,1s,1s,设:主频为12MHZ,2s,(196+2+2)100,+3,=20003s=20.003ms,2s,1s,+3,意味着每个机器周期为1s,五、布尔处理类指令(17条),指令中位地址的助记符有多种表达方式:,直接地址方式:如 0D5H,点操作符方式:如 PSW.5,位

39、名称方式:如 F0,上页,下页,回目录,PSW.7,PSW.6,PSW.5,PSW.0,PSW,0D5H,F00D5H,1、布尔传送类,直接寻址位送进位标志,MOV C,bit,双字节指令,进位标志送直接寻址位,MOV bit,C,双字节指令,上页,下页,回目录,2、布尔状态控制指令,清进位标志,CLR C,单字节指令,清直接寻址位,CLR bit,双字节指令,上页,下页,回目录,置进位标志,SETB C,单字节指令,置直接寻址位,SETB bit,双字节指令,上页,下页,回目录,进位标志求反,CPL C,单字节指令,直接寻址位求反,CPL bit,双字节指令,上页,下页,回目录,3、布尔逻辑

40、运算指令,进位标志逻辑与直接寻址位,ANL C,bit,双字节指令,进位标志逻辑与直接寻址位的反码,ANL C,/bit,双字节指令,上页,下页,回目录,进位标志逻辑或直接寻址位,ORL C,bit,双字节指令,进位标志逻辑或直接寻址位的反码,ORL C,/bit,双字节指令,上页,下页,回目录,4、布尔条件转移指令,进位标志为“1”则转移,JC rel,双字节指令,JNC rel,双字节指令,进位标志为“0”则转移,上页,下页,回目录,直接寻址位为“1”则转移,JB bit,rel,三字节指令,直接寻址位为“0”则转移,JNB bit,rel,三字节指令,上页,下页,回目录,直接寻址位为“1”则转移并将该位复位,JBC bit,rel,三字节指令,上页,下页,回目录,布尔处理指令小结,上页,下页,回目录,布尔处理指令小结,上页,下页,回目录,;(R0)=200,;P1.7变反(1 s),;P1.7为低电平,;(1 s),;(1 s),;(R0)0 则转(2s),1s,1s,1s,2s,10s,例:分析下面程序,上页,回目录,P1.7,100个脉冲,例:内部RAM从DATA1单元有一数据块,存放若干无符号数,第一单元为数据块长度,求这些无符号数之和。,起始地址,程序主体,汇编结束标志,标号,注释,上页,下页,回目录,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号