第3章_MCS-51单片机指令系统.ppt

上传人:文库蛋蛋多 文档编号:2247793 上传时间:2023-02-06 格式:PPT 页数:46 大小:1.78MB
返回 下载 相关 举报
第3章_MCS-51单片机指令系统.ppt_第1页
第1页 / 共46页
第3章_MCS-51单片机指令系统.ppt_第2页
第2页 / 共46页
第3章_MCS-51单片机指令系统.ppt_第3页
第3页 / 共46页
第3章_MCS-51单片机指令系统.ppt_第4页
第4页 / 共46页
第3章_MCS-51单片机指令系统.ppt_第5页
第5页 / 共46页
点击查看更多>>
资源描述

《第3章_MCS-51单片机指令系统.ppt》由会员分享,可在线阅读,更多相关《第3章_MCS-51单片机指令系统.ppt(46页珍藏版)》请在三一办公上搜索。

1、【学习目的和要求】了解MCS-51单片机的汇编指令格式、指令的分类和寻址方式;掌握指令的含义、功能和用途;掌握MCS-51汇编语言编程的基本方法;熟练地使用MCS-51单片机指令编制一些简单的程序。,第3章 MCS-51单片机指令系统,第3章 MCS-51单片机指令系统,3.1汇编语言的格式,计算机工作的基本原理是存储程序并执行程序,而程序则由能实现某种功能的指令序列构成。编写程序时使用的程序设计语言有三种:机器语言、汇编语言和高级语言汇编语言是用助记符来表示机器指令的一种程序设计语言 其语句格式如下:标号:操作码 操作数;注释 操作码:规定指令进行什么操作 操作数:指令操作的对象,单字节指令

2、 操作码、操作数 同在一个字节中 双字节指令 由两个字节组成:操作码+操作数(或操作数所在的地址)操作数可以是立即数、直接地址和寄存器等。三字节指令 由三个字节组成:操作码+操作数+操作数,第3章 MCS-51单片机指令系统,MCS-51单片机的指令格式按字节长度可分为,无操作数的单字节指令 含有寄存器编号的单字节指令,3.2 寻址方式,第3章 MCS-51单片机指令系统,寻址方式就是在指令中说明操作数所在地址的方法共7种寻址方式:立即寻址 直接寻址 寄存器寻址 寄存器间接寻址 基寄存器加变址寄存器间接寻址 相对寻址 位寻址,第3章 MCS-51单片机指令系统,立即寻址,直接寻址,寄存器寻址,

3、第3章 MCS-51单片机指令系统,寄存器间接寻址,变址寻址,相对寻址,MCS-51的基本指令共111条,按指令所占的字节来分(1)单字节指令49条;(2)双字节指令45条;(3)三字节指令17条。按指令的执行时间来分:(1)1个机器周期(12个时钟振荡周期)指令64条(2)2个机器周期(24个时钟振荡周期)指令45条(3)4个机器周期(48个时钟振荡周期)乘、除两条指令 12MHz晶振:机器周期为1s,3.3 指令系统,3.3.1指令分类,第3章 MCS-51单片机指令系统,按指令的功能,MCS-51指令系统可分为下列五类:1.数据传送类(28条)2.算术运算类(24条)3.逻辑操作类(25

4、条)4.位操作类(17条)5.控制转移类(17条),第3章 MCS-51单片机指令系统,在分类介绍之前,先描述一下指令符号的意义 Rn 当前工作寄存器区中的工作寄存器R0 R7,n=07 Ri 当前寄存器区中可作间接寻址寄存器的2个寄存器 R0、R1(i=0,1),间接寻址的RAM单元(0255)direct 直接地址,即8位的内部RAM或特殊功能寄存器地址#data 指令中的8位立即数#data16指令中的16位立即数addr16 16位目标地址,用于LCALL和LJMP指令addr11 11位目标地址,用于ACALL和AJMP指令,第3章 MCS-51单片机指令系统,rel 相对转移指令中

