第3章指令系统与程序设计.ppt

上传人:本田雅阁 文档编号:2526944 上传时间:2019-04-05 格式:PPT 页数:173 大小:1.77MB
返回 下载 相关 举报
第3章指令系统与程序设计.ppt_第1页
第1页 / 共173页
第3章指令系统与程序设计.ppt_第2页
第2页 / 共173页
第3章指令系统与程序设计.ppt_第3页
第3页 / 共173页
亲,该文档总共173页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《第3章指令系统与程序设计.ppt》由会员分享,可在线阅读,更多相关《第3章指令系统与程序设计.ppt(173页珍藏版)》请在三一文库上搜索。

1、编程:,解决问题思想,程序框图,语句,指令,汇编语言及程序设计 (第三章、第四章),指令系统:CPU所能执行的全部指令集合,3.1 指令系统概述,一条指令是计算机中具有特定功能的操作命令, 程序与程序设计,按预定要求编排的指令序列称为程序。编排的过程称为程序设计,机器语言,二进制代码,是机器唯一能直接识别、执行的语言。,汇编语言:,指令助记符。用助记符,操作数,标号编写的程序称为汇编语言源程序。,一、汇编语言,汇编语言 机器语言 机器执行, 程序设计语言,汇编语言,高级语言(PLM; Keil Cx51),翻译,汇编:完成由汇编语言到机器代码的过程,汇编的方法有两种:自动汇编、手工汇编,由机器

2、代码到汇编语言的过程叫反汇编,汇编语言 源程序,机器语言,汇编程序,反汇编程序,上页,下页,回目录,自动汇编:将输入到计算机中的源程序,由机器中一个软件将其翻译成机器代码的过程。这个翻译软件称为汇编程序。,二、汇编语言的格式, 标号: 操作码 操作数 ;注释,如: MAIN: MOV SP,#60H ;设堆栈指针,1、标号,标号是该指令的符号地址,可根据需要设定,必须以字母开始,以“ :”结束,长度不超过8个字符,系统中的保留字符不能作标号, 如: SFR名、ADD等,标号可被其他语句的操作数可直接引用 源程序中,一个标号只能定义一个语句,不能相重,保持一义性,上页,下页,回目录,一个汇编语句

3、分为四个区段:,2、操作码,由指令系统的助记符、伪指令助记符组成。,操作码指出该指令将进行何种操作,3、操作数:参加操作的数的本身或操作数所在的地址,可为二进制数 (B)、 十进制数 (D)、十六进制数 (H),HEX:数字大于9,则数字应以“0”开头,如0FAH,可以是操作数地址、立即数、标号、表达式如 M+3,目的操作数和源操作数之间用“,”分开,可以是寄存器名如A、B、R0R7、DPTR,上页,下页,回目录,4、注释,以“ ;”开头,是程序员对指令操作的解释,以帮助阅读、理解程序的意义,可有可无,建议进行程序注释,汇编时对这部分不予处理,不译成任何机器代码,可用英语或某种简洁的方式解释指

4、令,上页,下页,回目录,三、伪指令,伪指令仅在汇编程序中起控制作用,不产生可执行目标代码。,1、起点指令 ORG,格式:,ORG H,功能:,指定程序或数据块的起始地址,例:,用法:,一般出现在每段源程序或数据块的开始 一个源程序可多次出现ORG指令,上页,下页,回目录,2、结束命令 END,格式:END,功能:汇编程序结束标志,附在一个源程序的结尾 一个源程序只能出现一次END指令,3、定义字节命令 DB,格式:,功能:,标号:DB 字节常数或字符,定义字节的内容,汇编程序把DB定义的字节依次存入标号开始的存储单元,用法:,上页,下页,回目录,例:,伪指令ORG 定义了TAB的起始地址为80

