3.3 数据传送类指令(课件)-《单片机技术与应用》(高教版第二版) 同步精品课堂
|
25页
|
154人阅读
|
1人下载
精品
内容正文:
单片机技术与应用
-第12课时-
高教版第二版
数据传送类指令
教学目标
了解数据传送类指令的数量、特点及分类
掌握各类数据传送指令的格式、操作功能、字节数和机器周期数
能够运用数据传送类指令进行编程,并分析程序执行结果
教学重难点
各类数据传送指令的功能和使用方法
不同数据传送指令在实际编程中的应用
访问程序存储器的数据传送指令中偏移量的计算
让我们一起开启单片机的学习之旅。
导入新课
在单片机编程中,数据传送是最基本也是最常用的操作。
MCS - 51 系列单片机有哪些数据传送类指令呢?
它们各自的功能和特点是什么?
如何正确使用这些指令进行数据传送?
让我们一起开启单片机的学习之旅。
新知讲授
概述
数据传送类指令是使用频率最高的一类指令。主要用来给单片机系统的内部和外部资源
赋值、进行堆栈的存取操作等。这些指令通常用于将数据从一个位置移动到另一个位置,或者从内存中加载数据到寄存器,反之亦然。
特点
数据传送类指令通常不会直接影响标志寄存器的状态。这意味着当执行数据传送指令时,标志寄存器中的条件码通常不会被修改。
数据传送类指令有 29 条,是使用频繁的指令类,属于 “复制” 类型。
数据传送类指令执行前后,对程序状态字PSW一般不产生影响。
按其操作方式,又可把它们分为3种:数据传送、数据交换和栈操作。
数据传送类指令
新知讲授
数据传送类指令分类
为便于找到规律以理 解、记忆指令,对数据传送类指令再进行如下分类:
访问片内数据存储器的一般数据传送指令
访问片内特殊传送指令
访问片外数据存储器的数据传送指令
数据传送类指令
访问片内数据存储器的一般数据传送指令
指令助记符 操作功能 字节数 机器周期数
MOV A,#data A←data 2 1
MOV Rn,#data Rn←data,n = 0,1,…,7 2 1
新知讲授
访问片内特殊传送指令
访问片内数据存储器的一般数据传送指令
指令助记符 操作功能 字节数 机器周期数
MOV DPTR,#data16 DPTR←data16 3 2
MOV A,Rn A←(Rn),n = 0,1,…,7 1 1
MOV Rn,A Rn←(A) 1 1
MOV A,@Ri A←((Ri)),i = 0,1 1 1
MOV A,direct A←(direct) 2 1
MOV direct,A direct←(A) 2 1
MOV Rn,direct Rn←(direct),n = 0,1,…,7 2 2
新知讲授
访问片内特殊传送指令
访问片内数据存储器的一般数据传送指令
指令助记符 操作功能 字节数 机器周期数
MOV direct,Rn direct←(Rn) 2 2
MOV @Ri,direct (Ri)←(direct),i = 0,1 2 2
MOV direct,@Ri direct←((Ri)) 2 2
MOV direct1,direct2 direct1←(direct2) 3 2
MOV @Ri,#data (Ri)←data,i = 0,1 2 1
MOV direct,#data direct←data 3 2
新知讲授
访问片内数据存储器的一般数据传送指令 - 示例
例 3 - 1:设内部 RAM (30H)=40H,(40H)=10H,(10H)=00H,(P1)=0CAH, 分析以下程序执行后各单元及寄存器、P2 口的内容。
访问片内特殊传送指令
MOV R0,#30H ;(R0)←30H
MOV A,@R0 ;(A)←((R0))
MOV R1,A ;(R1)←(A)
MOV B,@R1 ;(B)←((R1))
MOV @R1,P1 ;(R1)←(P1)
MOV P2,P1 ;(P2)←(P1)
MOV 10H,#20H ;(10H)←20H
执行结果:(R0)=30H,(R1)=(A)=40H,(B)=10H,(40H)=(P1)=(P2)=0CAH,(10H)=20H。
新知讲授
访问片内特殊传送指令 - 堆栈操作指令
堆栈操作分为进栈和出栈,用于保存或恢复现场。
进栈保存片内 RAM 单元或特殊功能寄存器内容,出栈恢复其内容。
访问片内特殊传送指令
指令名称 指令助记符 操作功能 字节数 机器周期数
堆栈操作指令 PUSH direct POP direct SP←(SP)+1,(SP)←(direct)
direct-((SP)),SP←(SP)-1 2
2 2
2
新知讲授
访问片内特殊传送指令 - 数据交换指令
数据交换指令进行数据双向传送,传送双方互为源地址和目的地址,操作数不丢失。
访问片内特殊传送指令
指令名称 指令助记符 操作功能 字节数 机器周期数
数据交换指令 XCH A,direct XCH A,@Ri XCH A,Rn XCHD A,@Ri
SWAP A (A)←→ (direct)
(A)←→ ((Ri))
(A)←→ (Rn)
(A)₃-0→ ((Ri))3-0
(A)7-4→ (A)3-0 2
1
1
1
1 1
1
1
1
1
新知讲授
访问片内特殊传送指令 - 示例
例 3 - 2:设 (R0)=30H,(30H)=4AH,(A)=28H。
例 3 - 3:已知 (20H)=24H,(24H)=0BCH, SP = 1FH,(1FH)=39H,(39H)=67H, 外部 RAM (1000H)=10H,ROM (1010H)=0FFH。
访问片内特殊传送指令
例 3 - 2程序结果为:
执行 XCH A,@R0 后 ,(A)=4AH,(30H)=28H。
执行 XCHD A,@R0 后 ,(A)=2AH,(30H)=48H。
执行 SWAP A 后 ,(A)=82H。
MOV A,1FH
MOV R0,20H
XCH A,39H
PUSH ACC
MOV DPTR,#1000H
MOVX A,@DPTR
MOVC A,@A+DPTR
XCHD A,@R0
POP 1FH
例 3 - 3运行结果:(A)=0FCH,(R0)=24H,(1FH)=67H,(20H)=67H,(24H)=0BFH, (39H)=39H, 其余不变。
新知讲授
访问片内特殊传送指令 - 数据交换指令
MCS - 51 系列单片机 CPU 对片外扩展的数据存储器 RAM 或 I/O 口进行数据传送时,采用寄存器间接寻址,通过累加器 A 完成。前两条为输入指令,执行时 P3.7 输出 RD 读有效信号;后两条为输出指令,执行时 P3.6 输出 WR 写有效信号。
访问片外数据存储器的数据传送指令
指令助记符 操作功能 字节数 机器周期数
MOVX A,@DPTR A←((DPTR)) 1 2
MOVX A,@Ri A←((Ri)) 1 2
MOVX @DPTR,A (DPTR)←(A) 1 2
MOVX @Ri,A (Ri)←(A) 1 2
MOV DPTR,#0203H ;(DPTR)=0203H
MOVX A,@DPTR ;(A)=((DPTR))=0FFH
MOV 30H,A ;(30H)=(A)=0FFH
MOV A,#0FH ;(A)=0FH
MOVX @DPTR,A ;((DPTR))=(A),(0203H)=0FH
新知讲授
访问片外数据存储器的数据传送指令 - 示例
例 3 - 4:设外部 RAM (0203H)=0FFH。
例 3 - 5:将外部 RAM 2000H 中的内容,传送到内部 RAM 30H 中。
访问片外数据存储器的数据传送指令
例 3 - 4 执行结果:
(DPTR)=0203H,(30H)=0FFH,(0203H)=(A)=0FH。
MOV DPTR,#0203H ;(DPTR)=0203H
MOVX A,@DPTR ;(A)=((DPTR))=0FFH
MOV 30H,A ;(30H)=(A)=0FFH
MOV A,#0FH ;(A)=0FH
MOVX @DPTR,A ;((DPTR))=(A),(0203H)=0FH
MOV DPTR,#2000H
MOVX A,@DPTR
MOV 30H,A
例 3 - 5执行结果:
新知讲授
访问程序存储器的数据传送指令
访问程序存储器的数据传送指令又称查表指令,采用基址寄存器加变址寄存器间接寻址,将程序存储器中表格数据读出传送到累加器 A。
访问程序存储器的数据传送指令
指令助记符 操作功能 字节数 机器周期数
MOVC A,@A+DPTR A←((A)+(DPTR)) 1 2
MOVC A,@A+PC PC←(PC)+1,A←((A)+(PC)) 1 2
MOV DPTR,#0203H ;(DPTR)=0203H
MOVX A,@DPTR ;(A)=((DPTR))=0FFH
MOV 30H,A ;(30H)=(A)=0FFH
MOV A,#0FH ;(A)=0FH
MOVX @DPTR,A ;((DPTR))=(A),(0203H)=0FH
新知讲授
访问程序存储器的数据传送指令 - 示例
例 3 - 6:(A)=30H, 执行地址 1000H 处的指令:
例 3 - 7:(DPTR)=8000H,(A)=40H 执行如下指令:
访问程序存储器的数据传送指令
例 3 - 6 指令为:
1000H:MOVC A,@A+PC
MOVC A,@A+DPTR
例 3 - 7 指令为:
本指令占用 1 字节,执行结果为将程序存储器中 1031H 的内容送入 A。
执行结果为 (A)=(8040H)。
新知讲授
访问程序存储器的数据传送指令 - 特点
MOVC A,@A+DPTR:采用 DPTR 作为基址寄存器,可实现 64KB 程序存储器单元到累加器 A 的数据传送,数据表格可存于 64KB 地址范围任意处。
MOVC A,@A+PC:以 PC 作为基址寄存器,CPU 取完指令操作码时 PC 自动加 1,用 (PC)+1 作为基址。查表范围在 256 字节内,表格地址空间分配受限,编程需计算偏移量。偏移量 = 表首地址 -(MOVC 指令所在地址 + 1)。
访问程序存储器的数据传送指令
新知讲授
在实际编程中,合理选择数据传送指令可以优化程序。例如,尽量使用单字节、单机器周期的指令,减少指令执行时间和存储空间。同时,注意指令的顺序和组合,避免不必要的数据传送。
数据传送指令的优化
拓展知识
数据传送与系统性能
数据传送指令的使用频率和效率直接影响系统性能。频繁的数据传送可能导致系统响应变慢,因此需要合理规划数据存储和传送方式,提高系统的整体性能。
随堂检测1
数据传送类指令有多少条,属于什么类型的指令?
答案:数据传送类指令有 29 条,属于 “复制” 类型的指令。
访问片内数据存储器的 MOV A,#data 指令的功能和字节数分别是什么?
答案:功能是将立即数 data 送入累加器 A,字节数是 2。
练一练
随堂检测2
堆栈操作指令 PUSH direct 和 POP direct 的作用分别是什么?
答案:PUSH direct 的作用是将 direct 单元内容压入堆栈,即 SP←(SP)+1,(SP)←(direct);POP direct 的作用是将堆栈内容弹出到 direct 单元,即 direct←((SP)),SP←(SP)-1。
数据交换指令 XCHD A,@Ri 的功能是什么?
答案:将累加器 A 的低 4 位与 @Ri 所指单元的低 4 位进行交换。
练一练
随堂检测3
访问片外数据存储器的数据传送指令 MOVX A,@DPTR 的字节数和机器周期数是多少?
答案:字节数是 1,机器周期数是 2。
访问程序存储器的数据传送指令 MOVC A,@A+PC 的查表范围是多少?
答案:查表范围只能在 256 字节范围内 [即 (PC)+1H~(PC)+100H]。
练一练
随堂检测3
已知 (DPTR)=5000H,(A)=20H,执行 MOVC A,@A+DPTR 指令后,(A) 的值是多少?
答案:(A)=(5020H)。
在访问片内数据存储器的指令中,MOV Rn,A 和 MOV A,Rn 的区别是什么?
答案:MOV Rn,A 是将累加器 A 的内容传送到工作寄存器 Rn 中;MOV A,Rn 是将工作寄存器 Rn 的内容传送到累加器 A 中。
练一练
师生互动
1
请各小组讨论,在实际编程中,如何根据不同的数据传送需求选择合适的数据传送类指令,以提高程序的执行效率和可读性。
课题小结
1. 访问片内数据存储器的一般数据传送指令
数据传送类指令
2. 访问片外数据存储器的数据传送指令
堆栈操作指令
数据交换指令
示例
特点
示例
3. 访问程序存储器的数据传送指令
谢谢观看
THANKS
Lavf58.46.101
$