单片机课件第四章

上传人:油条 文档编号:1261406 上传时间:2017-06-04 格式:PPT 页数:85 大小:788KB
返回 下载 相关 举报
单片机课件第四章_第1页
第1页 / 共85页
单片机课件第四章_第2页
第2页 / 共85页
单片机课件第四章_第3页
第3页 / 共85页
单片机课件第四章_第4页
第4页 / 共85页
单片机课件第四章_第5页
第5页 / 共85页
点击查看更多>>
资源描述

《单片机课件第四章》由会员分享,可在线阅读,更多相关《单片机课件第四章(85页珍藏版)》请在金锄头文库上搜索。

1、第四章 计算机指令系统,4-1 概述,4-2 数据传送指令,4-3 算术运算类指令,4-4 逻辑运算类指令,4-5 控制转移类指令,4-6 位处理类指令,4.1 指令概述,MCS-51的指令系统49条单字节指令,45条双字节指令,17条3字节指令,共111条指令。64条指令执行时间为1个机器周期,45条2个机器周期,只有乘除法指令需4个机器周期。汇编语言指令格式标号:操作码助记符 操作数1,操作数2;注释换行表示一条指令结束。标号代表符号标明该指令所在的符号地址,标号由字母开头,字母、数字和特殊符号组成,不超过6个符号。,4.1 指令概述,操作码:指明指令功能。操作数:指令操作对象数据、地址、

2、寄存器名及约定符号。注释行:说明指令在程序中的作用,属非处理部分。操作码和操作数是指令主体,称为指令可执行部分,指令表中可查出对应指令代码。机器语言指令格式以8位二进制数为基础,有单字节、双字节和三字节指令。单字节指令:,MOV A,R0 E8H,4.1 指令概述,双字节指令:,MOV 40H,#10075 40 64H,MOV R6,#32H 7E 32H,三字节指令:,4.1 指令概述,指令按功能分:数据传送、算术运算、逻辑运算、控制转移和布尔处理共5类。常用符号注释Rn工作寄存器组的R0R7#data和#data168位/16位立即数data8位内部RAM地址Ri通过R0或R1间接寻址a

3、ddr1616位地址,提供长调用(LCALL)和长转移(LJMP)的目标地址addr1111位地址,提供绝对调用(ACALL)和绝对转移(AJMP)的目标地址,4.1 指令概述,direct直接寻址方式rel8位相对寻址的偏移量bit位寻址,可直接位寻址的内部RAM或特殊功能寄存器。C最高位进位标志或位处理累加器(x)X单元中的内容(x)以X单元的内容为地址进行间接寻址。,4.2数据传送类指令,功能将指令中的源操作数传送到目的操作数。指令执行后:源操作数不变,目的操作数改为源操作数。源操作数和目的操作数互换。不影响标志位(不包括奇偶校验位)。实现寄存器、存储器之间的数据传送。能直接在累加器、工

4、作寄存器组、内部RAM间传送1个字节数据,且传送立即数。可实现直接地址到直接地址的数据传送。堆栈操作累加器A与外部RAM的数据传送程序存储器的查表指令,4.2数据传送类指令,一般传送指令:格式: MOV 目的操作数,源操作数 寻址方式:立即寻址、直接寻址、寄存器寻址、寄存器间址。 指令 操作 机器码 MOV A,Rn ;A(Rn),Rn=R0R7,MOV A,direct ;A(direct),MOV A,Ri ;A(Ri),Ri=R0、R1,MOV A,#data ;A#data,4.2数据传送类指令,指令 操作 机器码:MOV Rn,A ; RnA,MOV Rn,direct ;Rn(di

5、rect),MOV Ri,A ;(Ri)A,MOV Rn,#data ;Rn#data,MOV Ri,direct ;(Ri)(direct),MOV Ri,#data ;(Ri)#data,4.2数据传送类指令,指令 操作 机器码:MOV direct,A ;(direct)A,MOV direct,Rn ;(direct) Rn,MOV direct,Ri ;(direct)(Ri),MOV direct,#data ;(direct)#data,MOV direct,direct ;(direct)(direct),4.2数据传送类指令,例:顺序执行下列指令序列,求每一步执行结果。MOV

6、 A,#30HMOV 4FH,AMOV R0,#20HMOV R0,4FHMOV 21H,20H,;(A)= #30H;(4FH)=#30H;(R0)=#20H;(20H)=(4FH)=#30H;(21H)= (20H)=#30H,4.2数据传送类指令,说明:注意区分直接寻址和立即数寻址:MOV A,4FHMOV A,#4FHMOV 4FH,#4FHMOV 40H,4FH间址寄存器只能使用 R0、R1。非法指令:MOV A,R2 SFR区只能直接寻址,不能用寄存器间接寻址非法指令:MOV R0,#80H MOV A,R0,4.2数据传送类指令,说明:一条指令中不能同时出现两个工作寄存器:非法指

7、令:MOV R1,R2MOV R2,R0只有指令表中的指令才有对应指令代码,才能执行。编程时,不能随意创造发明指令。,4.2数据传送类指令,堆栈操作指令入栈指令:PUSH direct (SP)(SP)+1,(SP) (direct)例:(Sp)=09H (DPTR)=0123HPUSH DPL; (SP)+1(SP)=0AH, (DPL)=23H (0AH)PUSH DPH; (SP)+1(SP)=0BH, (DPH)=01H (0BH),4.2数据传送类指令,堆栈操作指令出栈指令:POP direct (direct)(SP), (SP)(SP)-1例:(Sp)=0BH (0BH)=01H

