[信息与通信]MCS-51单片机指令系统-数据传送类指令

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
3.3 MCS-51指令系统
3.3.1 数据传送类指令(29条) 传送类指令分成两大类 1. MOV,一般传送 2. 非MOV,特殊传送, 如:MOVC、MOVX、PUSH、POP、 XCH、XCHD及SWAP。 对PSW的影响
• 1. 访问片内数据存储器的一般数据传送指令 • 该类指令的功能是实现数在片内RAM单元之间、 寄存器之间、寄存器与RAM单元之间的传送。所有 指令具有统一的格式,其格式如下: • MOV <目的操作数>,<源操作数>;目的操作数单 元←源操作数(或单元) • 操作码助记符都是"MOV",目的操作数和源操作数 不同寻址方式的组合就派生出该类的全部指令。 因此,记忆这类指令的关键在于掌握两个操作数 的各种寻址方式的组合关系。
1FFDH 1FFEH 1FFFH 2000H 2001H
83H
2009H
0 1 4 9 16 25 36 49 64 81
(2) 读、写片外RAM 指令 • MCS-51单片机CPU对片外扩展的数据存储器 RAM或I/O口进行数据传送,必须采用寄存 器间接寻址的方法,通过累加器A来完成。 这类指令共有以下4条单字节指令,指令 操作码助记符都为MOVX。
2. 特殊传送指令

访问程序存储器的数据传送指令又称作 查表指令,采用基址寄存器加变址寄存器 间接寻址方式,把程序存储器中存放的表 格数据读出,传送到累加器A。共有如下两 条单字节指令,指令操作码助记符为MOVC。
2. 特殊传送指令 (1) ROM查表指令 1) MOVC A,@A+DPTR 以DPTR与偏移量之和作为程序存储器地 址,将该地址单元的内容传送到A。指令 执行后DPTR的内容不变。 2) MOVC A,@A+PC 以PC的当前值与偏移量之和作为程序存储 器地址,将该地址单元的内容传送到A。 指令执行后PC的内容不变。
2) 以Rn 为目的操作数的指令
A MOV Rn, direct #data 例:若(60H)= 30H 执行 MOV R6,60H 结果:(R6)= 30H。
3) 以direct 为目的操作数的指令
MOV direct,
A Rn direct1 @Ri #data
例:若(R0)=30H,(30H)=25H 执行MOV 40H,@R0 指令 结果:(40H)=25H。
• 例 从片外程序存储器2000H单元 开始存放0~9的平方值,以DPTR作 为基址寄存器进行查表得3的平方 值。
1FFDH 1FFEH 1FFFH 2000H 0 1 4 9 16 25 36 49 64 81
• • • • •
如果用以DPTR为基址寄存器 2001H 的查表指令,其程序如下: MOV DPTR, #2000H;置表首地址 MOV A, #03H MOVC A, @A+DPTR 2009H
(2) 读、写片外RAM 指令
注: (1) #data(立即数)不能用作目的操作数; 2) 源操作数与目的操作数不能相同(除 direct外); 3) 寄存器寻址与寄存器及其间址间不能相互传送。
1) 以A为目的操作数的指令 Rn MOV A, direct @Ri #data 例:若(R1)= 30H,(30H)= 68H 执行 MOV A,@R1 结果:(A)= 68H。
1. 一般传送指令 (1) 16位传送指令 MOV DPTR,# data16 将源操作数data16(通常是常数) 送入目的操作数DPTR中。 例 MOV DPTR,#5678H 结果为: (DPH)= 56H,(DPL)= 78H。
(2) 8位传送指令 目的操作数 传送关系 A Rn direct1 @Ri … 源操作数 A Rn direct2 @Ri #data
• 前一条指令采用DPTR作基址寄存器,因此可以很方便地把 一个16位地址送到DPTR,实现在整个64 KB程序存储器单 元到累加器A的数据传送。即数据表格可以存放在程序存 储器64 KB地址范围的任何地方。 • 后一条指令以PC作为基址寄存器,CPU取完该指令操作码 时PC会自动加1,指向下一条指令的第一个字节地址,即 此时是用(PC)+1作为基址的。另外,由于累加器A中的内 容为8位无符号数,这就使得本指令查表范围只能在256个 字节范围内(即(PC)+1H~(PC)+100H),使表格地址空间分 配受到限制。同时编程时还需要进行偏移量的计算,即 MOVC A,@A+PC指令所在地址与表格存放首地址间的距离 字节数的计算,并需要一条加法指令进行地址调整。偏移 量计算公式为: • 偏移量 = 表首地址-(MOVC指令所在地址+1)
• MOV
• wenku.baidu.comOV
R0,#30H
A,@R0
;R0=30H
;A=40H
;R1=40H ;B=10H ;(40H) =0CAH ;(P2)=0CAH
• MOV
• MOV • MOV • MOV • MOV
R1,A
B,@R1 @R1,P1 P2,P1 10H,#20H
;(10H)←20H
•执行上述指令后的结果为:(R0)=30H,(R1)=(A)=40H, •(B)=10H,(40H)=(P1)=(P2)=CAH,(10H)=20H。
4) 以@Ri为目的操作数的指令
A
MOV @Ri,
direct #data
例 若(R1)=56H,(A)=35H 执行 MOV @R1,A 指令 结果:(56H)=35H
访问片内RAM的一般传送指令操作关系图
累加器A
Direct 直接地址
@Ri间址
Rn寄存器
Data立即数
例 设内部RAM(30H)=40H,(40H)=10H, (10H)=00H(P1)=0CAH,分析以下程序执行后各单元 及寄存器、P2口的内容。
• 设MOVC指令所在地址(PC)=1FFDH,则 偏移量=2000H-(1FFDH+1)=02H。 • 相应的程序如下: MOV A,#03H ;(A)←03H ADD A,#02H ;用加法指令 进 行地址调整 MOVC A,@A+PC ;(A)←(A+PC+1) 执行结果为:(PC)=1FFEH,(A)=09。
相关文档
最新文档