收藏 分享(赏)

单片机原理及接口技术 第三章 MCS-51的指令系统.ppt

上传人:j35w19 文档编号:7613412 上传时间:2019-05-22 格式:PPT 页数:49 大小:496.50KB
下载 相关 举报
单片机原理及接口技术 第三章 MCS-51的指令系统.ppt_第1页
第1页 / 共49页
单片机原理及接口技术 第三章 MCS-51的指令系统.ppt_第2页
第2页 / 共49页
单片机原理及接口技术 第三章 MCS-51的指令系统.ppt_第3页
第3页 / 共49页
单片机原理及接口技术 第三章 MCS-51的指令系统.ppt_第4页
第4页 / 共49页
单片机原理及接口技术 第三章 MCS-51的指令系统.ppt_第5页
第5页 / 共49页
点击查看更多>>
资源描述

1、,单片机原理及应用,Fundamentals of Mono-Chip Computers & Applications,单片机原理及应用,第2章 MCS-51的指令系统,2.1 指令格式及常用符号 2.2 MCS-51单片机的寻址方式 2.3 数据传送类指令(29条) 2.4 算术运算类指令(24条) 2.5 逻辑运算与循环类指令(24条) 2.6 控制转移类指令(17条) 2.7 位操作类指令(17条) 2.8 MCS-51单片机程序设计,2.1 指令格式与常用符号,2.1.1 机器指令的编码格式,单字节指令,8位编码仅为操作码:,注意:指令中“A”表示累加器,而“ACC”表示累加器对应的

2、地址(E0H)。,0000 0100,INC A,8位编码含有操作码和寄存器编码,1110 1000,MOV A,R0,2.1 指令格式与常用符号,双字节指令,第一字节表示操作码,第二个字节表示参与操作的数据或数据存放的地址。,0101 0000,MOV A,#50H,0111 0100,三字节指令,指令的第一字节表示该指令的操作码,后两个字节表示参与操作的数据或数据存放的地址。,0010 0000,MOV 20H,#50H,0111 0101,0101 0000,2.1 指令格式与常用符号,2.1.2 符号指令的格式,一般格式:操作助记符 目的操作数,源操作数;注释,如:,ANL A,40H

3、 MOV A,30H ;机器码为74H、30H;MOV ACC,30H ;机器码为75H、E0H、30H。,2.1 指令格式与常用符号,2.1.3 符号指令及其注释中常用的符号,单片机原理及应用,第2章 MCS-51的指令系统,2.1 指令格式及常用符号 2.2 MCS-51单片机的寻址方式 2.3 数据传送类指令(29条) 2.4 算术运算类指令(24条) 2.5 逻辑运算与循环类指令(24条) 2.6 控制转移类指令(17条) 2.7 位操作类指令(17条) 2.8 MCS-51单片机程序设计,2.2 MCS-51的寻址方式,2.2 MCS-51的寻址方式,定义:寻找操作数或指令的地址的方

4、式。,寻址方式有七种:寄存器寻址、直接寻址、寄存器间接寻址、立即寻址、基址寄存器加变址寄存器变址寻址、相对寻址和位寻址。,若不特别声明,我们后面提到的寻址方式均指源操作数的寻址方式。,操作数在寄存器中,指令中直接给出该寄存器名称。具有较高的传送和运算速度。,2.2.1 寄存器寻址,2.2 MCS-51的寻址方式,例:MOV A,R0 ;设(R0)=30H,0工作寄存器组,00H,7FH,30H,30H,80H,FFH,A,E8H,FFFFH,MOV A,R0,0000H,ROM,SFR,RAM,2.2 MCS-51的寻址方式,操作码后的字节是操作数的地址,操作数本身放在该地址指示的存储单元中。

5、,2.2.2 直接寻址,例:MOV A,50H ;设(50H)=3AH,50H,7FH,3AH,3AH,80H,FFH,A,FFFFH,MOV A,50H,0000H,ROM,SFR,RAM,2.2 MCS-51的寻址方式,寄存器Ri、DPTR中内容为地址,从该地址取操作数。,2.2.3 寄存器间接寻址,例:MOV A, R0 ;设(R0)=30H,E6H,FFFFH,MOV A, R0,0000H,ROM,30H,7FH,5AH,5AH,80H,FFH,A,SFR,RAM,30H,R0,2.2 MCS-51的寻址方式,编码中直接给出操作数。操作码之后的操作数称为立即数。,2.2.4 立即寻址