5、的偏移量,为8位的带符号补码数DPTR 数据指针,用作16位的数据地址寄存器 A 累加器 B 特殊功能寄存器,专用于乘(MUL)和除(DIV)指令 C(或Cy)进位标志或位累加器 bit 内部数据RAM或特殊功能寄存器中的直接寻址位 间接寻址寄存器前缀(X)X中的内容(X)由X寻址的单元内容 位取反 箭头右边的内容被箭头左边的内容所取代,3.3.2数据传送类指令,第3章 MCS-51单片机指令系统,数据传送指令一般的操作是把源操作数传送到指令所指定的目标地址,指令执行后,源操作数不变,目的操作数被源操作数所代替。,第3章 MCS-51单片机指令系统,1.内部数据存储器间数据传送指令,立即寻址,

6、MOV,,操作码助记符 目的操作数 源操作数 功能注释 机器代码(H)MOV A,data;(A)data 74 data MOV direct,data;(direct)data 75 direct data MOV Ri,data;(Ri)data 7677 data MOV Rn,data;(Rn)data 787F data MOV DPTR,data16;(DPTR)data16 90 data15-data0,该指令能实现内部RAM之间、特殊功能寄存器之间或特殊功能寄存器与内部RAM直接数据传送,(2)寄存器寻址 MOV direct,A;(direct)(A),F5 direct

7、 MOV Ri,A;(Ri)(A),F6F7 MOV Rn,A;(Rn)(A),F8FF MOV A,Rn;(A)(Rn),E8EF MOV direct,Rn;(direct)(Rn),888F direct(3)直接寻址 MOV A,direct;(A)(direct),E5 direct MOV Rn,direct;(Rn)(direct),A8AF direct MOV Ri,direct;(Ri)(direct),A6A7 direct MOVdirect2,direct1;(direct2)(direct1),85direct1 direct2(4)寄存器间接寻址 MOV A,Ri

8、;(A)(Ri),E6E7 MOV direct,Ri;(direct)(Ri),8687 direct,第3章 MCS-51单片机指令系统,2.外部数据存储器数据传送指令 由DPTR内容指示外部数据存储器地址 MOVX A,DPTR;(A)(DPTR),E0 MOVX DPTR,A;(DPTR)(A),F0 由Ri内容指示外部数据存储器地址 MOVX A,Ri;(A)(Ri),E2E3 MOVX Ri,A;(Ri)(A),F2F3【例 3-1】设外部RAM(0203H)=FFH,分析以下指令执行后的结果。MOV DPTR,0203H;(DPTR)0203H,90 02 03 MOVXA,DP

9、TR;(A)(DPTR),E0 MOV 30H,A;(30H)(A),F5 30 MOV A,0FH;(A)0FH,74 0F MOVXDPTR,A;(DPTR)(A),F0 执行结果为:(DPTR)=0203H,(30H)=FFH,(0203H)=(A)=0FH。,MOVX,,第3章 MCS-51单片机指令系统,3.程序存储器向累加器A传送数据指令采用变址寻址方式,把程序存储器(ROM或EPROM)中存放的表格数据读出,传送到累加器A。MOVC A,A+DPTR;(A)(A)+(DPTR),93 MOVC A,A+PC;(PC)(PC)+1,(A)(A)+(PC),83【例 3-2】设(A)

10、=30H,执行指令:地址 指令 1000H MOVC A,A+PC结果为程序存储器中1031H单元的内容送入A。【例 3-3】设(DPTR)=8100H,(A)=30H,执行指令 MOVC A,ADPTR结果为程序存储器中8130H单元的内容送入累加器A。,MOVC,,第3章 MCS-51单片机指令系统,4.数据交换指令(1)字节交换指令将累加器A和源操作数内容相互交换。源操作数有寄存器寻址、直接寻址和寄存器间接寻址等。XCH A,direct;(A)(direct),C5 directXCH A,Ri;(A)(Ri)i=0,1,C6C7XCH A,Rn;(A)(Rn)n=07,C8CF(2)

11、半字节交换指令将A的低4位和R0或R1指出的RAM单元低4位相互交换,各自的高4位不变。XCHD A,Ri;(A30)(Ri)30)i=0,1,D6D7SWAP A;(A74)(A30),C4【例 3-4】设(A)=80H,(R7)=08H,执行指令:XCH A,R7;(A)(R7)结果:(A)=08H,(R7)=80H,第3章 MCS-51单片机指令系统,5.栈操作指令堆栈指针SP指出堆栈的栈顶位置(1)进栈指令指令功能是首先将栈指针SP的内容加1,然后把直接地址指出的单元内容传送到栈指针SP所指的内部RAM单元中。PUSH direct;SP(SP)+1,(SP)(direct)(2)出栈