8、 (0AH)=23HPOP DPH ; (SP)=01H(DPH), (SP)-1(SP)=0AHPOP DPL ; (SP)=23H(DPL), (SP)-1(SP)=09H,4.2数据传送类指令,累加器传送指令累加器与外部RAM数据传送。指令格式:MOVX 目的操作数,源操作数寻址方式:片外数据存储器用寄存器间址方式。 DPTR作16位数据指针,寻址64KB片外RAM空间,MOVX A,DPTR;(A)(DPTR),MOVX DPTR,A;(DPTR)(A),4.2数据传送类指令,Ri作8位数据指针,寻址256B片外RAM空间,MOVXA,Ri;(A)(Ri),MOVXRi,A ;(Ri)

9、(A),4.2数据传送类指令,例:实现片外数据存储器数据传送,(2000H)传送到(2100H)。 MOV DPTR,#2000HMOVX A,DPTRMOV DPTR,#2100HMOVX DPTR,A,; DPTR= 2000H; A= X; DPTR= 2100H;(2100H)= X,(A)=X,X,4.2数据传送类指令,片外数据存储器不能直接寻址。下列为非法指令: MOVX A,2000H MOVX 2100H,2000H思考题:为什么对DPTR的数据传送使用内部传送指令?将片外RAM 0000H单元的数据传送到片内RAM的 60H单元。,4.2数据传送类指令,字节交换指令XCH A

10、,Rn ;(A) (Rn),XCH A,Ri;(A) (Ri),XCH A,direct ;(A) (direct),例:设A=3FH,(R0)=20H, (20H)=75H.执行指令 XCH A,R0后,A=? (20H)=?,将片内RAM60H单元与61H单元的数据交换。 XCH 60H,61H 对吗?,4.2数据传送类指令,半字节交换指令XCHD A,Ri ;A0-3 (Ri)0-3SWAP A ;A4-7 A0-3,例:将片内RAM 2AH和2BH单元中的ASCII码转换成压缩式BCD码存入20H单元。MOV R0,#2AHMOV A,#0MOV R1,#2BHXCHD A,R0SWA

11、P A XCHD A,R1XCH A,20H,4.2数据传送类指令,查表指令 实现从程序存储器读取数据到A累加器,只能使用变址间接寻址方式。 多用于查常数表程序,可直接求取常数表中的函数值。,1DPTR为基址寄存器MOVC A,A+DPTR ;(A) (A+DPTR) )查表范围为 64KB 程序存储器任意空间,称为远程查表指令 。,4.2数据传送类指令,2PC为基址寄存器MOVCA,A+PC (PC) (PC)+1 , (A) (A+PC)基址寄存器PC实际上是查表指令所在的地址+1常数表只能在查表指令后256B范围内。执行完查表时,PC不变,查完后继续向下执行。,4.2数据传送类指令,例:

12、查表法求Y=X2。设X(0X15)在片内RAM的20H单元中,要求查表求Y,存入片内RAM21H单元。 ORG 1000HSQU:MOV DPTR,#TAB;确定表首地址(基地址)MOV A,20H;取X(偏移量MOVC A,A+DPTR ;查表求Y=X2MOV 21H,A;保存YRET;子程序结束;其它程序段ORG 3000H;常数表格首地址TAB:DB 00,01,04,09,225;平方表,4.2数据传送类指令,通过PC查表 指令地址 源程序 ORG 1000H ;程序起始地址 1000H SQU: MOV A,20H ;取X 1002H ADD A,#3 ;修正偏移量 1004H MO

13、VC A,A+PC ;查表求Y=X2 1005H MOV 21H,A ;存结果 1007H RET ;子程序结束 1008H TAB: DB 00,01,04 ;平方表 100BH DB 09,225,4.2数据传送类指令,习题:找出指令错误: MOV A,#1000H;(A)(1000H)A为8位累加器MOVX A,1000H;(A)(1000H)片外RAM MOV DPTR,#1000HMOVX A,DPTRMOVC A,1000H;(A)(1000H) ROMMOV A,#00HMOV DPTR,#1000HMOVC A,A+DPTR,4.2数据传送类指令,MOVX 60H,A;片外RA

14、M(60H)(A)MOV R0,#60HMOVX R0,AMOV R0,#60H MOV 61H,R0 ;片内RAM(61H)(60H)MOV 61H,60H XCH R1,R2;(R1)(R2)MOV A,R1XCH A,R2MOV R1,A,4.2数据传送类指令,MOVX DPTR,#2000H MOVX 60H,DPTR ;(DPTR)2000H,片内RAM片外RAMMOV DPTR,#2000HMOVX A,DPTRMOV 60H,A,4.3算术运算指令,算术运算操作MCS-51的ALU只能执行无符号二进制整数的算术运算,完成片内 RAM 和 A 中数据的加减乘除运算。在双字节算术运算指令中,A为第一操作数,存放操作后的结果;第二操作数可以是立即寻址、寄存器寻址、寄存器间接寻址或直接寻址。与数据传送指令不同,多数算术运算指令会影响标志位的状态,即CPU执行算术运算指令后,根据数据操作情况自动设置标志位的状态。,

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

当前位置:首页 > 高等教育 > 其它相关文档

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