5、00H, 伪指令DB定义了8000H8003单元的内容依次为:,(8000H)= 45H,(8001H)= 49H ; 73,(8002H)= 35H ; 5,(8003H)= 41H ; A,(8004H)= 05H ; 101B,TAB,TAB1,(1) 由 ORG定义,(2) 跟在其他源程序之后,上页,下页,回目录,4、定义字命令DW,格式:,功能:,标号:DW 字或字表,定义若干个字(双字节),例:,ORG 8000H,TAB:DW 7234H,8AH,10,(8000H)= 72H,(8001H)= 34H,(8002H)= 00H,(8003H)= 8AH,(8005H)= 0AH

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

7、TA 数据或表达式,功能:,此命令把数据/代码地址赋予标号段所规定的字符名称。定义的字符名称可先使用后定义,INDEXJ DATA 8389H,;INDEXJ这个字符名称的地址为8389H,例:,上页,下页,回目录,等价于,EQU与 DATA的区别,(1) DATA与EQU相似,但DATA定义的字符名称, 可先使用后定义 ,EQU则不能,(2) EQU指令可把汇编符号赋给字符名称, DATA则不能,(3) DATA可把表达式的值赋给字符名称, EQU则不能,DATA常在程序中定义数据地址 EQU常在程序中定义字符数据,上页,下页,回目录,8、位地址符号命令 BIT,格式:,字符名称 BIT 位

8、地址,功能:,把位地址赋予一标号,;P1.0, P2.0位地址赋予字符A1、A2,在编程时可以直接把 A1、A2 当成位地址使用,上页,下页,回目录,三、MCS-51指令系统的特点,1、执行速度快,存储效率高,MCS-51指令系统共有111条指令,按字节分,单字节指令49条,双字节指令45条,三字节指令17条,按周期分,单周期指令64条,双周期指令45条,四周期指令2条,设时钟频率为12MHz,则指令执行的时间分别为:,1s 58,2s 40,4s 2,影响程序存储器,影响系统实时性,上页,下页,回目录,2、指令易掌握,功能强,3、适合于控制、智能仪表,布尔处理机,可进行“位”操作。,上页,下

9、页,回目录,四、寻址方式(7种), 立即寻址, 直接寻址, 寄存器寻址, 寄存器间接寻址, 基址寄存器加变址寄存器间接寻址, 相对寻址, 位寻址,上页,下页,回目录, 数据传送(29条), 算术运算(24条), 逻辑运算(24条), 控制转移(17条), 布尔处理(17条),上页,下页,回目录,介绍描述指令符号的意义,当前选中的寄存器区的8个工作寄存器(R0R7),Rn,Ri,direct,- 8位内部RAM单元地址 00H7FH, 专用特殊功能寄存器SFR的地址80HFFH, 立即数(8位),#data,#data16, 立即数(16位),当前选中的寄存器区中可做间址寄存器的2个 工作寄存器

10、(R0、R1)i=0、1,n=07,上页,下页,回目录,addr16, 16位目的地址,用于LCALL、LJMP指令 地址范围64KB ROM空间,addr11, 11位目的地址,用于ACALL、AJMP指令 地址范围2KB ROM空间,rel,DPTR, 数据地址指针,可做16位间址寄存器,bit, 内部RAM或SFR中的直接位寻址,上页,下页,回目录,C, 位累加器 ( PSW.7 ),进位/借位标志, 间址或基址寄存器前缀,如 Ri , A+DPTR,/, 位操作的前缀,表示对该位操作数取反,(X), X中的内容,((X)), 由X寻址的单元中的内容,箭头左边的内容被箭头右边的内容所代替

11、,DPTR , A+PC,上页,下页,回目录,3.2 MCS-51指令的寻址方式,用何种方式寻找指令的操作数 或指令的执行地址,1、立即寻址,寻址空间:,指令形式:,程序存储器,指令操作数以指令形式存放在程序存储器中.,即:操作码后面的一个字节是实际操作数,立即寻址:,用何种方式寻找,OP #data,上页,下页,回目录,指令的寻址方式:,指令的寻址方式:,MOV A,# 30H,例1:,操作码,立即数,MOV DPTR,# 8000H,例2:,操作码,立即数的高8位,立即数的低8位,80H,00H,上页,下页,回目录,2、直接寻址,寻址空间:,指令的三种形式:,直接寻址,直接寻址是访问 SF