6、,例:MOV A, #50H ;,7FH,50H,80H,FFH,A,FFFFH,MOV A,#50H,0000H,ROM,SFR,RAM,2.2 MCS-51的寻址方式,以一个基地址(PC或DPTR)加上一个偏移量(寄存器A)形成操作数地址。,2.2.5 变址寻址,例:MOVC A, A+DPTR ;,7FH,0FH,80H,FFH,A,FFFFH,MOVC A, A+DPTR,0000H,ROM,SFR,RAM,93H,88H,00H,24H,2400H+0FH= 240FH,240FH,DPL,DPH,2.2 MCS-51的寻址方式,P20,P27,P00,P07,EA,ALE,A0,A

7、7,A8,A12,D0,D7,D0,D7,Q0,Q7,G,OE,74LS373,8031 8051,2764,例:MOVC A, A+DPTR ;,2.2 MCS-51的寻址方式,以PC当前值为基准,加上指令中相对偏移量 rel 形成目标地址。rel 取值范围是:128127。,2.2.6 相对寻址,例:JC rel ;设 rel75H,PSW.7为 “1”,7FH,1000 0000,80H,FFH,PSW,1002H,JC rel,1000H,ROM,SFR,RAM,1001H,1077H,1000H+02H= 1002H,PC值,字节数,1002H+75H= 1077H,当前PC值,新P

8、C值,2.2 MCS-51的寻址方式,对位地址中内容进行操作。操作的是8位二进制数中的某一位。,2.2.7 位寻址,SFR的寻址位常用符号位地址表示,如:CLR ACC.0 MOV 30H,C,寻址空间,片内RAM中位寻址区,SFR中的可寻址位,单片机原理及应用,第2章 MCS-51的指令系统,2.1 指令格式及常用符号 2.2 MCS-51单片机的寻址方式 2.3 数据传送类指令(29条) 2.4 算术运算类指令(24条) 2.5 逻辑运算与循环类指令(24条) 2.6 控制转移类指令(17条) 2.7 位操作类指令(17条) 2.8 MCS-51单片机程序设计,2.3 数据传送类指令,2.

9、3 数据传送类指令,P20,P27,P00,P07,ALE,A0,A7,A8,A12,D0,D7,D0,D7,Q0,Q7,G,OE,74LS373,8031 8051,6264,WR,RD,WE,例:MOVX A, DPTR ;MOVX DPTR ,A,单片机原理及应用,第2章 MCS-51的指令系统,2.1 指令格式及常用符号 2.2 MCS-51单片机的寻址方式 2.3 数据传送类指令(29条) 2.4 算术运算类指令(24条) 2.5 逻辑运算与循环类指令(24条) 2.6 控制转移类指令(17条) 2.7 位操作类指令(17条) 2.8 MCS-51单片机程序设计,2.4 算数运算类指

10、令,单片机原理及应用,第2章 MCS-51的指令系统,2.1 指令格式及常用符号 2.2 MCS-51单片机的寻址方式 2.3 数据传送类指令(29条) 2.4 算术运算类指令(24条) 2.5 逻辑运算与循环类指令(24条) 2.6 控制转移类指令(17条) 2.7 位操作类指令(17条) 2.8 MCS-51单片机程序设计,2.5 逻辑运算和循环类指令,单片机原理及应用,第2章 MCS-51的指令系统,2.1 指令格式及常用符号 2.2 MCS-51单片机的寻址方式 2.3 数据传送类指令(29条) 2.4 算术运算类指令(24条) 2.5 逻辑运算与循环类指令(24条) 2.6 控制转移

11、类指令(17条) 2.7 位操作类指令(17条) 2.8 MCS-51单片机程序设计,2.6 控制转移类指令,单片机原理及应用,第2章 MCS-51的指令系统,2.1 指令格式及常用符号 2.2 MCS-51单片机的寻址方式 2.3 数据传送类指令(29条) 2.4 算术运算类指令(24条) 2.5 逻辑运算与循环类指令(24条) 2.6 控制转移类指令(17条) 2.7 位操作类指令(17条) 2.8 MCS-51单片机程序设计,2.7 位操作类指令,单片机原理及应用,第2章 MCS-51的指令系统,2.1 指令格式及常用符号 2.2 MCS-51单片机的寻址方式 2.3 数据传送类指令(2

12、9条) 2.4 算术运算类指令(24条) 2.5 逻辑运算与循环类指令(24条) 2.6 控制转移类指令(17条) 2.7 位操作类指令(17条) 2.8 MCS-51单片机程序设计,2.8 MCS-51单片机程序设计,ORG 0000HLJMP STARTORG 0003H LJMP INTIE0ORG 000BHLJMP INTTF0ORG 0100H START: MOV A, #08HMOV R1, A LOOP0: MOV R1, AINC R1DJNZ R0, LOOP0,A0: ;这是一个子程序RETORG 0300H A1: RET INTE0: ;这是一个中断处理RETI O