12、指令指令功能是栈指针SP所指的内部RAM单元内容送入直接地址指出的字节单元中,栈指针SP的内容减1。POP direct;direct(SP)SP(SP)-1,第3章 MCS-51单片机指令系统,【例 3-5】设(SP)=60H,(ACC)=30H,(B)=70H,执行下列指令:PUSH ACC;SP(SP)+1,即SP 61H,61H 30H PUSH B;SP(SP)+1,即SP 62H,62H 70H 结果:(61H)=30H,(62)=70H,(SP)=62H【例 3-6】设(SP)=62H,(62H)=70H,(61H)=30H,执行下列指令:POP DPH;DPH(SP),SP(S

13、P)-1POP DPL;DPL(SP),SP(SP)-1结果:(DPTR)=7030H,(SP)=60H执行POP direct指令不影响标志,但当直接地址为PSW时,可以使一些标志改变,这也是通过指令强行修改标志的一种方法。【例 3-7】设已把PSW的内容压入栈顶,用下列指令修改PSW内容使FO,RS1,RS0均为1,最后用出栈指令把内容送回程序状态字PSW,实现对PSW内容的修改。MOV R0,SP;取栈指针ORL R0,#38H;修改栈顶内容POP PSW;修改PSW,3.3.3 算术运算类指令,第3章 MCS-51单片机指令系统,单字节加、减、乘、除法指令,是针对8位二进制无符号数;执

14、行结果将影响进位CY、辅助进位AC、溢出标志位OV;但增1和减1指令不影响上述标志;对于特殊功能寄存器,字节地址D0H或位地址D0HD7H进行操作将影响标志。,第3章 MCS-51单片机指令系统,1.加法指令 ADD A,Rn n=07 ADD A,direct ADD A,Ri i=0,1 ADD A,#data【例 3-8】设(A)=85H,(R0)=20H,(20H)=0AFH,执行指令:ADD A,R0 结果:(A)=34H;CY=1,AC=1,OV=12.带进位加法指令 ADDC A,Rn n=07 ADDC A,direct ADDC A,Ri i=0,1 ADDC A,#data

15、【例 3-9】设(A)=85H,(20H)=OFFH,CY=1,执行指令:ADDC A,20H 结果:(A)=85H;CY=1,AC=1,OV=0 P=1(A中1 的位数 为奇数),第3章 MCS-51单片机指令系统,3.带进位减法指令 SUBB A,Rn n=07 SUBB A,direct SUBB A,Ri i=0,1 SUBB A,#data 注意如果位7有借位,则CY置位,否则CY清“0”;如果位3有借位,则AC置位,否则AC清“0”;如果位6有借位而位7没有借位或者位7有借位而位6没有借位则溢出标志OV置位,否则溢出标志清“0”。,第3章 MCS-51单片机指令系统,4.增1指令

16、INC A INC Rn n=07 INC direct INC Ri i=0,1 INC DPTR【例 3-10】设(A)=0FFH,(R3)=0FH,(40H)=0F0H(R0)=30H,(30H)=00H,执行下列指令:INC A;A(A)+1 INC R3;R3(R3)+1 INC 40H;40H(40H)+1 INC R0;(R0)(R0)+1结果:(A)=00H,(R3)=10H,(40H)=F1H,(30H)=01H,PSW不变。5.减1指令 DEC A DEC Rn n=07 DEC direct DEC Ri i=0,1【例 3-11】设(A)=0FH,(R7)=19H,(3

17、0H)=00H,(R1)=31H,(31H)=0FFH,执行指令:DEC A;A(A)-1 DEC R7;R7(R7)-1 DEC 30H;30H(30H)-1 DEC R1;(R1)(R1)-1结果:(A)=0EH,(R7)=18H,(30H)=0FFH,(31H)=0FEH,不影响标志。,第3章 MCS-51单片机指令系统,6.乘法指令 MUL AB【例 3-12】设(A)=50H,(B)=0A0H,执行指令:MUL AB 结果:(B)=32H,(A)=00H(即积为3200H)。CY=0,OV=1。7.除法指令 DIV AB【例 3-13】设(A)=0FBH,(B)=12H,执行指令。D