12、R 的唯一方法,上页,下页,回目录,00H7FH 80HFFH,CPU内部,上页,下页,回目录,MOV A, 30H,例1:,操作数地址, ,ANL 30H,#30H,例2:,3、寄存器寻址,寻址空间:,指令的三种形式:,实际操作数是当前选定的寄存器的内容,MOV A,R3,例1:,ADD A,R3,例2:,寄存器寻址:,上页,下页,回目录,4、寄存器间接寻址,寻址空间:,指令的三种形式:,寄存器间接寻址:,指令选定的寄存器内容就是实际,的操作数地址,操作数地址由寄存器间接给出,上页,下页,回目录,MOV R0,A,例1:,;累加器传送指令, ,上页,下页,回目录,MOV R0, #30H,5

13、、基址寄存器加变址寄存器间接寻址(变趾寻趾),基址寄存器加变址寄存器间接寻址:,以DPTR或PC作基址寄存器,A作变址寄存器 两者相加形成操作数地址。,寻址空间:,程序存储器(A+DPTR、A+PC),指令形式:,上页,下页,回目录,MOV DPTR,#2400H MOV A,#0FH MOVC A,A+DPTR,例:, ,“读”,“读”,MOVC A,A+DPTR,上页,下页,回目录,6、相对寻址,程序存储器,用于程序控制,寻址空间:,指令的三种形式:,相对寻址,以当前PC值为基准地址,加上指令的偏移量“rel”,结果为目标地址。rel为有符号补码数,范围:-128+127,一般为双字节或三

14、字节指令,上页,下页,回目录,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 =,7、位寻址,寻址空间:,片内RAM的20H2FH字节地址,SFR中12个能被8整除的字节地址,对内部RAM、SFR的位地址空间进行访问,称为位寻址。位地址用于布尔指令。,上页,下页,回目录,寻址方式与相应的寻址空间,小结:,3.3 MCS - 51 指令系统介绍,MCS-51系统指令系统共111

15、条,按操作功能分类:, 数据传送类, 算术运算类, 逻辑运算类, 控制转移类, 布尔处理类,上页,下页,回目录,111条基本指令衍生出255种指令代码00H0FFH(0A5H没有定义),例如: MOV A,Rn(n:07) 对应指令代码:E8HEFH,学习指令要点: 1、掌握指令操作; 2、掌握指令的寻址方式; 3、掌握指令对程序状态字(PSW)的影响; 4、合理使用指令。,一、数据传送类(29条),用到的指令助记符有5种:,片内传送 MOV,片外传送 MOVX,查表传送 MOVC,累加器交换 XCH、XCHD、SWAP,堆栈操作 PUSH、POP,上页,下页,回目录,一般的操作是把源操作数传

16、送到目的操作数。指令执行后,源操作数不变,目的操作数修改为源操作数。,数据传送指令不影响PSW各位(奇偶位除外),只有堆栈操作可直接修改PSW。,1、MOV类传送指令,格式: MOV 目的字节 源字节,功能:把源字节内容送目的字节,源字节内容不变,以累加器A为目的字节的传送:, 立即数送累加器,MOV A,#data,;立即数#data送累加器A,上页,下页,回目录, 寄存器内容送累加器,MOV A,Rn (n=07), 内部RAM或SFR内容送累加器,MOV A,direct,;Rn的内容送累加器A,;以direct为地址的单元的内容送累加器A,上页,下页,回目录,例: MOV R0,#30

17、H MOV A,R0,例: MOV 30H,#55H MOV A,30H, 内部RAM内容送累加器,MOV A,Ri (i=0、1),如: MOV 30H,#88H MOV R0,#30H MOV A,R0,;以Ri内容为地址单元中的数送累加器A,以Rn为目的字节的传送:, 立即数送寄存器,MOV Rn,#data (n=07),;立即数#data送累加器 Rn,上页,下页,回目录,如: MOV R0,#67H; MOV R7,#0F0H, 累加器内容送寄存器Rn,MOV Rn ,A (n=07),;累加器A的内容送Rn, 内部RAM或SFR内容送寄存器Rn,MOV Rn ,direct (n

