第3章 单片机指令系统

上传人:aa****6 文档编号:51013802 上传时间:2018-08-12 格式:PPT 页数:58 大小:3.24MB
返回 下载 相关 举报
第3章 单片机指令系统_第1页
第1页 / 共58页
第3章 单片机指令系统_第2页
第2页 / 共58页
第3章 单片机指令系统_第3页
第3页 / 共58页
第3章 单片机指令系统_第4页
第4页 / 共58页
第3章 单片机指令系统_第5页
第5页 / 共58页
点击查看更多>>
资源描述

《第3章 单片机指令系统》由会员分享,可在线阅读,更多相关《第3章 单片机指令系统(58页珍藏版)》请在金锄头文库上搜索。

1、 3 3.1 .1 指令格式和寻址方式指令格式和寻址方式3 3.2 .2 指令分类介绍指令分类介绍3 3.3 51.3 51指令系统汇总指令系统汇总第三章 指令系统单片机原理及应用Date1一、汇编语言指令格式: 标号:操作码 操作数1,操作数2 ;注释换行表示一条指令结束。例: LOOP: MOV A,#40H ;取参数1.标号:指令的符号地址。 2.操作码:指明指令功能。 3.操作数:指令操作对象。数据、地址、寄存器名及约定符号。 4.注释行:说明指令在程序中的作用。操作码和操作数是指令主体。MOVmove 传送 XCHexchange 交换 ANLand logic 与逻辑运算 XRLe

2、xclusive or 异或运算 MULmultiply 乘法 RRrotate right 右循环 SJMPshort jump 短跳转 RETreturn 子程序返回3.1 指令格式和寻址方式Date2二、机器语言指令格式 :操作码 操作数1 操作数2 有单字节、双字节和三字节指令。汇编语言指令中操作码和操作数是指令主体,称为指令可执行部分,指令表中可查出对应指令代码。举例: 汇编语言:机器语言: MOV A,R0E8H MOV R6,#32H7E 32H MOV 40H,#64H75 40 64H1110100001111110001100100111010101000000011001

3、00Date3三、指令寻址方 式(一)操作数类型:位 (bit) 位寻址区中的一位二进制数据 字节(Byte) 8位二进制数据 字 (Word) 16位双字节数据(二)寻址方式:(二)寻址方式: 1.立即寻址方式:指令中给出实际操作数据(立即数),一般用于为 寄存器或存储器赋常数初值。 举例:8位立即数: MOV A,#40H ;A40H16位立即数: MOV DPTR,#2100H ;DPTR2100HDate42.直接寻址方 式:指令操作数是存储器单元地址,数据放在存储器单元中。 MOV A,40H;A(40H)直接寻址方式对数据操作时,地址是固定 值,而地址所指定的单元内容为变量形式。4

4、1H 78H 40H 56H例:设存储器两个单元的内容如图所示, 执行指令 MOV A,40H 后 A = ?思考题:直接寻址方式指令和立即寻址方式指令的形式有什么不同?56HDate53.寄存器寻址方式:4.4.寄存器间接寻址方式:寄存器间接寻址方式:指令的操作数为寄存器名,寄存器中为数据地址 。存放地址的寄存器称为间址寄存器或数据指针。例例: :MOV A,R0;A(R0)设指令执行前 A=20H,R0=40H,地址为40H存储器单元内容如图所示。执行指令后, A= ? ,R0 = ? , (40H)= ?34H40H34H0100 0000 AR00100 000041H 67H40H

5、34HR0A20H R040H例:MOV A,R0;A(R0) 设指令执行前 A=20H,R0=40H, 执行指令后,A= ? ,R0 = ?指令操作数为寄存器名,数据在寄存器中。40H40HDate65.变址间接寻址方式 : 例:MOVC A,A+DPTR;A(A+DPTR)设指令执行前 A=09H,DPTR=2000H,存储器 单元内容如图所示。执行指令后,A= ? DPTR= ? 12H2000H2008H 89H2009H 12H数据在存储器中,指令给出的寄存器中为数 据 的基地址和偏移量。数据地址 = 基地址 + 偏移量。说明:1、只对程序存储器;2、指令形式:MOVC A,A+DP

6、TR MOVC A,A+PCJMP A+DPTRDate76.6.位寻址方式:位寻址方式:指令给出位地址。一位数据在存储器位寻址区。(1)内部RAM中的位寻址区:字节地址为20H2FH;(2)专用寄存器的可寻址位:11个(83位)表示方法:1)直接使用位地址;如:PSW的位6可表示为0D6H2)位名称表示; 或AC3)字节地址加位数表示; 或0D0H.64)专用寄存器符号加位数表示。 或PSW.6 例: MOV C,40H;Cy(位地址40H)设指令执行前 Cy=1,位地址40H存储器单元如图,执行指令后,Cy= ?29H 01100010 28H 11010110位寻址区0Date87. 相

7、对寻址方 式:目的地址=转移指令地址+转移指令字节数+rel (rel为偏移量) 当前PC值加上指令中规定的偏移量 rel,构 成实际的操作数地址 例: SJMP rel 操作:跳转到的目的地址 = 当前16位PC值 + rel注意: 1)“当前PC值”指程序中下一条指令所在的首地址,是 一个16位数; 2)符号“rel”表示“偏移量”,是一个带符号的单字节 数,范围是:-128+127(80H7FH)。 在实际编程中,“rel” 通常用标号代替 。Date9指令功能分类:指令功能分类: 数据传送、数据操作、布尔处理、程序控制。数据传送、数据操作、布尔处理、程序控制。3.2.1 数据传送指令

