1.1k likes | 1.27k Vues
第 3 章 MCS-51 指令系统. 指令系统概述 MCS-51 指令的寻址方式 MCS-51 指令系统介绍. 3.1 指令系统概述. 指令 —— 计算机能够识别和执行的命令。 指令系统 —— 指令的集合或全体,因机器而异。. 指令的 三种表示形式 二进制形式 —— 直接为 CPU 执行 16 进制形式 —— 阅读和书写 汇编形式 —— 编写程序。. MCS-51 指令系统. 51 系列单片机指令集含有 111 条指令 按指令 所占字节数 分类: 单字节 ( 49 条); 双字节 ( 46 条); 3 字节 ( 16 条)
E N D
第3章 MCS-51 指令系统 指令系统概述 MCS-51 指令的寻址方式 MCS-51 指令系统介绍
3.1 指令系统概述 指令——计算机能够识别和执行的命令。 指令系统——指令的集合或全体,因机器而异。 指令的三种表示形式 二进制形式——直接为CPU执行 16进制形式——阅读和书写 汇编形式——编写程序。
MCS-51指令系统 51系列单片机指令集含有111条指令 按指令所占字节数分类: 单字节(49条);双字节(46条);3字节(16条) 按指令执行时间分类: 单周期(64条);双周期(45条);4周期(2条) 按指令的功能分类: 数据传送类(29条);算术运算类(24条); 逻辑运算及移位类(24);控制转移类(17条); 位操作类(17条)
MCS-51 指令格式 [标号:]操作码 [目的操作数][,源操作数][;注释] 方括符[ ]表示可选项 标号代表指令所在地址,1-8个字母/数字,“:”结尾 操作码就是指令功能助记符,指令实体 目的操作数 源操作数 注释,以 “; ”开头
MCS-51 指令中所用符号说明 • Rn ——R0~R7中的一个 • #data ——8位立即数 • #data16 ——16位立即数 • direct ——8位直接地址 • @Ri——R0或R1,可以间接寻址 • @DPTR ——可按DPTR中地址对外部存储器寻址 • bit ——8位位地址 • addr11 ——11位目标地址 • addr16 ——16位目标地址 • rel——8位地址偏移量 • $——当前指令的地址
3.2 MCS-51 指令的寻址方式 寻址方式:用何种方式寻找参与运算的操作数或操作数的真实地址。 MCS-51单片机有七种寻址方式: • 立即寻址 • 直接寻址 • 寄存器寻址 • 寄存器间接寻址 • 变址寻址(基址寄存器+变址寄存器间接寻址) • 相对寻址 • 位寻址
3.2.1 立即寻址 指令直接给出一个操作数,它紧跟在操作码后,通常称它为立即数(8位或16位)。 指令形式: 操作码 立即数 特点:指令码中含有操作数本身 例如: MOV A, #30H ;A ← #30H MOV DPTR, #8000H ;DPTR ← #8000H
立即寻址方式演示1 立即数
立即寻址方式演示2 立即数
3.2.2 直接寻址 指令直接给出操作数所在存储单元的地址,它紧跟在操作码后。 此方式是访问专用寄存器的唯一方式(80H ~ FFH) 也可访问内部RAM的低128(8052的256)字节 操作码 操作码 指令形式: 操作码 操作数地址 目的操作数地址 操作数地址 立即数 源操作数地址 特点:指令码中含有操作数地址,机器根据该地址寻找 操作数。 例如: MOV A, 30H ; A ←(30H) ANL 30H, #30H ;(30H)←(30H)∧#30H MOV 50H, 30H ;(50H)←((30H))
直接寻址方式演示1 立即数
直接寻址方式演示2 立即数
3.2.3 寄存器寻址 指令选定的寄存器内容就是实际操作数,寄存器可为: R0~R7,由RS1、RS2两位的值选定工作寄存器区 A、B、CY(位),DPTR 指令形式: 操作码 操作码 操作码 立即数 直接地址 特点:指令码中含有操作数地址所在的寄存器号,根据 该寄存器号可以找到操作数。 例如: MOV A, R3 ;A ←(R3) ANL A, #30H MOV R0, 30H
3.2.4 寄存器间接寻址 指令所选中的寄存器内容是实际操作数地址(而不是操作数) 寻址范围 内部RAM(00H-7FH/FFH)使用寄存器R0,R1,SP 外部数据存储器(0000H-FFFFH) 指令形式: 操作码 操作码 操作码 立即数 直接地址 特点:地址的地址。 例如: MOV A, @R0 ;A ← ((R0)) MOVX A, @DPTR ;A ← ((DPTR)) MOV @R0, #30H MOV @R0, 30H
寄存器间接寻址方式演示1 立即数
寄存器间接寻址方式演示2 立即数
3.2.5 变址寻址(基址寄存器+变址寄存器间接寻址) 此种寻址方式以DPTR或PC作基址寄存器,A作变址寄存器(存放8位无符号数),两者相加形成16位程序存储器地址作操作数地址。 指令形式: 操作码 此指令用于查表 特点: 操作数=基地址+地址偏移量 指令码内隐含存放基地址的寄存器(DPTR/PC)号 DPTR/PC中的基地址常常是表格的起始地址,累加器中存放偏移量rel。 例如: MOVC A, @A+DPTR MOVC A, @A+PC
变址寻址方式演示 立即数
3.2.6 相对寻址 此种寻址方式以程序计数器PC的内容为基地址,加上指令中给出的偏移量rel,所得结果为转移目标地址,用于转移指令。 偏移量rel是一8位有符号补码数,范围128~+127。所以转移范围应在当前PC指针的128~+127之间某一程序存储器地址中。 指令形式: 操作码 操作码 操作码 rel 直接地址 立即数 rel rel 特点: 操作码中含有相对地址偏移量rel 目标地址=源地址+转移指令字节数rel 源地址=相对转移指令的始址 例如: JNZ rel ;累加器A不等于零则转移 JBBIT,rel CJNE A,#data,rel
相对寻址方式演示 立即数
3.2.7 位寻址 以访问触发器的方式对内部RAM、特殊功能寄存器SFR中的位地址空间进行访问称之为位寻址。可被寻址的位: 片内RAM的20H~2FH单元,位地址00H ~ 7FH; SFR中12个能被8整除的字节地址,位地址80H以上。 特点: 操作数是8位二进制数中的某位 指令码中含有位地址 位地址用bit表示 例如: MOV C,00H ;(C) ← (00H) ANL C,90H ;(C) ← (C)∧((90H))
方式 利用的变量 使用的空间 寄存器 R0~R7,A,B,CY,DPTR 片 内 直接寻址 direct 片内RAM低128字节 特殊功能寄存器SFR 寄存器间址 @R0,@R1,@SP @R0,@R1,@DPTR 片内RAM 片外RAM与I/O口 立即数 #data 程序存储器 基址加变址 @A+PC @A+DPTR 程序存储器 相对寻址 PC+rel 程序存储器 位寻址 bit 片内RAM的20H~2FH 部分SFR 总结 寻址方式与相应的寻址空间
3.3 MCS-51 指令系统介绍 • 数据传送类指令: (29条) • 算术运算类指令: (24条) • 逻辑运算及移位类指令: (24条) • 控制转移类指令: (17条) • 位操作(布尔操作)类指令:(17条)
3.3.1 数据传送指令(5种/29条) • 内部存储器间传送: (MOV — 16条) • 外部数据存储器与累加器间传送: (MOVX — 4条) • 程序存储器向累加器传送: (MOVC — 2条) • 数据交换: (XCH,XCHD,SWAP — 5条) • 堆栈操作: (PUSH,POP — 2条)
Acc 累加器 @Ri 间接寻址 Direct 直接寻址 Rn 寄存器 #data 立即数 内部存储器间数据传送路径
内部数据传送指令(16条) 特点:源操作数在内部,目的操作数也在 内部。 分四类介绍如下 以累加器A为目的字节的传送指令(4条) 以Rn为目的字节的传送指令(3条) 以直接地址为目的字节的传送指令(5条) 以间接地址为目的字节的传送指令(4条)
以累加器A为目的字节的传送指令 (1)立即数送累加器 MOV A,#data ;A ←#data (2)寄存器内容送累加器 MOV A,Rn ;A ← (Rn) (n=0~7) (3)内部RAM或SFR内容送累加器 MOV A,direct ; A ← (direct) (4)内部RAM内容送累加器 MOV A,@Ri ;A ← ((Ri)) (i=0,1)
立即数送累加器演示 立即数
寄存器内容送累加器演示 立即数
内部RAM内容送累加器演示 立即数
以Rn为目的字节的传送指令 (5)立即数送寄存器 MOV Rn,#data ; (Rn) ← #data (n=0~7) (6)累加器内容送寄存器 MOV Rn,A ;Rn ← (A) (n=0~7) (7)内部RAM或SFR内容送寄存器 MOV Rn,direct ;Rn ← (direct) (n=0~7)
立即数送寄存器演示 立即数
累加器内容送寄存器演示 立即数
以直接地址为目的字节的传送指令 (8)立即数送内部RAM或SFR MOV direct,#data ; direct ← #data (9)累加器内容送内部RAM或SFR MOV direct ,A ; direct ← (A) (10)寄存器内容送内部RAM或SFR MOV direct ,Rn ; direct ← (Rn) (n=0~7) (11)内部RAM或SFR之间直接传送 MOV direct1,direct2 ; direct1 ← (direct2) (12)内部RAM内容送内部RAM或SFR MOV direct,@Ri ; direct ← ((Ri)) (i=0,1)
立即数送内部RAM或SFR演示 立即数
以间接地址为目的字节的传送指令 (13)立即数送内部RAM MOV @Ri ,#data ; (Ri) ← #data(i=0,1) (14)累加器内容送内部RAM MOV @Ri ,A ; (Ri) ← (A)(i=0,1) (15)内部RAM或SFR内容送内部RAM MOV @Ri ,direct ; (Ri) ← (direct)(i=0,1) (16)16位立即数传送指令 MOV DPTR ,#data16 ; DPTR ← #data16 ; DPH ← #dataH ; DPL ← #dataL
立即数送内部RAM演示 立即数
累加器内容送内部RAM演示 立即数
16位立即数传送指令演示 立即数
外部数据存储器与累加器间传送指令(4条) 格式: MOVX A,@DPTR ;A ← ((DPTR)) MOVX @DPTR,A ; (DPTR) ← (A) MOVX A,@Ri ; A ← ((Ri)) (i=0,1) MOVX @Ri , A ; A ← ((Ri)) (i=0,1) 特点: 单字节指令 第1、2条指令可以在外部RAM 64K范围寻址; 第3、4条指令可以对外部RAM的第0页寻址; 寻址范围是0000H~00FFH。
外部数据存储器内容送累加器演示 立即数
累加器内容送外部数据存储器演示 立即数
外部数据存储器内容送累加器演示 立即数