18、=07),如: MOV R1 ,30H ; MOV R2 ,60H,;以direct为地址的单元的内容送寄存器Rn,上页,下页,回目录,如: MOV R0 ,A ; MOV R5 ,A, 立即数送内部RAM或SFR,MOV direct,#data,;立即数#data送以direct为地址的单元,如:MOV 30H,#45;(30H) 45, 累加器内容送内部RAM或SFR,MOV direct,A,;累加器送以direct为地址的单元,如:MOV 45H,A ;(45H) A,直接地址为目的字节的传送:, 寄存器内容送内部RAM或SFR,MOV direct,Rn (n=07),;寄存器Rn

19、内容送以direct为地址的单元,如: MOV 56H,R6;56H (R6), 内部RAM或SFR之间直接传送,MOV direct1, direct2,;内部RAM或SFR任意两个单元之间传送数据,例: MOV 30H, 31H;30H (31H),上页,下页,回目录, 内部RAM数据送内部RAM或SFR,MOV direct, Ri(i=0、1),例: MOV 20H, R0;20H (R0),;以Ri内容为地址单元中的数送内RAM或SFR, 立即数送内部RAM,MOV Ri ,#data (i=0、1),;立即数#data送以Ri内容为地址的单元,例: MOV R1 ,#30;(R1)

20、 #30,上页,下页,回目录, 累加器内容送内部RAM,MOV Ri ,A (i=0、1),;累加器内容送以Ri内容为地址的单元,例: MOV R0 ,A ;(R0) A, 内部RAM或SFR数据送内RAM,MOV Ri ,direct (i=0、1),例: MOV R1 ,56H;(R1) (56),;以direct为地址的单元内容送Ri内容为地址的单元,上页,下页,回目录, 16位立即数传送指令,MOV DPTR,#data16,;16位立即数送DPTR中,设置地址指针。,例: MOV DPTR,#3000H ;DPH #30H ;DPL #00H,上页,下页,回目录,MOV类传送指令小结

21、,上页,下页,回目录,MOV 片内传送指令,机器周期数,1,1,1,1,1,1,1,P364367,MOV类传送指令小结,上页,下页,回目录,MOV 片内传送指令,Ri,direct,Rn,#data,ACC,传送指令在片内数据存储器中传送操作,例:将片内RAM 30H单元的内容传送到片内RAM 地址为78H的单元。,MOV 78H,30H,例:将片内RAM 地址为30H、31H单元的内容传送到片内RAM 地址为80H、81H单元中。,MOV R0,#80H MOV R0,30H MOV R0,#81H MOV R0,31H,例:将片内RAM 地址为80H、81H单元的内容传送到片内RAM 地

22、址为90H、91H单元中。,MOV R0,#81H MOV A, R0 MOV R1,#91H MOV R1,A,MOV R0, #80H ;指向源地址 MOV A, R0 ;取出数据,MOV R1,#90H ;指向目的地址 MOV R1, A ;进行数据传送,属于简单程序的设计,其特点:,既无分支,又无循环,按照顺序执行,可完成一定的基本功能,是编写复杂程序的基础,高128字节存储器的数据传送,采用间接寻址方式,2、MOVX类传送指令,累加器A与外部RAM传送数据用 MOVX, 外部RAM内容送累加器A,MOVX A,Ri (i=0、1),例:MOV P2,#30H MOV R0, #00H

23、 MOVX A,R0,;以Ri内容为外部RAM地址的单元中的数送A,外部数据存储器读指令。高8位地址由P2给出。, 累加器内容送外RAM,MOVX Ri ,A (i=0、1),;累加器内容送以Ri内容为地址的外部RAM单元,外部数据存储器写指令。,上页,下页,回目录, 外部RAM送累加器A:读外部RAM单元内容,MOVX A,DPTR,;以DPTR内容为地址的外部RAM单元中的数送A, 累加器内容送外RAM:写数据到外部RAM单元,MOVX DPTR ,A,;累加器内容送以DPTR内容为地址的外部RAM单元,例:将3000H内容送入3100H中 MOV DPTR, #3000H MOVX A,