8、实现寄存器、存储器之间的数据传送。 一、内部传送指令: 片内数据存储器数据传送。二、外部传送指令: 片外数据存储器数据传送。 三、交换指令: 片内数据存储器数据传送。四、堆栈操作指令: 片内数据存储器数据传送。五、查表指令: 程序存储器数据传送。3 3.2 .2 指令分类介绍指令分类介绍Date10(一)内部传送指令 :习题:找出配对指令,实现反向传送。指令机器码: 11101rrr E8EF 11100101 n E5 n 1110011i E6、E7 01110100 d 74 d 10101rrr n 1010011i n 85 n1 n2 90 d1 d2MOV A,Rn ;A(Rn)

9、,Rn=R0R7 MOV A,direct ;A(direct) MOV A,Ri ;A(Ri),Ri=R0、R1 MOV A,#data ;Adata MOV Rn, direct ;Rn(direct) MOV Ri, direct ;(Ri)(direct) MOV direct1,direct2;(direct1)(direct2) MOV DPTR,#d1d2 ;DPTRd1d2实现片内数据存储器中数据传送。 指令格式: MOV 目的操作数,源操作数 寻址方式:立即寻址、直接寻址、寄存器寻址、寄存器间址 。Date11例 :MOV A,#30H MOV 4FH,A MOV R0,#2

10、0H MOV R0,4FH MOV 21H,20H习题:用两种寻址方式实现,将片内RAM60H单元的数据传送给累加器A。解: MOV A,#60H()MOV R0,#60H () MOV A,R0;A= 30H ;(4FH)= 30H ;R0= 20H ;(20H)= 30H ;(21H)= 30HMOV R0,60H MOV A,R0 () 解: MOV A,60H ()结果A=32H顺序执行下列指令序列,求每一步执行结果 。Date12说 明:只有指令表中的指令才有对应指令代码,计算机才能 执行。编程时,不能随意创造发明指令。1. 一条指令中不能同时出现两个工作寄存器:非法指令:MOV R

11、1,R2 MOV R2,R02. 间址寄存器只能使用 R0、R1。非法指令: MOV A,R23. SFR区只能直接寻址,不能用寄存器间接寻址。非法指令: MOV R0,#80HMOV A,R04. 指令表(P70): B:指令字节数,M:机器周期数Date13(二) 外部RAM传送指令: (MOVX) 指令格式:MOVX 目的操作数,源操作数寻址方式:片外数据存储器用寄存器间址方式。DPTR作16位数据指针,寻址64KB片外RAM空间:MOVX A,DPTR ;A(DPTR) (读)MOVX DPTR,A;(DPTR)A (写)2. Ri作8位数据指针,寻址256B片外RAM空间 (页内寻址

12、):MOVXA,Ri;A(P2Ri) (读)MOVXRi,A ;(P2Ri)A (写)实现片外数据存储器和A累加器之间的数据传送。 Date14例:实现片外数据存储器数据传送(2000H)(2100H) 。 MOV DPTR,#2000H MOVX A,DPTR MOV DPTR,#2100H MOVX DPTR,A习题:将片外RAM 0000H单元的数据传送到片内RAM的60H单元。; DPTR= 2000H ; A= X ; DPTR= 2100H ; (2100H)= X片外数据存储器不能直接寻址。 下列为非法指令:MOVX A,2000H MOVX 2100H,2000H思考题:为什么

13、对DPTR的数据传送使用内部传送指令?Date15(三) ROM传送指令(查表指令):(MOVC) 1DPTR为基址寄存器: MOVCA,A+DPTR ;A(A+DPTR) (读)查表范围为 64KB 程序存储器任意空间,称为远程查表指令。 2PC为基址寄存器: MOVCA,A+PC;A(A+PC) (读)常数表只能在查表指令后256B范围内, 称为近程查表指令。实现从程序存储器读取数据到A累加器,只能使 用变址间接寻址方式。多用于查常数表程序,可直接求取常数表中的 函数值。Date16P49:例1:以查表方法把累加器中的十六进制数转换为ASCII码,并送回累加器中。程序如下:指令地址 源程序

14、ORG 2000H2000 HBA:INC A2001 MOVC A,A+PC2002 RET2003 DB 30H2004 DB 31H2005 DB 32H2011 DB 45H2012 DB 46H Date17例2:程序: ORG 1000HSQU: MOV DPTR,#3000H;确定表首地址(基地址)MOV A,20H;取 X(变量:偏移量)MOVC A,A+DPTR;查表求Y=X2MOV 21H,A;保存Y(结果)RET;子程序结束;其它程序段ORG 3000H ;常数表格首地址TAB: DB 00,01,04,09, ,225;平方表END方法方法1 1:查表法求Y=X2。设X

15、(0X15)在片内RAM的20H 单元中,要求查表求Y,存入片内RAM 21H单元 。Date18指令地址 源程序ORG 1000H;程序起始地址1000H SQU: MOV A,20H ;取X1002H ADD A,#3 ;修正偏移量1004H MOVC A,A+PC ;查表求Y=X2 (PC=1005H)1005H MOV 21H,A ;存结果1007H RET ;子程序结束1008H TAB: DB 00,01,04 ;平方表100BH DB 09, ,225 思考题:当0X255时,如何用查表法编程求Y=X2。方法方法2 2:查表法求Y=X2。设X(0X15)在片内RAM的20H 单元中,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > PPT模板库 > 教育/培训/课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号