指令系统与程序设计.ppt
《指令系统与程序设计.ppt》由会员分享,可在线阅读,更多相关《指令系统与程序设计.ppt(173页珍藏版)》请在课桌文档上搜索。
1、,编程:,解决问题思想,程序框图,语句,指令,汇编语言及程序设计(第三章、第四章),指令系统:CPU所能执行的全部指令集合,3.1 指令系统概述,一条指令是计算机中具有特定功能的操作命令,程序与程序设计,按预定要求编排的指令序列称为程序。编排的过程称为程序设计,机器语言,二进制代码,是机器唯一能直接识别、执行的语言。,汇编语言:,指令助记符。用助记符,操作数,标号编写的程序称为汇编语言源程序。,一、汇编语言,汇编语言 机器语言 机器执行,程序设计语言,汇编语言,高级语言(PLM;Keil Cx51),翻译,汇编:完成由汇编语言到机器代码的过程,汇编的方法有两种:自动汇编、手工汇编,由机器代码到
2、汇编语言的过程叫反汇编,汇编语言源程序,机器语言,汇编程序,反汇编程序,上页,下页,回目录,自动汇编:将输入到计算机中的源程序,由机器中一个软件将其翻译成机器代码的过程。这个翻译软件称为汇编程序。,二、汇编语言的格式,标号:操作码 操作数;注释,如:MAIN:MOV SP,#60H;设堆栈指针,1、标号,标号是该指令的符号地址,可根据需要设定,必须以字母开始,以“:”结束,长度不超过8个字符,系统中的保留字符不能作标号,如:SFR名、ADD等,标号可被其他语句的操作数可直接引用源程序中,一个标号只能定义一个语句,不能相重,保持一义性,上页,下页,回目录,一个汇编语句分为四个区段:,2、操作码,
3、由指令系统的助记符、伪指令助记符组成。,操作码指出该指令将进行何种操作,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的起始地址为8000H,伪指令DB定义了8000H800
5、3单元的内容依次为:,(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,汇编后:,(8004H)=00H,上页,下页,回目录,5、定义空间命令 DS,格
6、式:,功能:,标号:DS 数据或字符及表达式,例:,(8008H)=30H,(8009H)=8AH,从指定单元地址开始,由数据或字符及表达式的值来定义应保留的单元数,备用,即:8000H8007H单元保留备用,定义空间,上页,下页,回目录,6、等值命令 EQU,格式:,字符名称 EQU 数据或汇编符号,功能:,将一个数据或汇编符号赋予标号段规定的字符,例:,JIASHU EQU 30HBEIJIA EQU 31HHE EQU 32H,上页,下页,回目录,7、数据地址赋值命令 DATA,格式:,字符名称 DATA 数据或表达式,功能:,此命令把数据/代码地址赋予标号段所规定的字符名称。定义的字符
7、名称可先使用后定义,INDEXJ DATA 8389H,;INDEXJ这个字符名称的地址为8389H,例:,上页,下页,回目录,等价于,EQU与 DATA的区别,(1)DATA与EQU相似,但DATA定义的字符名称,可先使用后定义,EQU则不能,(2)EQU指令可把汇编符号赋给字符名称,DATA则不能,(3)DATA可把表达式的值赋给字符名称,EQU则不能,DATA常在程序中定义数据地址EQU常在程序中定义字符数据,上页,下页,回目录,8、位地址符号命令 BIT,格式:,字符名称 BIT 位地址,功能:,把位地址赋予一标号,;P1.0,P2.0位地址赋予字符A1、A2,在编程时可以直接把 A1
8、、A2 当成位地址使用,上页,下页,回目录,三、MCS-51指令系统的特点,1、执行速度快,存储效率高,MCS-51指令系统共有111条指令,按字节分,单字节指令49条,双字节指令45条,三字节指令17条,按周期分,单周期指令64条,双周期指令45条,四周期指令2条,设时钟频率为12MHz,则指令执行的时间分别为:,1s 58,2s 40,4s 2,影响程序存储器,影响系统实时性,上页,下页,回目录,2、指令易掌握,功能强,3、适合于控制、智能仪表,布尔处理机,可进行“位”操作。,上页,下页,回目录,四、寻址方式(7种),立即寻址,直接寻址,寄存器寻址,寄存器间接寻址,基址寄存器加变址寄存器间
9、接寻址,相对寻址,位寻址,上页,下页,回目录,数据传送(29条),算术运算(24条),逻辑运算(24条),控制转移(17条),布尔处理(17条),上页,下页,回目录,介绍描述指令符号的意义,当前选中的寄存器区的8个工作寄存器(R0R7),Rn,Ri,direct,-8位内部RAM单元地址 00H7FH,专用特殊功能寄存器SFR的地址80HFFH,立即数(8位),#data,#data16,立即数(16位),当前选中的寄存器区中可做间址寄存器的2个 工作寄存器(R0、R1)i=0、1,n=07,上页,下页,回目录,addr16,16位目的地址,用于LCALL、LJMP指令 地址范围64KB RO
10、M空间,addr11,11位目的地址,用于ACALL、AJMP指令 地址范围2KB ROM空间,rel,DPTR,数据地址指针,可做16位间址寄存器,bit,内部RAM或SFR中的直接位寻址,上页,下页,回目录,C,位累加器(PSW.7),进位/借位标志,间址或基址寄存器前缀,如 Ri,A+DPTR,/,位操作的前缀,表示对该位操作数取反,(X),X中的内容,((X)),由X寻址的单元中的内容,箭头左边的内容被箭头右边的内容所代替,DPTR,A+PC,上页,下页,回目录,3.2 MCS-51指令的寻址方式,用何种方式寻找指令的操作数或指令的执行地址,1、立即寻址,寻址空间:,指令形式:,程序存
11、储器,指令操作数以指令形式存放在程序存储器中.,即:操作码后面的一个字节是实际操作数,立即寻址:,用何种方式寻找,OP#data,上页,下页,回目录,指令的寻址方式:,指令的寻址方式:,MOV A,#30H,例1:,操作码,立即数,MOV DPTR,#8000H,例2:,操作码,立即数的高8位,立即数的低8位,80H,00H,上页,下页,回目录,2、直接寻址,寻址空间:,指令的三种形式:,直接寻址,直接寻址是访问 SFR 的唯一方法,上页,下页,回目录,00H7FH80HFFH,CPU内部,上页,下页,回目录,MOV A,30H,例1:,操作数地址,ANL 30H,#30H,例2:,3、寄存器
12、寻址,寻址空间:,指令的三种形式:,实际操作数是当前选定的寄存器的内容,MOV A,R3,例1:,ADD A,R3,例2:,寄存器寻址:,上页,下页,回目录,4、寄存器间接寻址,寻址空间:,指令的三种形式:,寄存器间接寻址:,指令选定的寄存器内容就是实际,的操作数地址,操作数地址由寄存器间接给出,上页,下页,回目录,MOV R0,A,例1:,;累加器传送指令,上页,下页,回目录,MOV R0,#30H,5、基址寄存器加变址寄存器间接寻址(变趾寻趾),基址寄存器加变址寄存器间接寻址:,以DPTR或PC作基址寄存器,A作变址寄存器两者相加形成操作数地址。,寻址空间:,程序存储器(A+DPTR、A+
13、PC),指令形式:,上页,下页,回目录,MOV DPTR,#2400HMOV A,#0FHMOVC A,A+DPTR,例:,“读”,“读”,MOVC A,A+DPTR,上页,下页,回目录,6、相对寻址,程序存储器,用于程序控制,寻址空间:,指令的三种形式:,相对寻址,以当前PC值为基准地址,加上指令的偏移量“rel”,结果为目标地址。rel为有符号补码数,范围:-128+127,一般为双字节或三字节指令,上页,下页,回目录,JNZ rel,例:,;累加器A不等零则转移 设:rel=23H,(PC)=2002H,rel=23H,修正后转移目标地址D(PC)=2025H,上页,下页,回目录,(PC
14、)=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条,按操作功能分类:,数据传送类,算术运算类,逻辑运算类,控制转移类,布尔处理类,上页,下页,回目录,111条基本指令衍生出255种指令代码00H0FFH(0A5H没有定义),例如:MOV A,Rn(n:07)对应指令代码:E
15、8HEFH,学习指令要点:1、掌握指令操作;2、掌握指令的寻址方式;3、掌握指令对程序状态字(PSW)的影响;4、合理使用指令。,一、数据传送类(29条),用到的指令助记符有5种:,片内传送 MOV,片外传送 MOVX,查表传送 MOVC,累加器交换 XCH、XCHD、SWAP,堆栈操作 PUSH、POP,上页,下页,回目录,一般的操作是把源操作数传送到目的操作数。指令执行后,源操作数不变,目的操作数修改为源操作数。,数据传送指令不影响PSW各位(奇偶位除外),只有堆栈操作可直接修改PSW。,1、MOV类传送指令,格式:MOV 目的字节 源字节,功能:把源字节内容送目的字节,源字节内容不变,以
16、累加器A为目的字节的传送:,立即数送累加器,MOV A,#data,;立即数#data送累加器A,上页,下页,回目录,寄存器内容送累加器,MOV A,Rn(n=07),内部RAM或SFR内容送累加器,MOV A,direct,;Rn的内容送累加器A,;以direct为地址的单元的内容送累加器A,上页,下页,回目录,例:MOV R0,#30H 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为目的字节的传
17、送:,立即数送寄存器,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=07),如:MOV R1,30H;MOV R2,60H,;以direct为地址的单元的内容送寄存器Rn,上页,下页,回目录,如:MOV R0,A;MOV R5,A,立即数送内部RAM或SFR,MOV direct,#data,;立即数#data送以direct为地址的单元,如:MOV
18、30H,#45;(30H)45,累加器内容送内部RAM或SFR,MOV direct,A,;累加器送以direct为地址的单元,如:MOV 45H,A;(45H)A,直接地址为目的字节的传送:,寄存器内容送内部RAM或SFR,MOV direct,Rn(n=07),;寄存器Rn内容送以direct为地址的单元,如:MOV 56H,R6;56H(R6),内部RAM或SFR之间直接传送,MOV direct1,direct2,;内部RAM或SFR任意两个单元之间传送数据,例:MOV 30H,31H;30H(31H),上页,下页,回目录,内部RAM数据送内部RAM或SFR,MOV direct,Ri
19、(i=0、1),例:MOV 20H,R0;20H(R0),;以Ri内容为地址单元中的数送内RAM或SFR,立即数送内部RAM,MOV Ri,#data(i=0、1),;立即数#data送以Ri内容为地址的单元,例:MOV R1,#30;(R1)#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
20、位立即数传送指令,MOV DPTR,#data16,;16位立即数送DPTR中,设置地址指针。,例:MOV DPTR,#3000H;DPH#30H;DPL#00H,上页,下页,回目录,MOV类传送指令小结,上页,下页,回目录,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单元的内容传送
21、到片内RAM 地址为80H、81H单元中。,MOV R0,#80HMOV R0,30HMOVR0,#81HMOV R0,31H,例:将片内RAM 地址为80H、81H单元的内容传送到片内RAM 地址为90H、91H单元中。,MOV R0,#81HMOV A,R0MOVR1,#91HMOV R1,A,MOV R0,#80H;指向源地址MOV A,R0;取出数据,MOVR1,#90H;指向目的地址MOV R1,A;进行数据传送,属于简单程序的设计,其特点:,既无分支,又无循环,按照顺序执行,可完成一定的基本功能,是编写复杂程序的基础,高128字节存储器的数据传送,采用间接寻址方式,2、MOVX类传
22、送指令,累加器A与外部RAM传送数据用 MOVX,外部RAM内容送累加器A,MOVX A,Ri(i=0、1),例:MOV P2,#30H MOV R0,#00H 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 DP
23、TR,A,;累加器内容送以DPTR内容为地址的外部RAM单元,例:将3000H内容送入3100H中 MOV DPTR,#3000H MOVX A,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为程序存储器传送指令,均为基址加变址寄存器寻址。
24、,MOVC A,A+DPTR,以DPTR作基址加变址寻址,上页,下页,回目录,长查表指令,MOVC A,A+PC,以PC作基址加变址寻址,上页,下页,回目录,短查表指令,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的平方表 EN
25、D,ORG 0000H LJMP MAIN ORG 0030HMAIN:MOV SP,#60H,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,#5
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 指令系统 程序设计
链接地址:https://www.desk33.com/p-250579.html