24、 DPTR MOV DPTR,#3100H MOVX DPTR,A,MOVX类传送指令小结,MOVX 片外传送指令,例:将片外RAM 120H单元的内容传送到片外RAM 地址为0078H的单元。,MOV DPTR,#0120H,MOVX A,DPTR,MOVX DPTR,A,;外部RAM送累加器A,;累加器内容送外RAM,上页,下页,回目录,MOV DPTR, #0078H,3、MOVC类传送指令,MOVC为程序存储器传送指令,均为基址加变址寄存器寻址。,MOVC A,A+DPTR, 以DPTR作基址加变址寻址,上页,下页,回目录,长查表指令,MOVC A,A+PC, 以PC作基址加变址寻址,

25、上页,下页,回目录,短查表指令,MOVC类传送指令小结,指令助记符,说 明,字 节,1,1,MOVC A,A+DPTR,MOVC A,A+PC,以DPTR作基址加变址寻址,以PC作基址加变址寻址,上页,下页,回目录,MOV DPTR , #PFTAB MOV A , #03H MOVC A , A+DPTR SJMP $,例:根据累加器 A中的数( 09 ),查找对应的平方值。,PFTAB: DB 0, 1, 4, 9, 16, 25 DB 36, 49, 64, 81 ;数0-9的平方表 END,ORG 0000H LJMP MAIN ORG 0030H MAIN: MOV SP , #60

26、H,09H,;设(A)= 03H,查“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 A,#56H SWAP A,交换类传送指令小结,上页,下页,回目录,5、 堆栈

27、操作指令, 进栈指令,PUSH direct,第2步:direct地址单元的内容压入SP指向的单元, 出栈指令,POP direct,第1步、SP指向的单元内容弹出到以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 带进位的减法指令:SUBB 增1指令:

28、INC 减1指令:DEC 乘除指令 MUL 除法指令:DIV 十进制加法调整指令:DA,算术运算类指令执行结果影响标志位:CY、AC、OV,上页,下页,回目录,1、不带进位加ADD, 累加器内容加立即数,ADD A,#data, 累加器内容加寄存器内容,ADD A,Rn(n=07),上页,下页,回目录,例:计算12H+34H: MOV A,#12H ADD A,#34H,例: MOV A,#12H MOV R0,#34H ADD A,R0, 累加器内容加内部RAM内容,ADD A,Ri(i=0,1), 累加器内容加内部RAM内容或SFR,ADD A,direct,上页,下页,回目录,ADD类指

29、令小结,上页,下页,回目录,2、带进位加ADDC, 累加器内容加立即数 加进位位,ADDC A,#data, 累加器内容加寄存器内容加进位位,ADDC A,Rn(n=07),上页,下页,回目录, 累加器内容加内RAM内容加进位位,ADDC A,Ri(i=0,1), 累加器内容加内RAM内容或SFR加进位位,ADDC A,direct,上页,下页,回目录,ADDC类指令小结,上页,下页,回目录,3、增量INC, 累加器内容加 “1”,INC A, 寄存器内容加 “1”,INC Rn,上页,下页,回目录, 内RAM或SFR内容加 “1”,INC direct, 内RAM内容加 “1”,INC Ri

30、,上页,下页,回目录, 数据指针DPTR内容加 “1”,INC DPTR,INC 指令中除 INC A 指令影响 P 标志位, 其余指令不影响任何标志位,上页,下页,回目录,INC类指令小结,上页,下页,回目录,注意:ADD A,#1 ; INC A; ADDC A,#1 区别,4、十进制调整指令,DA A,;对累加器A,作BCD码加法后进行“过9补6”调整,注意:DA 指令不能对BCD码减法的结果进行调整,上页,下页,回目录,5、减法指令SUBB, 累加器减立即数和借位标志,SUBB A,#data, 累加器减寄存器内容和借位标志,SUBB A,Rn(n=07),上页,下页,回目录, 累加器