18、IV AB 结果:(A)=0DH,(B)=11H,CY=0,OV=0。8.十进制调整指令 DA A【例 3-14】设(A)=56H,(R5)=67H,执行指令:ADD A,R5 DA A 结果:(A)=23H,CY=1,第3章 MCS-51单片机指令系统,标志位影响,第3章 MCS-51单片机指令系统,算术运算类指令,3.3.4 逻辑操作类指令,第3章 MCS-51单片机指令系统,1 简单逻辑操作指令 累加器清零 CLR A 累加器内容按位取反 CPL A 左循环移位指令 累加器内容循环左移 RL A 累加器带进位左循环移位指令 RLC A 右循环移位指令 累加器内容循环右移指令 RR A 累

19、加器带进位右循环移位指令 RRC A 累加器半字节交换指令 SWAP A【例3-15】设(A)=10101010H,执行指令:CPL A 结果:(A)=01010101H【例3-16】设(A)=0C5H,执行指令:SWAP A 结果:(A)=5CH,第3章 MCS-51单片机指令系统,2.逻辑与指令 ANL 3.逻辑或指令 ORL4.逻辑异或指令 XRL,ANL ORL XRL,A,Rn n=07A,direct A,Ri i=0,1A,#data direct,A direct,#data,第3章 MCS-51单片机指令系统,【例3-17】设(A)=07H,(R0)=0FDH执行指令 ANL

20、 A,R0 0 0 0 0 0 1 1 1)1 1 1 1 1 1 0 1 0 0 0 0 0 1 0 1 结果:(A)=05H【例3-18】设(P1)=05H,(A)=33H执行指令 ORL P1,A 0 0 0 0 0 1 0 1)0 0 1 1 0 0 1 1 0 0 1 1 0 1 1 1 结果:(P1)=37H【例3-19】设(A)=90H,(R3)=73H,执行指令:XRL A,R3 1 0 0 1 0 0 0 0 NOR 0 1 1 1 0 0 1 1 1 1 1 0 0 0 1 1结果:(A)=0E3H,第3章 MCS-51单片机指令系统,1.数据位传送指令 MOV C,bit

21、 或 MOV bit,C 2.位变量修改指令 CLR C 或 CLR bit CPL C 或 CPL bit SETB C 或 SETB bit 进行位清“0”,取反,置“1”,不影响其他标志。3.位变量逻辑与指令 ANL C,bit 或 ANL bit,C 4.位变量逻辑或指令 ORL C,bit 或 ORL bit,C,3.3.5 位操作类指令,第3章 MCS-51单片机指令系统,【例3-20】MOV C,06H;Cy(20H.6)MOV P1.0,C;P1.0Cy【例3-21】CLR C;CY 0 CLR 27H;24H.7 0 CPL 08H;21H.0(21H.0)SETB P1.7

22、;P1.71【例3-22】设P1为输入口,P3.0作输出线,执行下列命令:MOV C,P1.0;CY(P1.0)ANL C,P1.1;CY(CY)(P1.1)ANL C,P1.2;CY(CY)(P1.2)MOV P3.0,C;P3.0 CY 结果:P3.0=(P1.0)(P1.1)(P1.2)【例3-23】设 P1口为输出口,执行下列指令:MOV C,00H;CY(20H.0)ORL C,01H;CY(CY)(20H.1)ORL C,02H;CY(CY)(20H.2)ORL C,03H;CY(CY)(20H.3)ORL C,04H;CY(CY)(20H.4)ORL C,05H;CY(CY)(2

23、0H.5)ORL C,06H;CY(CY)(20H.6)ORL C,07H;CY(CY)(20H.7)MOV P1.0,C;P1.0 CY,结果:内部RAM中20个单元只要有一位为1,则P1.0输出就为1。,第3章 MCS-51单片机指令系统,5.位变量条件转移指令 助记符 转移条件 JC rel CY=1 JNC rel CY=0 JB bit,rel(bit)=1 JNB bit,rel(bit)=0 JBC bit,rel(bit)=1这一组指令的功能为:JC:如果进位标志CY为1,则执行转移。即跳到标号rel处执行,为零则执行下一条指令。JNC:如果进位标志CY为0,则执行转移。即跳到

