1 / 48

寻址方式 数据传送类指令 算术运算类指令 逻辑操作类指令 控制转移类指令 位操作指令 常用伪指令

第 章 MCS 51 指令系统. Single Chip Microcomputer. 本章内容. 寻址方式 数据传送类指令 算术运算类指令 逻辑操作类指令 控制转移类指令 位操作指令 常用伪指令. 单字节指令:. 7 0. 7 0. 7 0. 7 0. 操作码. 操作码. 操作码. 数据或寻址方式. 双字节指令:. 7 0. 7 0. 数据或寻址方式. 数据或寻址方式. 三字节指令:. 标号:.

Download Presentation

寻址方式 数据传送类指令 算术运算类指令 逻辑操作类指令 控制转移类指令 位操作指令 常用伪指令

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. 第章MCS51指令系统 Single Chip Microcomputer 本章内容 寻址方式 数据传送类指令 算术运算类指令 逻辑操作类指令 控制转移类指令 位操作指令 常用伪指令

  2. 单字节指令: 7 0 7 0 7 0 7 0 操作码 操作码 操作码 数据或寻址方式 双字节指令: 7 0 7 0 数据或寻址方式 数据或寻址方式 三字节指令: 标号: 操作码 操作数或操作数地址 ;注释 指令概述 ——指令格式 指令按字节长度可以分为三种: 例如: MOV A,R0 例如:MOV A,30H 指令的格式: 例如:MOV DPTR,#2010H

  3. START:MOV A,#20H;将20H送至A累加器中 RET NOP MOV P1,20H MOV A,#55H RL A SETB 20H

  4. 一、寻址方式(找信方式) 我的信在他那!找信去! ① 你能说出第二封信的“地址”吗? ② 注:找信是寻找信的“地址”!

  5. 目的地 信 立即数寻址 直接寻址 寄存器寻址 寄存器间接寻址 变址寻址 操作数 目的地 #55H #XXH 相对寻址 位寻址 MOV P1, #55H MOV A, #01H

  6. 目的地 立即数寻址 直接寻址 20H 寄存器寻址 直接给出地址20H——直接寻址 寄存器间接寻址 注:寻址是寻操作数的“地址”! 操作数 变址寻址 内部RAM 或SFR区 目的地 相对寻址 20H XXH 位寻址 MOV P1, 20H

  7. 目的地 立即数寻址 直接寻址 寄存器 R0-R7 A B DPTR 寄存器寻址 你能说出为什么叫寄存器寻址吗? 寄存器间接寻址 操作数 变址寻址 目的地 寄存器 XXH 相对寻址 位寻址 MOV P1, A

  8. 目的地 寄存器间接寻址寄存器 你能说出1号箱子和2号箱子分别对应内存中哪一部分吗? 立即数寻址 直接寻址 2号 寄存器寻址 寄存器间接寻址 信在2号箱子里 内部RAM 1号 变址寻址 3AH 65H 操作数 相对寻址 R0 R1 DPTR 寄存器 目的地 位寻址 3AH 3AH MOV P1, @R0

  9. ① 直接将20H这个数送P1口 ② 地址在寄存器R0里 ③ 地址是寄存器R0 ④ 地址是内存20H 对! 错! 错! 错! 寻址比较 MOV P1,R0 MOV P1,R0 MOV P1,@R0 MOV P1,20H MOV P1,#20H

  10. ① 直接将20H这个数送P1口 ② 地址在寄存器R0里面 ③ 地址是寄存器R0 ④ 地址是内存20H 对! 错! 错! 错! 寻址比较 MOV P1,R0 MOV P1,@R0 MOV P1,@R0 MOV P1,20H MOV P1,#20H

  11. ① 直接将20H这个数送P1口 ② 地址在寄存器R0里面 ③ 地址是寄存器R0 ④ 地址是内存20H 对! 错! 错! 错! 寻址比较 MOV P1,R0 MOV P1,@R0 MOV P1,20H MOV P1,20H MOV P1,#20H

  12. ① 直接将20H这个数送P1口 ② 地址在寄存器R0里 ③ 地址是寄存器R0 ④ 地址是内存20H 对! 错! 错! 错! 寻址比较 MOV P1,R0 MOV P1,@R0 MOV P1,20H MOV P1,#20H MOV P1,#20H

  13. 内部RAM 内部RAM 立即数寻址 3AH 65H 46H 65H 操作数 直接寻址 寄存器 目的地 寄存器寻址 3AH 46H A 寄存器间接寻址 变址寻址 DPTR PC 基址寄存器 12H 变址寄存器 34H 相对寻址 位寻址 MOVC A, @A+DPTR

  14. · · · · · · 立即数寻址 PC 2056H 直接寻址 寄存器寻址 PC 2002H 寄存器间接寻址 操作数 变址寻址 目的地 2002H =2056H PC + XXH 54H 相对寻址 位寻址 SJMP 54H

  15. · · · · · · 28H 27H 21H 21H 20H 20H 想一想: 如果想使27H单元的第3位置1,该怎么办呢? 立即数寻址 直接寻址 寄存器寻址 0 0 0 0 0 0 0 0 1 寄存器间接寻址 变址寻址 相对寻址 位寻址

  16. MSB位地址LSB 单元地址 2FH 2EH 2DH 2CH 2BH 2AH 29H 28H 26H 25H 24H 23H 22H 21H 20H 7F 77 6F 67 5F 57 4F 47 37 2F 27 1F 17 0F 07 7E 76 6E 66 5E 56 4E 46 36 2E 26 1E 16 0E 06 7D 75 6D 65 5D 55 4D 45 35 2D 25 1D 15 0D 05 7C 74 6C 64 5C 54 4C 44 34 2C 24 1C 14 0C 04 7B 73 6B 63 5B 53 4B 43 33 2B 23 1B 13 0B 03 7A 72 6A 62 5A 52 4A 42 32 2A 22 1A 12 0A 02 79 71 69 61 59 51 49 41 31 29 21 19 11 09 01 78 70 68 60 58 50 48 40 30 28 20 18 10 08 00 位寻址地址表 例:SETB 3DH 3D 27H 3F 3E 3C 3B 3A 39 38

  17. · · · · · · 28H 27H 21H 21H 20H 20H 立即数寻址 SETB 3DH 直接寻址 寄存器寻址 1 0 0 0 0 0 0 0 0 寄存器间接寻址 变址寻址 相对寻址 位寻址

  18. 符 号 含 义 Rn 表示当前选定寄存器组的工作寄存器R0~R7 Ri 表示作为间接寻址的地址指针R0~R1 #data 表示8位立即数,即00H~FFH #data16 表示16位立即数,即0000H~FFFFH addr16 表示16位地址,用于64K范围内寻址 addr11 表示11位地址,用于2K范围内寻址 direct 8位直接地址,可以是内部RAM区的某一单元或某一专用功能寄存器的地址 Rel 带符号的8位偏移量(-128~+127) Bit 位寻址区的直接寻址位 (X) X地址单元中的内容,或X作为间接寻址寄存器时所指单元的内容 ← 将 ← 后面的内容传送到前面去 二、指令系统 1、指令描述约定

  19. 2、MCS-51的指令 2.1 数据传送指令(29条) 2.2 算术运算指令(24条) 2.3 逻辑运算指令(24条) 2.4 控制转移指令(17条) 2.5 位操作指令(17条) 2.6 常用伪指令(17条)

  20. A A A A A A Rn Rn Rn Rn direct1 direct2 direct2 direct1 direct2 @Ri @Ri @Ri @Ri Rn #data #data direct2 direct2 #data @Ri #data #data 2.1 数据传送指令(29条)——8位数据传送指令(15条) 目的地址 源地址 MOV <目的操作数>,<源操作数> A 数 据 20H MOV , MOV A,#20H

  21. A A A A A @DPTR @DPTR @DPTR @DPTR @Ri @Ri @Ri @Ri 2.1 数据传送指令(29条)——16位数据传送指令(1条) MOV DPTR,#data16 ——外部数据传送指令(4条) MOVX <目的操作数>,<源操作数> , MOVX

  22. direct @DPTR A @Ri direct @DPTR @Ri ——交换和查表类指令(9条) 1)字节交换指令(3条) 4)查表指令(2条) MOVC A , @A+PC , XCH A MOVC A , @A+DPTR 5)堆栈操作指令(2条) PUSH direct 2)低半字节交换指令(1条) POP direct XCHD A , @Ri 3)累加器A中高4位和低4位交换(1条) SWAP A

  23. Rn Rn Rn direct direct direct @Ri @Ri @Ri #data #data #data 2.2算术运算类指令(24条)——加法指令(8条) Rn Rn direct direct ADD ADDC A , A , @Ri @Ri ——减法指令(4条) #data #data ——BCD码调整指令(1条) Rn DA A direct SUBB A , 注意:DA A指令只能跟在ADD或ADDC 加法指令后,不适用于减法指令。 @Ri #data

  24. 助记符格式 机器码(B) 相应操作 指令说明 机器周期 INC A 00000100 AA+1 影响PSW的P标志 1 INC Rn 00001rrr RnRn+1 n=0~7, rrr=000~111 1 INC direct 0101 direct (direct)(direct)+1 1 INC @Ri 0000011i (Ri)(Ri)+1 i=0,1 1 INC DPTR 10100011 DPTRDPTR+1 2 DEC A 00010100 AA-1 影响PSW的P标志 1 DEC Rn 00011rrr RnRn-1 n=0~7, rrr=000~111 1 DEC direct 00010101 direct (direct)(direct)+1 1 DEC @Ri 0001011i (Ri)(Ri)-1 i=0,1 1 ——加1减1指令

  25. 助记符格式 机器码(B) 相应操作 指令说明 机器周期 ANL A,direct 01010101 direct AA∧direct 按位相与 1 ANL A,Rn 01011rrr AA∧Rn n=0~7, rrr=000~111 1 ANL A,@Ri 0101011i AA∧(Ri) i=0,1 1 ANL A,#data 01010100 data AA∧#data 1 ANL direct,A 01010010direct (direct)(direct)∧A 不影响PSW的P标志 1 ANL direct,#data 01010011 direct data (direct) (direct)∧#data 不影响PSW的P标志 2 ——乘法指令(1条) ——除法指令(1条) 2.3逻辑及移位类指令——逻辑与指令(6条) MUL A B DIV A B

  26. 助记符格式 机器码(B) 相应操作 指令说明 机器 周期 ORL A,direct 01000101 direct AA∨direct 按位相或 1 ORL A,Rn 01001rrr AA∨Rn n=0~7, rrr=000~111 1 ORL A,@Ri 0100011i AA∨(Ri) i=0,1 1 ORL A,#data 01000100data AA∨#data 1 ORL direct,A 01000010 direct (direct)(direct)∨A 不影响PSW的P标志 1 ORL direct,#data 01000011 direct data (direct) (direct)∨#data 不影响PSW的P标志 2 ——逻辑或指令(6条)

  27. 助记符格式 机器码(B) 相应操作 指令说明 机器周期 XRL A,direct 01100101 direct AA(direct) 按位相异或 1 XRL A,Rn 01101rrr AARn n=0~7, rrr=000~111 1 XRL A,@Ri 0110011i AA (Ri) i=0,1 1 XRL A,#data 01100100 data AA#data 1 XRL direct,A 01100010 direct (direct)(direct)A 不影响PSW的P标志 1 XRL direct,#data 01100011 direct data (direct) (direct)#data 不影响PSW的P标志 2 ——逻辑异或指令(6条)

  28. 助记符格式 机器码(B) 相应操作 指令说明 机器周期 CLR A 11100100 A00H A中内容清0,影响P标志 1 CPL A 11110100 AA A中内容按位取反,影响P标志 1 ——累加器A清0和取反指令

  29. ——循环移位指令 A.7 A.0 • RL A • RR A • RLC A • RRC A A.7 A.0 A.7 A.0 CY CY A.7 A.0 注意:执行带进位的循环移位指令之前,必须给CY置位或清零。

  30. · · · · · · AAAAH PC=AAAAH AAA9H 0002H 0001H PC=0000H 0000H 2.4 控制转移类指令——无条件转移指令(4条) 1) 长转移指令:LJMP AAAAH ; AAAAHPC 假设执行该指令前,PC的值为0000H。 注意:该指令可以转移到64 KB程序存储器中的任意位置。

  31. A10 A9 A8 0 0 0 0 1 A7 A6 A5 A4 A3 A2 A1 A0 2)绝对转移指令 AJMP addr11 ; PC+2PC, addr11 PC.10~PC.0 操作码(第一字节) 操作数(第二字节) 程序计数器PC PC高5位 (保持不变) PC低11位 11位转移地址的形成示意图

  32. · · · · · · 03H PC PC PC PC PC PC PC 3)相对转移指令 例: SJMP 03H 03H就是当前PC值 与目的PC值相对差 2006H 2006H 2005H 2004H 2003H 2003H 2002H 0002H 0001H 0000H

  33. 助记符格式 助记符格式 机器码(B) 机器码(B) 相应操作 相应操作 机器周期 机器周期 JZ rel DJNZ Rn,rel 0110000 11011rrr rel 若A=0, 则PCPC+rel, 否则程序顺序执行 RnRn-1,若Rn≠0,则PCPC+rel, 否则顺序执行 2 2 JNZ rel DJNZ direct,rel 01110000 11010101 direct rel 若A≠0, 则PCPC+rel, 否则程序顺序执行 (direct)(direct)-1,若(direct)≠0,则PCPC+rel,否则顺序执行 2 2 ——条件转移指令(8条)1)累加器A判0指令(2条) 2)减1非零转移指令(2条)

  34. 助记符格式 机器码(B) 相应操作 机器 周期 CJNE A,#data,rel 10110100 data rel 若A≠#data, 则PCPC+rel,否则顺序执行;若 A<#data,则CY=1,否则CY=0 2 CJNE Rn,#data,rel 10111rrr data rel 若 Rn≠#data,则PCPC+rel,否则顺序执行;若Rn<#data,则CY=1,否则CY=0 2 CJNE @Ri,#data,rel 1011011i data rel 若(Ri)≠#data,则PCPC+rel,否则顺序执行;若(Ri)<#data,则CY=1,否则CY=0 2 CJNE A,direct,rel 10110101 direct rel 若A≠(direct),则PCPC+rel,否则顺序执行;若A<(direct),则CY=1,否则CY=0 2 3)比较转移指令(4条)

  35. 条件转移类指令范例——方案一 将00H~0FH这16个数顺序地置入片内RAM20H~2FH单元中。 MOV R0,#20H MOV R7,#0FH CLR A LOOP:MOV @R0,A INC A INC R0 DJNZ R7,LOOP SJMP $ 还有什么方法实现循环的终止?

  36. 条件转移类指令范例——方案二 MOV R0,#20H MOV R7,#0FH CLR A LOOP:MOV @R0,A INC A INC R0 CJNE A,#0FH,LOOP SJMP $

  37. 条件转移类指令范例——方案三 MOV R0,#20H MOV A,#0FH MOV 30H,#00H LOOP:MOV @R0,30H INC 30H INC R0 DEC A JNZ LOOP SJMP $

  38. 条件转移类指令范例——方案四 MOV R0,#20H MOV A,#0FH MOV 30H,#00H LOOP:MOV @R0,30H INC 30H INC R0 SUBB A,#01H JNC LOOP SJMP $

  39. 助记符格式 助记符格式 机器码(B) 机器码(B) 相应操作 相应操作 机器周期 机器周期 LCALL addr16 ACALL addr11 a10a9a810001 addr7~0 00010010 addr15~8 addr7~0 PC PC+2 SP  SP+1,(SP)PC0~7 SP  SP+1,(SP)PC8~15 PC0~10  addr11 PCPC+3 SP SP+1,SPPC0~7 SP SP+1,SPPC8~15 PC addr16 2 2 ——调用和返回指令(8条)1)绝对调用指令(1条) 2)长调用指令(1条)

  40. 助记符格式 助记符格式 机器码(B) 机器码(B) 相应操作 相应操作 指令说明 机器周期 RET NOP 00100010 00000000 PC8~15 (SP), SP SP-1 PC0~7  (SP), SP SP-1 子程序返回指令 空操作 消耗1个机器周期 2 RETI 00110010 PC8~15 SP, SP SP-1 PC0~7  SP, SP SP-1 中断返回指令 2 3)返回指令 4)空操作

  41. MSB位地址LSB 单元地址 2FH 2EH 2DH 2CH 2BH 2AH 29H 28H 27H 26H 25H 24H 23H 22H 21H 20H 7F 77 6F 67 5F 57 4F 47 3F 37 2F 27 1F 17 0F 07 7E 76 6E 66 5E 56 4E 46 3E 36 2E 26 1E 16 0E 06 7D 75 6D 65 5D 55 4D 45 3D 35 2D 25 1D 15 0D 05 7C 74 6C 64 5C 54 4C 44 3C 34 2C 24 1C 14 0C 04 7B 73 6B 63 5B 53 4B 43 3B 33 2B 23 1B 13 0B 03 7A 72 6A 62 5A 52 4A 42 3A 32 2A 22 1A 12 0A 02 79 71 69 61 59 51 49 41 39 31 29 21 19 11 09 01 78 70 68 60 58 50 48 40 38 30 28 20 18 10 08 00 2.5 位操作类指令 RAM位寻址区位地址表

  42. 助记符格式 助记符格式 机器码(B) 机器码(B) 相应操作 相应操作 指令说明 指令说明 机器周期 机器周期 CLR C MOV C,bit 11000011 10100010 CY bit CY 0 位清0指令,结果影响CY标志 位传送指令,结果影响CY标志 2 1 MOV bit,C CLR bit 10010010 11000010 bit bit CY bit 0 位传送指令,结果不影响PSW 位清0指令,结果不影响PSW 2 1 SETB C 11010011 CY1 位置1指令,结果影响CY标志 1 SETB bit 11010010 bit bit 1 位置1指令,结果不影响PSW 1 1.位传送指令 2.位置位和位清零指令

  43. 助记符格式 机器码(B) 相应操作 机器周期 JB bit,rel 00100000bit rel 若bit=1,则PCPC+rel,否则顺序执行 2 JNB bit,rel 00110000 bit rel 若bit=0,则PCPC+rel,否则顺序执行 2 JBC bit,rel 00010000 bit rel 若 bit=1,则PCPC+rel,bit0,否则顺序执行 2 助记符格式 机器码(B) 相应操作 指令说明 机器周期 ANL C,bit 10000010 bit CY CY∧bit 位与指令 2 ANL C/bit 10110010 bit CY CY∧bit 位与指令 2 ORL ,bit 01110010 bit CY CY∨bit 位或指令 2 ORL C/bit 10100010 bit CY CY∨bit 位或指令 2 CPL C 10110011 CYCY 位取反指令 2 CPL bit 10110010 bitbit 2 位取反指令,结果不影响CY 3.位运算指令 4.位转移指令

  44. 助记符格式 机器码(B) 相应操作 机器周期 JC rel 01000000 若CY=0,则PCPC+rel,否则顺序执行 2 JNC rel 01010000 若CY≠0,则PCPC+rel,否则顺序执行 2 5.判CY标志指令

  45. 常用伪指令 • 定位伪指令ORG • 定义字节数据伪指令DB • 定义字数据伪指令DW • 定义空间伪指令DS • 符号定义伪指令EQU或= • 数据赋值伪指令DATA • 数据地址赋值伪指令XDATA • 汇编结束伪指令END

  46. 练习1 设内部RAM中33H单元中内容为44H,34H单元中内容为0AFH,R0中内容为33H,R1中内容为00H,给出以下每一条指令执行后A中的值和PSW中P的值。 MOV A, #34H MOV A, 34H MOV A, R1 MOV A,@R0 注意:对PSW中P标志的影响。 

  47. 练 习 2 • 设内部RAM30H单元中内容为52H,请给出以下程序结果: MOV A, #30H MOV A, 30H MOV R0, #30H MOV A, @R0 MOV 30H, #30H • 设P1口内容为0AAH(P1口地址为90H),请给出以下程序结果: MOV R0, #30H MOV 10H, P1 MOV A, 10H MOV @R0, A MOV 40H, @R0

  48. 本章主要知识点 • 指令的七种寻址方式。 • 难点:寄存器间接寻址 • 各类指令的主要功能。 • 难点:查表指令 • 难点:条件转移指令 • 作业: 3.5 3.6 3.10 3.13 3.16

More Related