31、减RAM内容和借位标志,SUBB A,Ri(i=0,1), 累加器内容减内RAM内容或SFR和借位标志,SUBB A,direct,上页,下页,回目录,SUBB类指令小结,上页,下页,回目录,双字节求补 设:两个字节原码数存在R1、R0中 求补后结果,存在R3、R2中。,例4-3:P122,上页,下页,回目录,程序:,CLR C,CLR A,SUBB A, R0,MOV R2, A,CLR A,SUBB A, R1,ORG 0000H,MOV R3 , A,SJMP $,END,;低字节求补,;送R2,;A清零,;高字节求补,;送R3,双字节求补 设:两个字节原码数存在R1、R0中 求补后结果

32、,存在R3、R2中。,例4-3:P122,6、减量 DEC, 累加器内容减“1”,DEC A, 寄存器内容减“1,DEC Rn,上页,下页,回目录, 内RAM或SFR内容减“1,DEC direct, 内RAM内容减“1,DEC Ri,上页,下页,回目录,DEC 类指令小结,上页,下页,回目录,7、MUL,MUL A B,DIV A B,8、DIV,CY= 0,上页,下页,回目录,MOV A, 20H MOV B,#10H DIV AB,MOV A,B ADD A, #30H MOV 22H, A,ADD A, #30H MOV 21H, A,ORG 0000H,SJMP $,END,例4-2

33、:将一个字节内的压缩BCD码拆开并变成ASCII码, 存入两个RAM单元。BCD码放在内部RAM的20H, 转换后高半字节放到21H,低字节放22H。,采用除10H取余法将两个BCD数拆开,BCDH BCDL,三、逻辑运算类(24条),用到的指令助记符有9种:,包括与、或、异或、清除、求反、移位等操作,ANL、ORL、XRL、 CLR、CPL、 RL、RLC、RR、RRC,上页,下页,回目录,1、逻辑与ANL(6条), 累加器内容逻辑与立即数,ANL A,#data, 累加器内容逻辑与寄存器内容,ANL A,Rn(n=07),上页,下页,回目录, 累加器内容逻辑与内RAM内容,ANL A,Ri

34、(i=0,1), 累加器内容逻辑与内RAM内容或SFR,ANL A,direct,上页,下页,回目录, 累加器内容逻辑与内RAM或SFR,ANL direct,A, 立即数逻辑与RAM或SFR,ANL direct,#data,上页,下页,回目录,ANL 类传送指令小结,上页,下页,回目录,2、逻辑或 ORL(6条), 累加器内容逻辑或立即数,ORL A,#data, 累加器内容逻辑或寄存器内容,ORL A,Rn(n=07),上页,下页,回目录, 累加器内容逻辑或内RAM内容,ORL A,Ri(i=0,1), 累加器内容逻辑或内RAM内容或SFR,ORL A,direct,上页,下页,回目录,

35、 累加器内容逻辑或内RAM或SFR,ORL direct,A, 立即数逻辑或RAM或SFR,ORL direct,#data,上页,下页,回目录,ORL 类传送指令小结,上页,下页,回目录,3、逻辑异或XRL(6条), 累加器内容逻辑异或立即数,XRL A,#data, 累加器内容逻辑异或寄存器内容,XRL A,Rn(n=07),上页,下页,回目录, 累加器内容逻辑异或内RAM内容,XRL A,Ri(i=0,1), 累加器内容逻辑异或内RAM内容或SFR,XRL A,direct,上页,下页,回目录, 累加器内容逻辑异或内RAM或SFR,XRL direct,A, 立即数逻辑异或RAM或SFR

