MCS51单片机的指令系统
问执行以下各指令的结果
1、XCH A, R0 ;A=30H, R0=7AH
2、XCH A,@R0 ;A=0A5H,(30H)=7AH
3、SWAP A
;A=0A7H
17
2、算数运算指令
• 不带进位加法指令(4条) ADD A, Ri ADD A, direct ADD A, @Rj ADD A, #data
7
1、数据传送
• 数据传送到累加器A(4条)
MOV A,Ri MOV A, direct
MOV A, @Rj
MOV A, #data
•数据传送到工作寄存器 Ri (3条)
MOV Ri, A MOV Ri, direct MOV Ri, #data
注:无MOV Ri,Ri 传送指令 8
•数据传送到内部RAM或SFR(8条)
MOVC A,@A+DPTR
DPTR 0251H +
A 12H
A 1EH
0263H 1EH
ROM/EPROM
3
•相对寻址
PC ROM 2000H 40 2001H 06 2002H
2008H
JC 06H
JC 06H ALU
2002H
• 位寻址
CLR 6FH
4
MCS-51单片机寻址原则
• 程序存储器只能采用直接寻址、相对寻址 和基址加变址的间接寻址方式
SWAP A
14
第三章作业1
• 完成以下数据传送:
1、R1内容传送到R0
2、外部 RAM 20H 单元内容送内部RAM
20H 单元
3、外部 RAM 1200H 单元内容送R0
4、外部 R0M 2000H 单元内容送R0
5、外部 R0M 2000H 单元内容送外部 RAM
20H 单元
15
•在8051片内RAM中,已知 (30H)=38H,(38H)=40H,(40H)=48H,(48H)=90H 说出顺序执行下列指令后的结果。
MOV MOV MOV MOV MOV MOV MOV MOV
direct, A direct, Ri direct, direct direct, @Rj direct, #data @Rj, A @Rj, direct @Rj, #data
9
• 16位数据传送指令(1条)
MOV DPTR, #data16
18
例: 设(A)=0C3H, (R0)=0AAH 执行 ADD A, R0
(A) : 1100 0011 + (R0): 1010 1010
1 0110 1101
进位 半进位
结果: (A)=6DH, 标志位: CY=1, OV=1, AC=0
19
•带进位加法指令(4条)
ADDC A, Ri ADDC A, direct ADDC A, @Rj ADDC A, #data
• 堆栈操作指令(2条)
PUSH direct POP direct
• 累加器与片外RAM传送指令(4条)
MOVX MOVX MOVX MOVX
A, @DPTR @DPTR, A A, @Rj @Rj, A
(16位地址指针, 寻址范围64K)
(8位地址指针,寻址 范围256字节) 10
•查表指令(2条)
第三章 MCS-51单片机的指令系统
第一节、寻址方式
• 立即寻址
MOV A,#0FFH
•寄存器寻址
操作数
MOV A,R0
寄存器内容作为操作数
•寄存器间接寻址 MOV A,@R0
寄存器内容作为
R0 65H
操作数地址 注意:工作寄存器中仅
65H 47H
R0、R1可用于间接寻址,
A 47H
RAM
且MOV访问片内RAM,
• C--进位标志 有进位(借)位C=1
无进位(借)位C=0
• AC--半进位标志
• F0, F1--用户标志
• RS1,RS0--工作寄存器指针
• OV--溢出标志 , 溢出OV=1
• P--奇偶标志,A中奇数个1时,P=1
6
第二节、MCS-51指令系统
8051指令系统有111条指令组成 • 数据传送:28条 • 算数运算:24条 • 逻辑运算:25条 • 位操作: 17条 • 控制转移: 17条
MOVX访问片外RAM
1
•直接寻址
MOV A,69H
操作数的直接地址
直接寻址访问的存储空间:
• 特殊功能寄存器(只能用直接寻址访问) •片内RAM的低128字节(对于52系列片内 RAM高128字节,用寄存器间接寻址访问) • 位地址空间 • 程序存储器 如 LJMP addr16
2
• 变址寻址(基址寄存器+变址寄存器间接寻址)
近程查表:
MOVC A, @A+PC 只能查指令所在地址以后256字节范围内的表格
远程查表:
MOVC A, @A+DPTR 查表范围可达64K
11
例1:ROM中有一表格为
1010H : 02H
1011H : 04H
1012H : 06H
1013H : 08H
执行程序: 1000H: 1002H: 1003H:
MOV MOVC MOV
A, #0DH A, @A+PC R0, A
结果:(A)=02H, (R0)=02H , (PC)=1004H
12
例2:用DPTR为基址寄存器查表
在ROM 中,表格为: 7010H:02H 7011H:04H 7012H:06H 7013H:08H
执行程序: MOV A,#10H PUSH DPH
PUSH DPL MOV DPTR,#7000H MOVC A,@A+DPTR POP DPL
POP DPH 13
结果:(A)=02H, (DPTR)=原值
•字节交换指令(3条)
XCH A,Ri XCH A,direct XCH A,@Rj
• 半字交换(1条)
XCHD A,@Rj;
• A半字节交换
• 特殊功能寄存器(SFR)只能采用直接寻址 • 片内RAM低128字节可采用直接寻址,也
可采用寄存器间接寻址 • 片内RAM高128字节只能采用寄存器间接
寻址(针对52系统) • 片外RAM只能采用 MOVX 指令访问
5
二、程序状态字PSW(D0H)
C AC F0 RS1 RS0 OV F1 P
MOV A,40H MOV R1,A MOV P1,#0F0H MOV @R1,30H MOV DPTR,#1234H MOV 40H,38H MOV R1,30H MOV 90H,R1 MOV 48H,#30H MOV A,@R1
16
MOV P2, P1
•已知A=7AH, R0=30H, (30H)=A5H, PSW=81H