24、标号rel处执行,为1则执行下一条指令。JB:如果直接寻址位的值为1,则执行转移。即跳到标号rel处执行,为零则执行下一条指令。JNB:如果直接寻址位的值为0,则执行转移。即跳到标号rel处执行,为1则执行下一条指令。JBC:如果直接寻址位的值为1,则执行转移,并清除该位。即跳到标号rel处执行,为零则执行下一条指令,然后将直接寻址的位清“0”。,3.3.6 控制转移类指令,第3章 MCS-51单片机指令系统,1.无条件转移指令 绝对转移指令 AJMP addr11 相对转移指令 SJMP rel 在编写程序时,只需直接写出要转向的目标地址标号。LOOP:MOV A,R5 SJMP LOOP

25、相对偏移量rel的值需要根据跳转的目标地址进行计算:向前转移:rel=FFH源地址+目标地址1 向后转移:rel=目标地址源地址2 长跳转指令 LJMP addR16 例如执行指令:LJMP 2A00H 间接跳转指令 JMP A+DPTR,第3章 MCS-51单片机指令系统,【例3-24】如果累加器A中存放待处理命令编号(07),程序存储器中存放着标号为PTAB的转移表首址,则执行下面的程序,将根据A中命令编号转向相应的命令处理程序。PM:MOV R1,A;(A)*3A,(因LJMP指令 在程序存储器中占三字节)RL AADD A,R1 MOV DPTR,#PTAB;转移表首址DPTR JMP

26、 A+DPTR;据A值跳转到不同入口PTAB:LJMP PM0;转向命令0处理入口 LJMP PM1;转向命令1处理入口 LJMP PM2;转向命令2处理入口 LJMP PM3;转向命令3处理入口 LJMP PM3;转向命令3处理入口 LJMP PM5;转向命令5处理入口 LJMP PM6;转向命令6处理入口 LJMP PM7;转向命令7处理入口,第3章 MCS-51单片机指令系统,2条件转移指令 JZ rel;如果(A)=0,则执行转移 JNZ rel;如果(A)0,则执行转移(1)条件满足时转移,先把PC指向下一条指令的第一个字节地址,再把有符号的相对偏移量加到PC上,计算转向的目的地址。

27、(2)条件不满足时则顺序执行下面的指令。3比较不相等转移指令CJNE A,direct,rel CJNE Rn,#data,rel CJNE A,#data,rel CJNE R1,#data,rel 4减1不为0转移指令DJNZ Rn,rel;n=07DJNZ direct,rel【例3-25】延时程序:START:SETB P1.1;P1.11 DL:MOV R0,#03H;R003H(置初值)DL0:MOV 31H,#0F0H;31HF0H(置初值)DL1:DJNZ 31H,DL1;31H(31H)1,DJNZ R0,DL0;R0(R0)1,CPL P1.1;P1.1求反 AJMP DL

28、,第3章 MCS-51单片机指令系统,5、调用及返回指令 绝对调用指令 ACALL addr11 长调用指令 LCALL addr16 ACALL执行时PC加2获得下条指令的地址,并把这16位地址压入堆栈,栈指针加2。然后把指令中的a10a0值送入PC中的PC10PC0位,PC的PC15PC11不变。必须与ACALL后面一条指令的第一个字节在同一个2K区域的存储器区内。LCALL执行时把PC内容加3获得下一条指令首地址,并把它压入堆栈(先低字节后高字节),然后把指令的第二、第三字节(a15 a8,a7 a0)装入PC中,转去执行该地址开始的子程序。可以调用存放在存储器中64K字节范围内任何地方

29、的子程序。【例3-26】设(SP)=60H,标号地址START为0100H,标号MIR为8100H,执行指令:START:LCALL MIR结果:(SP)=62H,(61H)=03H,(62H)=01H,(PC)=8100H。【例3-27】设(SP)=60H,标号地址HERE为0123H,子程序SUB的入口地址为0335H,执行指令:HERE:ACALL SUB结果:(SP)=62H,堆栈区内(61H)=25H,(62H)=01H,(PC)=0335H,第3章 MCS-51单片机指令系统,6.返回指令(1)子程序返回指令 RET(2)中断返回指令 RETI 子程序返回指令是把栈顶相邻两个单元的