13、RG 4100H INTTF0: RETIORG 6000H DBLO: DB 43H,10101010BDB -10 ,0A0HEND,1、语句基本格式 2、标号3、数制4、注释5、伪指令,2.8 MCS-51单片机程序设计,2.8.1 伪指令,1、ORG 2、END 3、DB 4、DW 5、DS 6、BIT 7、EQU,2.8 MCS-51单片机程序设计,ORG 1000H START:MOV R0,2FH MOV R2,#00H MOV A,R0 MOV R3,A INC R3 SJMP NEXT LOOP: INC R0 CJNE R0,#44H,NEXT INC R2 NEXT: D

14、JNZ R3,LOOP MOV 2AH,R2 SJMP $ END,地址 第一次汇编 1000 A82F 1002 7A00 1004 E6 1005 FB 1006 0B 1007 80NEXT 1009 08 100A B644NEXT 100D 0A 100E DBLOOP 1010 8A2A 1012 80FE,第二次汇编 A82F 7A00 E6 FB 0B 8005 08 B64401 0A DBF9 8A2A 80FE,2.8 MCS-51单片机程序设计,2.8.2 顺序程序结构,ORL 1000H MODE:MOV R0,#60HMOVX A, R0MOV B, AANL A,

15、 #0F0HSWAP AMOVX R0,A,例1、设在外RAM的60H单元存有1个字节代码,要求将其分解成两个4位字段,高4位存入原单元的低4位,其低4位存入61H单元的低4位,且要求这两个单元的高4位均为0,试编制完整程序。,ANL B, #0FH MOV A, B INC R0 MOVX R0,A END,2.8 MCS-51单片机程序设计,MOV R0,52H MOV R1,55H MOV A,R0 ADD A,R1 MOV R0,A DEC R0 DEC R1 MOV A,R0,例2、三字节无符号数加法。设被加数存放在内部RAM的50H、 51H、52单元,加数存放在内部RAM的53H

16、、54H、55H单元,相加的结果存放在内部RAM的50H、51H、52H单元,进位存放在位寻址区的00H位中。,ADDC A,R1 MOV R0,A DEC R0 DEC R1 MOV A ,R0 ADDC A,R1 MOV R0,A MOV 00H,C,2.8 MCS-51单片机程序设计,例3、如图:在P1.0端口上接一个发光二极管L1,使L1在不停地一亮一灭,一亮一灭的时间间隔为0.2秒。,ORG 100H START: CLR P1.0LCALL DELAYSETB P1.0LCALL DELAYLJMP START DELAY:RETEND,2.8 MCS-51单片机程序设计,例4、在

17、数码管上循环显示09数字,时间间隔0.2秒。,ORG 100H START: MOV R1, #00H NEXT: MOV A,R1MOV DPTR, #TABLEMOVC A, A+DPTRMOV P0,ALCALL DELAYINC R1CJNE R1, #10,NEXTLJMP START TABLE: DB 3FH,06H,5BH,4FH,DB 66H,6DH,7DH,07H,DB 7FH,6FH,2.8 MCS-51单片机程序设计,2.8.3 分支程序结构,例5、求双字节有符号数的二进制补码。,START: MOV R0, #addr1MOV R1, #addr2MOV A, R0C

18、PL AINC AMOV R1, AINC R0INC R1JZ ZERO,MOV A, R0CPL AMOV R1, ASJMP LOOP1 ZERO: MOV A, R0CPL AINC AMOV R1, A LOOP1:END,2.8 MCS-51单片机程序设计,例6、设变量 x 以补码的形式存放在片内RAM的30H单元,变量 y 与 x 的关系是:当 x 大于0时,y = x;当 x = 0时,y = 20H;当 x 小于0时,y = x+5。编制程序,根据 x 的大小求y并送回原单元。,START: MOV A,30H JZ NEXTANL A,#80H JZ LP MOV A,#0

19、5H ADD A,30H,MOV 30H,A SJMP LP NEXT:MOV 30H,#20HLP:SJMP $,2.8 MCS-51单片机程序设计,例7、根据R7的内容转向相应的处理程序。设R7的内容为0N,对应的处理程序的入口地址分别为PP0PPN。,START:MOV DPTR,#TAB ;置分支入口地址表首址MOV A,R7 ;分支转移序号送AADD A,R7 ;分支转移序号乘以2MOV R3,A ;暂存于R3MOVC A,A+DPTR ;取高位地址XCH A,R3 INC A MOVC A,A+DPTR ;取低位地址 MOV DPL,A ;处理程序入口地址低8位送DPLMOV DP

20、H,R3 ;处理程序入口地址高8位送DPHCLR A JMP A+DPTR TAB: DW PP0DW PP1 DW PPN,2.8 MCS-51单片机程序设计,2.8.4 循环程序结构,有先执行后判断和先判断后执行两种结构 :,2.8 MCS-51单片机程序设计,例8、50ms延时程序。 若晶振频率为12MHz,则一个机器周期为1s。执行一条DJNZ指令需要2个机器周期,即 2s。采用循环计数法实现延时循环次数可以通过计算获得,并选择先执行后判断的循环结构。,DEL: MOV R7,#200 ;1 s DEL1:MOV R6,#123 ;1 sNOP ;1 s DEL2:DJNZ R6,DE

