第四章 指令系统、寻址方式
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2个机器周期指令
4个机器周期指令
45条
2条
举例: 1、单字节指令 MOV R0, A D7 1 D6 1 D5 1 D4 1 D3 1 ; R0← (A) D2 0 D1 0 注:()表取内容 D0 0 F8H
2、 双字节指令 MOV 20H,R0 ;20H←(R0)
D7 1 0 D6 0 0 D5 0 1 D4 0 0 D3 1 0 D2 0 0 D1 0 0 D0 0 0 操作码 88H
一、立即寻址
指令中给出的操作数就是实际操作数,不用寻址。
例:MOV A,#70H ;#表示立即数
二、直接寻址
指令中直接给出操作数存放的地址,直接就是结果地址。 例:ANL 70,#48H ;若(70H)=0FH,结果(70H)=?
说明:
1、内部RAM 2、特殊功能寄存器(SFR),而 且是唯一的方式 3、位地址空间
Direct
@Ri
@Ri
片内字节传送 (15条)
片内字节传送指令举例 格式:MOV 〈目的字节〉,〈源字节〉 功能:传送位数据。〈目的字节〉←〈源字节〉
举例:
(1)MOV 1字节 编码: 1 1 0 1 A,Rn 1周期 1rrr E8H~EFH ;n=0~7 , A ←(Rn)
r r r 从 000~111 对应工作寄存器R0~R7 (2)MOV A,direct 2字节 1周期 ; A ←(direct)
@Ri @DPTR
MOVX A, @DPTR MOVX @DPTR, A MOVX A, @Ri MOVX @Ri, A ;外RAM低8位地址
A
外 RAM @Ri @DPTR
ቤተ መጻሕፍቲ ባይዱ;高8位地址, MOV P2, X
2、访问程序存储器(内外统一) (2条)
MOVC A, @A+PC
MOVC A, @A+DPTR
四、堆栈传送(2条)
Rn
Rn
MOV Rn, #Data MOV Rn, Direct MOV Rn, A
A
A
#Data #Data Direct
MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV
A, #Data A, Direct A, @Ri A, Rn Direct, #Data Direct, Direct Direct, @Ri Direct, A Direct, Rn @Ri, #Data @Ri, Direct @Ri, A
;A←(A+PC)
;A ←(A+DPTR)
交换传送(累加器)(5条)
1、字节交换:XCH A,字节〉;(3条) A
d,@
RAM
功能:将累加器A与字节变量互相交换。
XCH A,Direct XCH A,@Ri XCH A,Rn 2、XCHD A, @Ri ;半字节交换(1条)
Rn
A
高4位
低4位
(Ri)
综合举例:
内部RAM:(30H)=40H; (40H)=10H; P1口上数据为CAH。 MOV R0, #30H
MOV A, @R0
MOV R1, A MOV B, @R1 MOV @R1, P1 MOV P2, P1 结果:(R0)= (R1)= (A)= (B)= (40H)= (P1)= (P2)=
举例:MOV C, 06H
;与、或、异或
单操作数:CLR、CPL、RL、RLC、RR、RRC ;清零、取反、左移、带进位左移、右移、带进位右
移
左循环: RL A 带进位左循环:RLC A
右循环:RR A
带进位右循环:RRC A
高低四位交换:SWAP A
字节逻辑运算(24条)
单操作数:CLR、CPL 、RL、RLC 、RR、RRC Rn Direct 双操作数:ANL、ORL、XRL
第四章 指令系统
4.1 概述
指令系统:计算机所能识别和执行的所有指令的集合。
原始的指令格式和现行指令格式 第一个操作 第二操作数 操作码 数地址 地址
MCS-51总共有111条指令: 字 长 单字节指令 49条
结果数地 址
下一条指令 地址
时 间 1个机器周期指令 64条
双字节指令
三字节指令
45条
17条
例:设栈的状态如右图,执行 POP 20H POP 30H
问: (20H)= ? (30H)= ? SP= ? 及栈的变化。
举例:A=1FH,DPTR=0123H 主程序
PUSH A
PUSH DPL PUSH DPH LCALL S1 POP DPH 调用子程
POP DPL
POP A
4.3.2 算术运算
操作:A(商),B(余数) A/B 对标志位的影响:C=0,若原来B=0则OV=1,否则OV=0 例5:A=58H, B=10H 执行:DIV AB
B= ?
08H
A= ?
05H
C= ?
0
OV= ?
0
4.3.3 逻辑运算 (36条)
字节逻辑运算(24条)
1、字节逻辑运算
位逻辑运算 (12条)
双操作数:ANL、ORL、XRL
A
@Ri
#Data
Direct
A
2、位逻辑运算 (12条)
单操作数:CLR、SETB、CPL (6条) 双操作数:ANL、ORL(无XRL)、MOV(位传送) (6条) 练习,写出实现下列功能的指令(程序): 当且仅当P1.0=1、 Acc.7=1和OV=0时,进位标志Cy置位, 即 C = P1.0 • Acc.7 • OV 将A的Acc.0、Acc.4、Acc.5复位,其它位不变 将A的Acc.0、Acc.4、Acc.5置位,其它位不变 将A的Acc.0、Acc.4、Acc.5取反,其它位不变
三、寄存器寻址 指令操作码的低三位给出寄存器编号 例:INC R0 四、寄存器间接寻址 用R0、R1中的内容表示存放数据的地址 例:ANL A,@ R0 ;A←(A)•((R0))
执行前:(A)=0EEH、(R0)=60H、(60H)=0F0H
@表示间接寻址
结果:(A)=0E0H
五、变址寻址
只能访问程序存储器,MOVC的C--Code DPTR或PC和A中的偏移量相加的结果作为操作数的地址。 例1:MOVC A, @A+DPTR 例2:MOVC A, @A+PC
3、 SWAP A; 高低半字节自交换 (1条)
高4位
低4位
堆栈操作指令(2条)
(1)PUSH direct 进栈或压栈 4 (2) POP direct 出栈或弹出 堆栈的概念 是一种存储器操作,按先进后出规则
3
2 1
另一种操作称队列,按先进先出规则
例:设初始输入序列为1,2,3,4,5,利用一栈操作产生一个 输出序列,下列哪一个序列是不可能通过栈操作产生的? A、1,2,3,4,5 C、4,3,2,1,5 B、5,3,4,1,2 D、3,4,5,2,1
仿真
16位目的地址传送(1条)
MOV DPTR, #data16 例:用查表发求 (A)=0~9 的平方 MOV DPTR, #TAB MOVC A, @A+DPTR
RET
TAB: DB 00, 01, 04, 09, 16 DB 25, 36, 49, 64, 81
片外专用传送(6条) 1、访问外部数据存储器(4条)
指令归纳(24条) 典型指令说明:
B
MUL AB DIV AB
ADD A, <X> ADDC A, <X> SUBB A,<X>
Rn
#Data
A
INC <X> DEC <X> DA A DPTR
INC DPTR Direct
@Ri
一
举例:
例1:A=85H, (20H)=AFH, C=1
执行 ADD A,20H和 ADDC A,20H 求:C= AC= P= OV= A= ? 例2:两个三字节二进制数相加。 (52H)(51H)(50H)←(32H)(31H)(30H)+(42H)(41H)(40H) 8C 2C 1D 35 97 98 56 94 85
六、相对寻址
专门为程序转移设置,(PC)+偏移量作为转移地址。 例: JC 10H ;若C=1转
1000 40 10 JC 10H 1002
…
1012
七、位寻址 在指令中直接给出位地址。
指令系统
指令系统:计算机所能识别和执行的所有指令的集合。
MCS-51总共有111条指令: 单字节(49条)、双字节(45条)、三字节(17条) 1机器周期(64条)、2机器周期(45条)、4机器周期(2条) MCS-51有7种寻址方式: 1、立即寻址 2、直接寻址 #Data Direct 5、变址寻址 6、相对寻址
MUL AB ;乘法,1字节(A4H),4周期 操作: (B)15-8(A)7-0 AB 对标志位的影响:C=0,若结果B=0则OV=0,否则OV =1 例4:A=50H, B=A0H
执行:MUL AB
B= ? 32H A= ? 00H C= ? 0 OV= ? 1
DIV AB ;除法,1字节(84H),4周期
位逻辑运算(12条)
单操作数:CLR、SETB、CPL 双操作数:ANL、ORL(无XRL) 位传送:MOV bit, C MOV C, bit
CLR SETB 3 CPL
bit
原、反
4 2
C
3
CLR SETB CPL
说明:(1)双操作数目的地址只能是C
(2)bit可以是原数或是反数参与操作
如: ANL C,bit ANL C, /bit
3、寄存器寻址
Rn
7、位寻址
4、寄存器间接寻址 @Ri
4.3 指令系统
MCS-51指令系统,按其功能分为四大类
1、数据传送(29条) 2、算术运算(24条) 3、逻辑运算(36条) 4、控制转移(22条) 4.3.1 数据传送(29条) 一、片内传送 字节传送(15条),16位目的地址传送(1条) 二、片外专用传送(6条) 三、交换传送(5条) 例:MOV A,#30H 例:ADD A,#30H 例:ANL A,#30H 例:LJMP START 补充题 补充题 补充题
操作数
20H
3、三字节指令 MOV 60H,#2FH ;60H← 2FH D7 D6 D5 D4 D3 D2 D1 D0
0
0 0
1
1 0
1
1 1
1
0 0
0
0 1
1
0 1
0
0 1
1
0 1
操作码
75H
操作数地址60H
操作数 2FH
4.2 寻址方式
将指令中操作数的形式地址→物理地址(或结果地址)的方式。 在MCS-51系统中有7种寻址方式: 1、立即寻址 5、变址寻址 2、直接寻址 3、寄存器寻址 4、寄存器间接寻址 6、相对寻址 7、位寻址
(1)PUSH direct 2字节 2周期 direct SP ←SP+1 C0H XXH
编码: 1100 0000 功能:进栈
(SP) ←(direct)
例:设A=10H,B=36H,SP=07H,执行 PUSH 0E0H PUSH 0F0H 问:A= ? B= ? SP= ? 及栈的变化。 仿真
SP→ 07 08 SP→ 09 0A 0B 0C
XX 10H 36H
(2)POP direct
2字节 2周期 D0H XXH SP→ 07 08 SP→ 09 0A 0B 0C XX 10H 36H
编码: 1101 0000 功能:进栈
direct (direct) ← (SP)
SP ←SP-1
MOV A, 30H
ADD A, 40H MOV 50H, A MOV A, 31H ADDC A, 41H
MOV A, 32H
ADDC A, 42H MOV 52H, A JC OVER
MOV 51H, A
DA A ;BCD码的加法调整, 1字节(D4H),1周期 IF[(A3-0)>9] OR [AC=1] THEN (A3-0)+6 AND IF[(A7-4)>9] OR [C=1] THEN (A7-4)+6 例3:两个三字节二进制数相加。 (52H)(51H)(50H)←(32H)(31H)(30H)+(42H)(41H)(40H) 92 92 83 35 97 98 56 94 85 MOV A, 30H ADD A, 40H DA A MOV 50H, A MOV A, 31H ADDC A, 41H DA A MOV 51H, A MOV A, 32H ADDC A, 42H DA A MOV 52H, A
编码: 1110 0101
direct
E5 XX
(3)MOV A,@Ri 1字节 编码: 1110 011i (4)MOV A,#data 2字节
; A ←((Ri))
1周期 i = 0,1 , E6H , E7H
A ←data(立即数)
1周期 74H XXH
编码:0111 0100 #data(8位)