1 / 110

第 3 章 MCS-51 指令系统

第 3 章 MCS-51 指令系统. 指令系统概述 MCS-51 指令的寻址方式 MCS-51 指令系统介绍. 3.1 指令系统概述. 指令 —— 计算机能够识别和执行的命令。 指令系统 —— 指令的集合或全体,因机器而异。. 指令的 三种表示形式 二进制形式 —— 直接为 CPU 执行 16 进制形式 —— 阅读和书写 汇编形式 —— 编写程序。. MCS-51 指令系统. 51 系列单片机指令集含有 111 条指令 按指令 所占字节数 分类: 单字节 ( 49 条); 双字节 ( 46 条); 3 字节 ( 16 条)

wallis
Télécharger la présentation

第 3 章 MCS-51 指令系统

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第3章 MCS-51 指令系统 指令系统概述 MCS-51 指令的寻址方式 MCS-51 指令系统介绍

  2. 3.1 指令系统概述 指令——计算机能够识别和执行的命令。 指令系统——指令的集合或全体,因机器而异。 指令的三种表示形式 二进制形式——直接为CPU执行 16进制形式——阅读和书写 汇编形式——编写程序。

  3. MCS-51指令系统 51系列单片机指令集含有111条指令 按指令所占字节数分类: 单字节(49条);双字节(46条);3字节(16条) 按指令执行时间分类: 单周期(64条);双周期(45条);4周期(2条) 按指令的功能分类: 数据传送类(29条);算术运算类(24条); 逻辑运算及移位类(24);控制转移类(17条); 位操作类(17条)

  4. MCS-51 指令格式 [标号:]操作码 [目的操作数][,源操作数][;注释] 方括符[ ]表示可选项 标号代表指令所在地址,1-8个字母/数字,“:”结尾 操作码就是指令功能助记符,指令实体 目的操作数 源操作数 注释,以 “; ”开头

  5. MCS-51 指令中所用符号说明 • Rn ——R0~R7中的一个 • #data ——8位立即数 • #data16 ——16位立即数 • direct ——8位直接地址 • @Ri——R0或R1,可以间接寻址 • @DPTR ——可按DPTR中地址对外部存储器寻址 • bit ——8位位地址 • addr11 ——11位目标地址 • addr16 ——16位目标地址 • rel——8位地址偏移量 • $——当前指令的地址

  6. 3.2 MCS-51 指令的寻址方式 寻址方式:用何种方式寻找参与运算的操作数或操作数的真实地址。 MCS-51单片机有七种寻址方式: • 立即寻址 • 直接寻址 • 寄存器寻址 • 寄存器间接寻址 • 变址寻址(基址寄存器+变址寄存器间接寻址) • 相对寻址 • 位寻址

  7. 3.2.1 立即寻址 指令直接给出一个操作数,它紧跟在操作码后,通常称它为立即数(8位或16位)。 指令形式: 操作码 立即数 特点:指令码中含有操作数本身 例如: MOV A, #30H ;A ← #30H MOV DPTR, #8000H ;DPTR ← #8000H

  8. 立即寻址方式演示1 立即数

  9. 立即寻址方式演示2 立即数

  10. 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))

  11. 直接寻址方式演示1 立即数

  12. 直接寻址方式演示2 立即数

  13. 3.2.3 寄存器寻址 指令选定的寄存器内容就是实际操作数,寄存器可为: R0~R7,由RS1、RS2两位的值选定工作寄存器区 A、B、CY(位),DPTR 指令形式: 操作码 操作码 操作码 立即数 直接地址 特点:指令码中含有操作数地址所在的寄存器号,根据 该寄存器号可以找到操作数。 例如: MOV A, R3 ;A ←(R3) ANL A, #30H MOV R0, 30H

  14. 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

  15. 寄存器间接寻址方式演示1 立即数

  16. 寄存器间接寻址方式演示2 立即数

  17. 3.2.5 变址寻址(基址寄存器+变址寄存器间接寻址) 此种寻址方式以DPTR或PC作基址寄存器,A作变址寄存器(存放8位无符号数),两者相加形成16位程序存储器地址作操作数地址。 指令形式: 操作码 此指令用于查表 特点: 操作数=基地址+地址偏移量 指令码内隐含存放基地址的寄存器(DPTR/PC)号 DPTR/PC中的基地址常常是表格的起始地址,累加器中存放偏移量rel。 例如: MOVC A, @A+DPTR MOVC A, @A+PC

  18. 变址寻址方式演示 立即数

  19. 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

  20. 相对寻址方式演示 立即数

  21. 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))

  22. 方式 利用的变量 使用的空间 寄存器 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 总结 寻址方式与相应的寻址空间

  23. 3.3 MCS-51 指令系统介绍 • 数据传送类指令: (29条) • 算术运算类指令: (24条) • 逻辑运算及移位类指令: (24条) • 控制转移类指令: (17条) • 位操作(布尔操作)类指令:(17条)

  24. 3.3.1 数据传送指令(5种/29条) • 内部存储器间传送: (MOV — 16条) • 外部数据存储器与累加器间传送: (MOVX — 4条) • 程序存储器向累加器传送: (MOVC — 2条) • 数据交换: (XCH,XCHD,SWAP — 5条) • 堆栈操作: (PUSH,POP — 2条)

  25. Acc 累加器 @Ri 间接寻址 Direct 直接寻址 Rn 寄存器 #data 立即数 内部存储器间数据传送路径

  26. 内部数据传送指令(16条) 特点:源操作数在内部,目的操作数也在 内部。 分四类介绍如下 以累加器A为目的字节的传送指令(4条) 以Rn为目的字节的传送指令(3条) 以直接地址为目的字节的传送指令(5条) 以间接地址为目的字节的传送指令(4条)

  27. 以累加器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)

  28. 立即数送累加器演示 立即数

  29. 寄存器内容送累加器演示 立即数

  30. 内部RAM或SFR内容送累加器演示 立即数

  31. 内部RAM内容送累加器演示 立即数

  32. 以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)

  33. 立即数送寄存器演示 立即数

  34. 累加器内容送寄存器演示 立即数

  35. 内部RAM或SFR内容送寄存器演示 立即数

  36. 以直接地址为目的字节的传送指令 (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)

  37. 立即数送内部RAM或SFR演示 立即数

  38. 累加器内容送内部RAM或SFR演示 立即数

  39. 寄存器内容送内部RAM或SFR演示 立即数

  40. 内部RAM或SFR之间直接传送演示 立即数

  41. 内部RAM或SFR之间直接传送演示 立即数

  42. 以间接地址为目的字节的传送指令 (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

  43. 立即数送内部RAM演示 立即数

  44. 累加器内容送内部RAM演示 立即数

  45. 内部RAM或SFR内容送内部RAM演示 立即数

  46. 16位立即数传送指令演示 立即数

  47. 外部数据存储器与累加器间传送指令(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。

  48. 外部数据存储器内容送累加器演示 立即数

  49. 累加器内容送外部数据存储器演示 立即数

  50. 外部数据存储器内容送累加器演示 立即数

More Related