单片机汇编指令精.ppt
《单片机汇编指令精.ppt》由会员分享,可在线阅读,更多相关《单片机汇编指令精.ppt(97页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、单片机片机汇编指令指令第1页,本讲稿共97页项目引入项目引入1.项目描述利用P1口外接的8只LED发光二极管模拟彩灯。2.硬件电路与工作原理让学生根据任务分析硬件要求,画出具体电路,并在实验开发板上接线3.程序设计(给出控制程序)8051第2页,本讲稿共97页开始55H送P1口延时0.3秒AAH送P1口延时0.3秒流水式彩灯控制程序框图第3页,本讲稿共97页控制程序ORG 0000H LOOP:MOV P1,#55H ;将立即数55H送P1端口LCALL TIME ;调延时子程序TIMEMOV P1,#0AAH ;将立即数AAH送P1端口LCALL TIME ;调延时子程序TIMESJMP L
2、OOP ;转移到LOOPTIME:MOV R6,#200 ;延时子程序TIMETIME1:MOV R7,#200 TIME2:NOPNOPNOPDJNZ R7,TIME2DJNZ R6,TIME1RETEND第4页,本讲稿共97页高级语言:汇编语言:机器语言:用二进制代码表示指令和数据。用助记符表示指令操作功能,用标号表示操作对象。独立于机器,面向过程,接近自然语言和数学表达式.2.2.1 1 汇编语言与指令系统简介汇编语言与指令系统简介 一、汇编语言程序设计的意义一、汇编语言程序设计的意义什么是程序?什么是程序?完成某项特定任务的指令的集合。完成某项特定任务的指令的集合。计算机按程序一条一条
3、地依次执行指令,从而完成指定任务。计算机按程序一条一条地依次执行指令,从而完成指定任务。要让计算机完成各项任务,就应设计各种程序。要让计算机完成各项任务,就应设计各种程序。程序设计语言:程序设计语言:第5页,本讲稿共97页汇编语言程序的每一条语句都与计算机的某一条指令对应,所以必需熟悉指令系统。指令=操作码+操作数操作码表示了该指令所能执行的操作功能。操作数表示参加操作的数的本身或操作数所在的地址。MCS-51指令格式:标号是程序员根据编程需要给指令设定的符号地址,可有可无;标号由18个字符组成,第一个字符必须是英文字,不能是数字或其它符号;标号后必须用冒号。标号:操作码助记符第一操作数,第二
4、操作数;注释第6页,本讲稿共97页操作码表示指令的操作种类,如MOV表示数据传送操作,ADD表示加法操作等。操作数或操作数地址表示参加运算的数据或数据的有效地址。操作数一般有以下几种形式:没有操作数项,操作数隐含在操作码中,如RET指令;只有一个操作数,如CPL A指令;有两个操作数,如MOV A,#00H指令,操作数之间以逗号相隔;有三个操作数,如CJNE A,#00H,NEXT指令,操作数之间也以逗号相隔。注释是对指令的解释说明,用以提高程序的可读性;注释前必须加分号。第7页,本讲稿共97页二、MCS-51系列单片机的指令系统111条指令,共分五大类:数据传送类;(29条)算术运算类;(2
5、4条)逻辑运算类;(24条)控制转移类;(17条)位操作类。(17条)第8页,本讲稿共97页指令中操作数的描述符号:Rn工作寄存器R0R7Ri间接寻址寄存器R0、R1Direct直接地址,包括内部128BRAM单元地址、26个SFR地址。#data8位常数#data1616位常数addr1616位目的地址addr1111位目的地址rel8位带符号的偏移地址DPTR16位外部数据指针寄存器bit可直接位寻址的位第9页,本讲稿共97页A累加器B寄存器BC进、借位标志位,或位累加器间接寄存器或基址寄存器的前缀/指定位求反(x)x地址单元中的内容(x)x地址单元中的内容为地址的单元中的内容当前指令的地
6、址第10页,本讲稿共97页三、三、寻 址址 方方 式式操操作作数数是是指指令令的的重重要要组组成成部部分分,指指出出了了参参与与操操作作的的数数据据或或数数据据的的地地址址。寻寻找找操操作作数数地地址址的的方方式式称称为为寻寻址址方方式式。一一条条指指令令采采用用什什么么样样的的寻址方式,是由指令的功能决定的。寻址方式越多,指令功能就越强。寻址方式,是由指令的功能决定的。寻址方式越多,指令功能就越强。MCS-51指令系统共使用了指令系统共使用了7种寻址方式,包括寄存器寻址、直接种寻址方式,包括寄存器寻址、直接寻址、立即数寻址、寄存器间接寻址、变址寻址、相对寻址和位寻址寻址、立即数寻址、寄存器间
7、接寻址、变址寻址、相对寻址和位寻址。第11页,本讲稿共97页1.寄存器寻址寄存器寻址是指将操作数存放于寄存器中,寄存器包括工作寄存器R0R7、累加器A、通用寄存器B、地址寄存器DPTR等。例如,指令MOVR1,A的操作是把累加器A中的数据传送到寄存器R1中,其操作数存放在累加器A中,所以寻址方式为寄存器寻址。如果程序状态寄存器PSW的RS1:RS0=01(选中1组工作寄存器,对应地址为08H0FH),设累加器A的内容为20H,则执行MOVR1,A指令后,内部RAM09H单元的值就变为20H,如图2.1所示。第12页,本讲稿共97页 采用寄存器寻址的指令如下:MOV P1,A;将累加器A的内容送
8、 到P1口 MOV P1,R4 ;将寄存器R4的内容送到P1口 CLR A;将累加器A清0 CPL A;将累加器A中的内容取反 RL A;将累加器A的内容循环左移第13页,本讲稿共97页图图2.1 寄存器寻址示意图寄存器寻址示意图 第14页,本讲稿共97页2.直接寻址直接寻址是指把存放操作数的内存单元的地址直接写在指令中。在MCS-51单片机中,可以直接寻址的存储器主要有内部RAM区和特殊功能寄存器SFR区。例如,指令MOVA,3AH执行的操作是将内部RAM中地址为3AH的单元内容传送到累加器A中,其操作数3AH就是存放数据的单元地址,因此该指令是直接寻址。设内部RAM3AH单元的内容是88H
9、,那么指令MOVA,3AH的执行过程如图2.2所示。第15页,本讲稿共97页 图图2.2 直接寻址示意图直接寻址示意图 采用直接寻址的指令如下:MOVP1,20H;将20H单元的内容传送到P1口第16页,本讲稿共97页3.立即数寻址立即数寻址是指将操作数直接写在指令中。例如,指令MOVA,#3AH执行的操作是将立即数3AH送到累加器A中,该指令就是立即数寻址。注意:立即数前面必须加“#”号,以区别立即数和直接地址。该指令的执行过程如图2.3所示。第17页,本讲稿共97页图图2.3 立即数寻址示意图立即数寻址示意图第18页,本讲稿共97页采用立即数寻址的指令如下:MOV20H,#55;将立即数5
10、5H送20H单元MOVA,#0F0H;将立即数0F0H送累加器AMOV R4,#0FH;将立即数0FH送寄存器R4中MOVR0,#20H;将立即数20H送寄存器R0口第19页,本讲稿共97页ANDA,#0FH;累加器A的内容与立即数0FH进行逻辑与操作ORA,#0F0H;累加器A的内容与立即数0F0H进行逻辑或操作MOVA,#01H;将立即数01H送累加器A中MOVA,#55H;将立即数55H送累加器A中第20页,本讲稿共97页 4.寄存器间接寻址 寄存器间接寻址是指将存放操作数的内存单元的地址放在寄存器中,指令中只给出该寄存器。执行指令时,首先根据寄存器的内容,找到所需要的操作数地址,再由该
11、地址找到操作数并完成相应操作。在MCS-51指令系统中,用于寄存器间接寻址的寄存器有R0、R1和DPTR,称为寄存器间接寻址寄存器。注意:间接寻址寄存器前面必须加上符号“”。例如,指令MOVA,R0执行的操作是将R0的内容作为内部RAM的地址,再将该地址单元中的内容取出来送到累加器A中。第21页,本讲稿共97页设设R0=3AH,内内部部RAM 3AH中中的的值值是是65H,则则指指令令MOV A,R0的的执执行行结结果果是是累累加加器器A的的值值为为65H,该该指指令令的的执执行行过过程程如如图图2.4所示。所示。第22页,本讲稿共97页图图2.4 寄存器间接寻址示意图寄存器间接寻址示意图第2
12、3页,本讲稿共97页5.变址寻址变址寻址变址寻址是指将基址寄存器与变址寄存器的内容相加,结果作为操作数的地址。DPTR或PC是基址寄存器,累加器A是变址寄存器。该类寻址方式主要用于查表操作。例如,指令MOVC A,A+DPTR执行的操作是将累加器A和基址寄存器DPTR的内容相加,相加结果作为操作数存放的地址,再将操作数取出来送到累加器A中。设累加器A=02H,DPTR=0300H,外部ROM中,0302H单元的内容是55H,则指令MOVC A,A+DPTR的执行结果是累加器A的内容为55H。该指令的执行过程如图2.5所示。第24页,本讲稿共97页图图2.5 变址寻址示意图变址寻址示意图第25页
13、,本讲稿共97页 6.相对寻址相对寻址是指程序计数器PC的当前内容与指令中的操作数相加,其结果作为跳转指令的转移地址(也称目的地址)。该类寻址方式主要用于跳转指令。例如,指令SJMP54H执行的操作是将PC当前的内容与54H相加,结果再送回PC中,成为下一条将要执行指令的地址。设指令SJMP54H的机器码80H,54H存放在2000H处,当执行到该指令时,先从2000H和2001H单元取出指令,PC自动变为2002H;再把PC的内容与操作数54H相加,形成目标地址2056H,再送回PC,使得程序跳转到2056H单元继续执行。该指令的执行过程如图2.6所示。第26页,本讲稿共97页图图2.6 相
14、对寻址示意图相对寻址示意图第27页,本讲稿共97页7.位寻址位寻址是指按位进行的寻址操作,而上述介绍的指令都是按字节进行的寻址操作。MCS-51单片机中,操作数不仅可以按字节为单位进行操作,也可以按位进行操作。当我们把某一位作为操作数时,这个操作数的地址称为位地址。位寻址区包括专门安排在内部RAM中的两个区域:一是内部RAM的位寻址区,地址范围是20H2FH,共16个RAM单元,位地址为00H7FH;二是特殊功能寄存器SFR中有11个寄存器可以位寻址,参见有关章节中位地址定义。第28页,本讲稿共97页例如,指令SETB3DH执行的操作是将内部RAM位寻址区中的3DH位置1。设内部RAM27H单
15、元的内容是00H,执行SETB3DH后,由于3DH对应内部RAM27H的第5位,因此该位变为1,也就是27H单元的内容变为20H。该指令的执行过程如图2.7所示。第29页,本讲稿共97页图图2.7 位寻址示意图位寻址示意图第30页,本讲稿共97页2 2-2 -2 数据传送类指令数据传送类指令一、内部RAM数据传送类1、一般数据传送指令片外程序存储器ROMEPROM特殊功能寄存器SFR片内RAM128字节片外数据存储器RAMMOVCMOVXMOVPUSHPOPXCHXCHD第31页,本讲稿共97页数据传送指令是MCS-51单片机汇编语言程序设计中使用最频繁的指令,包括内部RAM、寄存器、外部RA
16、M以及程序存储器之间的数据传送。数据传送操作是指把数据从源地址传送到目的地址,源地址内容不变。数据目的地址源地址第32页,本讲稿共97页 1.内部8位数据传送指令(15条)内部8位数据传送指令共15条,主要用于MCS-51单片机内部RAM与寄存器之间的数据传送。指令基本格式:MOV,第33页,本讲稿共97页回忆前述操作数描述符:A,direct,Rn,Ri,#data,DPTR等。经排列组合可写出下列指令:MOVA,Rn;ARn以下类似。MOVA,directMOVA,RiMOVA,#dataMOVRn,ARnAMOVRn,directMOVRn,#data第34页,本讲稿共97页MOVdir
17、ect,RnMOVdirect,directMOVdirect,RiMOVdirect,#dataMOVRi,A(Ri)AMOVRi,directMOVRi,#dataMOVDPTR,#data16;唯一的16位数据传送指令。上述指令不影响任何标志位,但PSW的P位除外。(direct)AMOVdirect,A;第35页,本讲稿共97页上述指令不影响任何标志位,但PSW的P位除外。注意:MOVRn,RnMOVRi,RiMOVRn,RiMOV#data,A等等指令是非法指令。哇!好容易出错啊!第36页,本讲稿共97页例2.1已知相应单元的内容如下,请指出每条指令执行后相应单元内容的变化。累加器A
18、40H寄存器R050H内部RAM:40H30H内部RAM:50H10H第37页,本讲稿共97页(1)MOVA,#20H(2)MOVA,40H(3)MOVA,R0(4)MOVA,R0解:(1)MOVA,#20H执行后A=20H。(2)MOVA,40H执行后A=30H。(3)MOVA,R0执行后A=50H。(4)MOVA,R0执行后A=10H。第38页,本讲稿共97页例2.2已知相应单元的内容如下,请指出下列指令执行后各单元内容相应的变化。寄存器R050H寄存器R166H寄存器R630H内部RAM:50H60H内部RAM:66H45H内部RAM:70H40H第39页,本讲稿共97页(1)MOVA,
19、R6(2)MOVR6,70H(3)MOV70H,50H(4)MOV40H,R0(5)MOVR1,#88H解:(1)MOVA,R6执行后A=30H。(2)MOVR6,70H执行后R6=40H。(3)MOV70H,50H执行后(70H)=60H。(4)MOV40H,R0执行后(40H)=60H。(5)MOVR1,#88H执行后(66H)=88H第40页,本讲稿共97页二、外部RAM数据传送MOVXA,RiMOVXA,DPTRMOVXRi,AMOVXDPTR,A例:若DPTR=3020H,外部RAM(3020H)=48H,执行指令MOVXA,DPTR后,A=?第41页,本讲稿共97页注意:外部RAM
20、只能通过累加器A进行数据传送。累加器A与外部RAM之间传送数据时只能间接寻址方式,间接寻址寄存器为DPTR,R0,R1。以上传送指令结果通常影响程序状态字寄存器PSW的P标志。第42页,本讲稿共97页例2.3 把外部数据存储器2040H单元中的数据传送到外部数据存储器2560H单元中去。解:MOVDPTR,#2040HMOVXA,DPTR;先将2040H单元的内容传送到累加器A中MOVDPTR,#2560HMOVXDPTR,A;再将累加器A中的内容传送到2560H单元中第43页,本讲稿共97页三、字节交换指令XCHA,RnARnXCHA,directA(direct)XCHA,RiA(Ri)X
21、CHDA,Ri半字节交换,低4位交换,高4位不变 A30(Ri)30SWAPA半字节交换不影响任何标志位。第44页,本讲稿共97页四、栈操作指令PUSHdirectPOPdirect不影响任何标志位。PUSHdirect指令执行中,机器自动进行两步操作:(1)SPSP+1(2)(SP)(direct)例2.4、设SP=09H,(DPTR)=0123H,分析:执行PUSHDPLPUSHDPH后,各单元中的内容。第45页,本讲稿共97页POPdirect指令执行中,机器也自动进行两步操作:(1)(direct)(SP)(2)SP(SP)1例2.5、设SP=0BH,(0BH)=01H,(0AH)=2
22、3H执行POPDPHPOPDPL后,各单元中的内容。第46页,本讲稿共97页注意:注意:堆栈是用户自己设定的内部RAM中的一块专用存储区,使用时一定先设堆栈指针,堆栈指针缺省为SP=07H。堆栈遵循后进先出的原则安排数据。堆栈操作必须是字节操作,且只能直接寻址。将累加器A入栈、出栈指令可以写成:PUSH/POPACC或PUSH/POP0E0H而不能写成:PUSH/POPA堆栈通常用于临时保护数据及子程序调用时保护现场和恢复现场。以上指令结果不影响程序状态字寄存器PSW标志。第47页,本讲稿共97页 例2.6设堆栈指针为30H,把累加器A和DPTR中的内容压入,然后根据需要再把它们弹出,编写实现
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 汇编 指令
限制150内