36、,XRL direct,#data,上页,下页,回目录,XRL类传送指令小结,上页,下页,回目录,例:根据累加器中40的状态修改P1端口位40的状态,ANL A,#00011111B,ANL P1,#11100000B,ORL P1,A,;A屏蔽前3位,保留后5位,;A的后5位是“1”, 使P1口 相应位置“1”,P1前3位不变,;P1屏蔽后5位,保留前3位,上页,下页,回目录,仅修改了 P1 口的后 5 位,“读”“修改”“写”,4 累加器清除与求反指令(2条), 累加器A清零,CLR A, 累加器A按位取反,CPL A,上页,下页,回目录,4 移位指令(4条), 累加器内容循环左移一位,R

37、L A, 累加器内容连同进位标志循环左移一位,RLC A,CY,上页,下页,回目录, 累加器内容循环右移一位,RR A, 累加器内容连同进位标志循环右移一位,RRC A,CY,上页,下页,回目录,移位指令小结,累加器清除与求反指令小结,上页,下页,回目录,例:设(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,0,0,上页,下页,回目录,四、控制转移指令(17条),控制转移指令共有17条:,无条件转移指令,条件转移指令,子程序的调用返回等,上页

38、,下页,回目录,1、无条件转移指令, 长转移,LJMP addr16, 绝对转移,AJMP addr11,AJMP 将程序存储器分为32个区,由PC1511决定,每个区2KB,分8页,由A10A9A8决定。 只能在区内跳转。,转移范围 2KB,转移范围 64KB,上页,下页,回目录,在2区形成 11位目标地址,. . .,1000H 17FFH,保持高5位地址以确定某区,0 0 0 1 0,例如 AJMP add11 在2区的执行过程,2KB 范围内,00001, 短转移,SJMP rel,指令中的rel是8位带符号补码,范围-128+127。,上页,下页,回目录, 间接长转移,JMP A+D

39、PTR,上页,下页,回目录,无条件转移指令小结,上页,下页,回目录,(散转指令),4.3.3 分支程序设计,根据前面程序运行结果,可以有N种选择,并转向其中任一处程序。,例4-10 128路分支程序:根据R3值转向128个目的地址。,编程方法:顺序程序 MOV A,R3 CJNE A,#00H,FZ1 AJMP FZ00 FZ1: CJNE A,#01H,FZ2 AJMP FZ01 FZ2: CJNE A,#02H,FZ3 AJMP FZ02 FZ3: ,烦琐,程序太长。如作10000个分支程序.,JMP128: MOV A,R3 CLR C SUBB A,#128 JNC ERROR MOV

40、 A ,R3 RL A MOV DPTR,#PRGTAL JMP A+DPTR PRGTAL: AJMP ROUT00 AJMP ROUT01 . AJMP ROUT7F,;入口条件检查,;分支跳转,;AJMP指令占2字节,例4-10:P127 128分支程序设计。 使用 JMP A+DPTR指令实现之。,分支程序应用场所: 1、键盘按键处理程序 根据所按功能键转到相应的功能子程序 2、通信协议处理程序,例:某键盘如下:,MOV A,B CLR C SUBB A,#3 JC FOUN RET FOUN:MOV A,B RL A ADD A,B MOV DPTR,#KEYF JMP A+DPTR

41、 KEYF:LJMP TONGXIN LJMP BIANHAO LJMP CAIYANG,;键编号,则顺序执行,2、条件转移指令, 累加器为零则转移,JZ rel,JNZ rel, 累加器不为零则转移,上页,下页,回目录,则转移,则顺序执行,则转移,例:何时转LABEL1、何时转LABEL2?MOV A,R0 CPL A JZ LABEL1 INC A JZ LABEL2 。, 累加器与立即数不等则转移,CJNE A,#data,rel, 寄存器与立即数不等则转移,CJNE Rn,#data,rel,上页,下页,回目录,顺序,转移,转移,顺序, 累加器与内RAM或SFR不等则转移,CJNE A

42、,direct,rel, 内RAM与立即数不等则转移,CJNE Ri,#data,rel,上页,下页,回目录,顺序,转移,转移,顺序, 寄存器减“1”不等零则转移,DJNZ Rn,rel (n=07),DJNZ direct, rel, 内RAM或SFR减“1”不为零则转移,上页,下页,回目录,顺序,转移,转移,顺序,例:阅读子程序,分析功能 FULL0: MOV R7,#100 CLR A MOV DPTR,#2000H FUL0: MOVX DPTR,A INC DPTR DJNZ R7,FUL0 RET,上页,下页,回目录,条件转移类指令小结,利用比较转移指令CJNE、减1不为“0”转移

43、指令DJNZ等实现循环程序设计。,例4-13:在内部RAM 30H4FH 连续32个单元中存放了 单字节无符号数,求32个无符号数之和,并存入内部RAM 51H,50H中。,程序的流程图如下:,上页,下页,回目录,流程图:,31R7 #0R3 (30H)A #31HR0,CY=0?,END,START,(R7)-1=0?,51H(R3) 50H (A),Y,N,(A)+(R0)A,(R0+1)R0,(R3)+1R3,上页,下页,回目录,N,Y,程序:,;取被加数,;R0作加数地址指针,;CY=0,和256,则转,;作加法,;CY=1,加到高字节,;修改R0指针,;未完,重复加,;存和数,初始化

44、部分,循环体部分,结束部分,上页,下页,回目录,循环执行 直到R7=0,循环 控制,3、子程序调用及返回指令, 长调用,LCALL addr16,;在调用子程序之前,保护断点地址,上页,下页,回目录, 绝对调用,ACALL addr11,; 在调用子程序之前,保护断点地址,上页,下页,回目录, 子程序返回,RET, 中断返回,RETI,上页,下页,回目录,“0”触发器,优先级状态,4、空操作,NOP,上页,下页,回目录,子程序调用及返回指令小结,上页,下页,回目录,主程序:,子程序:,不需主程序提供入口参数,从子程序开始到子程序返回,大约为20ms,例4-23 调用延时子程序DELY,子程序开

45、始的标号,子程序返回指令,调用子程序,上页,下页,回目录,982=196s,1s,1s,设:主频为12MHZ,2s,(196+2+2) 100,+3,=20003s = 20.003ms,2s,1s,+3,利用软件延时,使P1.0接口上的发光二极管每隔0.5秒闪烁一次. 1、硬件设计 2、软件设计,子程序调用的现场保护,现场保护: 如果子程序使用的寄存器与主程序使用的寄存器 有冲突,在转入子程序前,特别是进行中断服务 子程序时,要进行现场保护。,保护内容: 内部 RAM 内容, 各工作寄存器内容, 主程序正在使用 累加器 A 、B DPTR PSW,保护方式: 将要保护的单元压入堆栈。 还可以

46、用 RS1 RS0 来选择其他通 用寄存器组,以便保护主程序现场。,上页,下页,回目录,例如:某子程序的现场保护,推入与弹出应按照“先进后出”,或“后进先出”的顺序,上页,下页,回目录,五、布尔处理类指令(17条),指令中位地址的助记符有多种表达方式:,直接地址方式:如 0D5H,点操作符方式:如 PSW.5,位名称方式: 如 F0,上页,下页,回目录,1、布尔传送类, 直接寻址位送进位标志,MOV C,bit, 进位标志送直接寻址位,MOV bit, C,上页,下页,回目录,2、布尔状态控制指令, 清进位标志,CLR C, 清直接寻址位,CLR bit,上页,下页,回目录, 置进位标志,SETB C, 置直接寻址位,SETB bit,上页,下页,回目录, 进位标志求反,CPL C, 直接寻址位求反,CPL bit,上页,下页,回目录,3、布尔逻辑运算指令, 进位标志逻辑与直接寻址位,ANL C,bit, 进位标志逻辑与直接寻址位的反码,ANL C,/bit,上页,下页,回目录, 进位标志逻辑或直接寻址位,ORL C,bit, 进位标志逻辑或直接寻址位的反码,ORL C,/bit,上页,下页,回目录,4、布尔条件转移指令, 进位标志为“1”则转移,JC rel,JNC rel, 进位标志为“0”则转移,上页,下页,回目录, 直接寻址位为“1”则

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

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1