30、内容弹出送到PC,SP的内容减2,程序返回到PC值所指的指令处执行。RET指令通常安排在子程序的末尾,使程序能从子程序返回到主程序。【例3-28】设(SP)=62H,(62H)=07H,(61H)=30H,执行指令RET结果:(SP)=60H,(PC)=0730H,CPU从0730H开始执行程序。这条指令的功能与RET指令相类似。通常安排在中断服务程序的最后,它的应用在中断一节中讨论。7空操作指令 NOP 空操作也是CPU控制指令,它没有使程序转移的功能,一般用于软件延时。因仅此一条,故不单独分类。,第3章 MCS-51单片机指令系统,3.4 伪指令,第3章 MCS-51单片机指令系统,第3章

31、 MCS-51单片机指令系统,1.设置起始地址ORG【例3-29】ORG 2000H MOV A,20H 2.定义字节DB【例3-30】ORG 1000H SEG1:DB 65H,68H,“4”SEG2:DB DAY END则(1000H)=65H;SEG1的地址为1000H(1001H)=68H;存放数字68H(1002H)=34H;数字4的ASCII码(1003H)=44H;D的ASCII码(1004H)=41H;A的ASCII码(1005H)=59H;Y的ASCII码 使用时应注意,作为操作数部分的项或项表,若为数值,其取值范围应为00HFFH;若为字符串,其长度应限制在80个字符内(由

32、汇编程序决定)。,第3章 MCS-51单片机指令系统,3.定义字DW【例3-31】2200:DW 253AH,58H则:(2200H)=25H(2201H)=3AH(2202H)=00H(2203H)=58H伪指令DB和DW均是根据原程序的需要,用来定义程序中用到的数据(地址)或数据块的。一般应放在原程序之后,汇编后的数据块将紧挨着目标程序的末尾地址开始存放。4.预留存储区DS【例3-32】ORG 2000H SEG:DS 06HDB 35H,45H 表示从2000H单元开始,连续预留6个存储单元,然后从2006H单元开始按DB指令给内存单元赋值,即(2006H)=35H,(2007H)=45

33、H。,第3章 MCS-51单片机指令系统,5.为标号赋值EQU【例3-33】SG:EQU R1;SG与R1等值 DE:EQU 40H;DE与40H等值 MOV A,SG;(R1)A MOV R7,DE;(40H)R7 6.DATA指令【例3-34】BUFFER DATA60H【例3-35】MAIN DATA 40H 汇编后,MAIN的值为40H。7.XDATA指令【例3-36】BUFFER XDATA6000H8.位地址符号BIT【例3-37】MEN BIT P1.3 GEN BIT 08H 汇编后,位地址P1.3、08H分别赋给变量MEN和GEN。,第3章 MCS-51单片机指令系统,本章小

34、结MCS-51 单片机指令的基本格式 由标号、操作码、操作数和注释组成。其中标号为选择项,可有可无;操作码项必须有;操作数可以是03个。MCS-51 单片机共有111条指令,按指令长度分类,可分为单字节、双字节和3字节指令。按指令执行时间分类,可分为1个机器周期、2个机器周期和4个机器周期指令。按指令功能分类,分为五大类数据传送类(29条)、算术运算类(24条)、逻辑运算类(24条)、控制转移类(24条)位操作类(17条),第3章 MCS-51单片机指令系统,本章小结MCS-51 单片机有7种寻址方式:立即寻址、直接寻址、寄存器寻址、寄存器间接寻址、变址寻址、相对寻址和位寻址。MCS-51 单片机的硬件结构中有1个位处理器,指令系统中相应设计了一个处理位变量的指令子集,在设计需要大量处理位变量的程序时,这个子集十分有效、方便。这是MCS-51 单片机的一大特点。MCS-51 单片机有8条伪指令,伪指令与CPU可执行指令的形式类似,但在汇编时不产生机器码,因此,CPU不执行伪指令。伪指令是在汇编时供汇编程序识别和执行的命令,为汇编提供某种控制信息。,

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

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


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号