21、L2 ;2s,计(2123)sDJNZ R7,DEL1 ;2s RET 共计 (21232 2)200+1 s,即50.001ms,2.8 MCS-51单片机程序设计,例9、将内部RAM中起始地址为data的数据串传送到外部RAM中起始地址为buffer的存储区域内,直到发现$ 字符停止传送。,MOV R0, #data MOV DPTR,#buffer LOOP0:MOV A,R0 CJNE A,#24H,LOOP1 ;判是否为 $ 字符SJMP LOOP2 ;是 $ 字符,转结束 LOOP1:MOVX DPTR,A ;不是 $ 字符,执行传送INC R0 INC DPTR SJMP LOO

22、P0 ;传送下一数据 LOOP2: ,2.8 MCS-51单片机程序设计,例10、做单一灯的左移右移,八个发光二极管L1L8分别接在单片机的P1.0P1.7接口上,输出“0”时,发光二极管亮,开始时P1.0P1.1P1.2P1.3P1.7P1.6P1.0亮,重复循环。,START: MOV R2, #8MOV A, #0FEHSETB C LOOP: MOV P1, ALCALL DELAYRLC ADJNZ R2, LOOPMOV R2, #8 LOOP1: MOV P1,A LCALL DELAYRRC ADJNZ R2, LOOP1,2.8 MCS-51单片机程序设计,2.8.5 子程序

23、设计及调用,例11、编写程序,实现c=a2+b2 。设a,b,c分别存于内部RAM的30H,31H,32H三个单元中。,ORG 2000H START:MOV A,30HACALL SQR MOV R1,AMOV A,31H ACALL SQRADD A,R1 MOV 32H,ASJMP $,ORG 2100H SQR :MOV DPTR,#TABMOVC A,A+DPTRRET TAB :DB 0,1,4,9,16 DB 25,36,49,64,81,2.8 MCS-51单片机程序设计,现场保护与恢复, PUSH PSW PUSH ACC PUSH B MOV PSW,#10H LCALL

24、SUBP POP B POP ACC POP PSW , SUB1:PUSH PSWPUSH ACC PUSH B MOV PSW,#10H POP BPOP ACC POP PSWRET ,2.8 MCS-51单片机程序设计,2.8.6 常用算术类程序设计,例12、设两个N字节的无符号数分别存放在内部RAM中以DATA1和DATA2开始的单元中。相加后的结果要求存放在DATA2数据区。,MOV R0,#DATA1 ; MOV R1,#DATA2 ; MOV R7,#N ;置字节数CLR C ; LOOP:MOV A, R0 ;ADDC A, R1 ;求和MOV R1,A ;存结果INC R0

25、 ;修改指针INC R1 ;DJNZ R7, LOOP ;,2.8 MCS-51单片机程序设计,例13、多字节数乘法运算。 设双字节无符号被乘数存放在R3、R2中,乘数存放在R5、R4中,R0指向积的高位。,2.8 MCS-51单片机程序设计,例14、十六进制数与ASCII码间的转换。,数在09之间时,ASCII码值为该数加30H 数在AF之间时,ASCII码值为该数加37H,2.8 MCS-51单片机程序设计,例15、设十六进制数存放在R0中,转换后的ASCII 码存放于R2中。,HASC:MOV A,R0 ;取4位二进制数ANL A,#0FH ;屏蔽掉高4位PUSH ACC ;4位二进制数

26、入栈CLR C ;清 进(借)位位SUBB A,#0AH ;用借位位的状态判断该数在09还是AF之间POP ACC ;弹出原4位二进制数JC LOOP ;借位位为1,跳转至LOOPADD A,#07H ;借位位为0,该数在AF之间,加37H LOOP:ADD A,#30H ;该数在09之间,加30HMOV R2,A ;ASCII码存于R2RET,2.8 MCS-51单片机程序设计,HTASC:MOV A,R0 ;取低4位二进制数ANL A,#0FH ;ADD A,#15 ;偏移量修正MOVC A,A+PC ;查表MOV R1,A ;存ASCII码INC R1 ;MOV A ,R0 ;取十六进制高4位SWAP AANL A,#0FH ;ADD A,#06H ;偏移值修正MOVC A,A+PC ;MOV R1,AINC R0 ;指向下一单元INC R1 ;DJNZ R2,HTASC ;字节数存于R2RET ASCTAB:DB 30H,31H,32H,33H,34H,35H,36H,37HDB 38H,39H,41H,42H,43H,44H,45H,46H,

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

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报