html5-img
1 / 59

第 3 章 MCS-51 单片机 指令系统

第 3 章 MCS-51 单片机 指令系统. 3.1 MCS-51 单片机指令格式和寻址方式. 3.2 MCS-51 单片机指令分类介绍. 3.3 MCS-51 单片机指令汇总. 本章要求. 1 了解掌握单片机指令格式和寻址方式. 2 了解掌握单片机的指令. 3.1 MCS-51 单片机指令格式和寻址方式. 一、指令系统概述. ● 指令是供用户使用的单片机的软件资源 。. ● 执行指令的集合就是指令系统。. ● 指令常以其英文名称或缩写形式助记符 -- 汇编语言。. ● 使用指令编写的程序称为汇编语言程序。.

nenet
Download Presentation

第 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单片机指令系统 3.1 MCS-51单片机指令格式和寻址方式 3.2 MCS-51单片机指令分类介绍 3.3 MCS-51单片机指令汇总

  2. 本章要求 1 了解掌握单片机指令格式和寻址方式 2 了解掌握单片机的指令

  3. 3.1 MCS-51单片机指令格式和寻址方式 一、指令系统概述 ●指令是供用户使用的单片机的软件资源。 ●执行指令的集合就是指令系统。 ●指令常以其英文名称或缩写形式助记符--汇编语言。 ●使用指令编写的程序称为汇编语言程序。 ●指令系统没有通用性,编写的程序无法直接移植。 ●指令系统没有通用性,编写的程序无法直接移植。

  4. 3.1 MCS-51单片机指令格式和寻址方式 二、MCS-51单片机指令格式 ●指令的表示方法称为指令格式。 ●一条指令通常由操作码和操作数两部分组成。 操作码用来规定指令进行什么操作, 操作数则是指令操作的对象,是一具体的 数据,也可能数据的地址或符号。 1、一字节指令 ●一字节指令是指操作码和操作数同在一个字节内。 ◑例:INC DPTR,其功能为数据指针加“1”。 指令码为:1010 0011 ◑例:MOV A,Rn 其功能为把寄存器的数据传送给累加器。 指令码为:1110 1rrr ;rrr表示R0~R7的二进制编码。

  5. 3.1 MCS-51单片机指令格式和寻址方式 二、MCS-51单片机指令格式 2、二字节指令 ●二字节指令指操作码占一个字节,操作数占一个字节。 例:MOV A,#50H 指令码为:0111 0100 ;操作码。 0101 0000 ;操作数—立即数 3、三字节指令 ●三字节指令指操作码占一个字节,操作数占两个字节。 例:ANL 40H,#50H 指令码为:0101 0011 ;操作码。 0100 0000 ;操作数—直接地址 0101 0000 ;操作数—立即数

  6. 3.1 MCS-51单片机指令格式和寻址方式 三、MCS-51单片机寻址方式 ●寻址方式是指令所需要的数据通过什么方式获得。 1、寄存器寻址方式 ●寄存器的内容就是操作数。 ◑例:MOV A,R1 ●寄存器寻址主要对象是通用寄存器R0~R7的当前寄存器组。 ●部分专用寄存器(A、B、DPTR) 2、直接寻址方式 ●操作数直接以单元地址的形式给出。 例:MOV A,3AH ;把RAM 3AH单元中的数据送给A。

  7. 内部RAM 30H 80H 3.1 MCS-51单片机指令格式和寻址方式 三、MCS-51单片机寻址方式 3、寄存器间接寻址方式 ●寄存器的内容是操作数的地址。 例:MOV A,@R1 R1(30H) 如R1的内容是30H, 30H的内容是80H. A(80H) 指令执行后A的内容是80H。 ●只有R0或R1可作间址寄存器(地址指针)。

  8. 内部RAM 30H 80H 3.1 MCS-51单片机指令格式和寻址方式 三、MCS-51单片机寻址方式 4、立即寻址方式 ●操作数直接在指令中给出。 ●操作数称为立即数。 ●立即数前加 #,与直接地址的区别。 ◑例:MOV A,#30H 执行后A的内容是30H ◑例:MOV A,30H 执行后A的内容是80H

  9. 3.1 MCS-51单片机指令格式和寻址方式 三、MCS-51单片机寻址方式 5、变址寻址方式 ●变址寻址是以DPTR或PC作基址寄存器,以累加器 A作变址寄存器,两者的内容相加形成16位地址 --作为操作数地址。 如:(A) = 54H (DPTR)=3F21H (3F75H)= 7FH 例:MOV A,@A+DPTR 执行后A的内容是7FH ●变址寻址只能对程序存储器寻址。 MOVC A,@A+PC MOVC A,@A+DPTR JMP @A+DPTR ●累加器A的内容无符号数。 ●变址寻址只有三条指令:

  10. 3.1 MCS-51单片机指令格式和寻址方式 三、MCS-51单片机寻址方式 6、位寻址方式 ●内部RAM(20~2FH)中的位寻址 ●位地址(00H~7FH)寻址 ●单元地址加位数寻址 1 ◑例:SETB 00H SETB 20H.0

  11. 3.1 MCS-51单片机指令格式和寻址方式 三、MCS-51单片机寻址方式 6、位寻址方式 ●专用寄存器位寻址 ●直接位地址寻址 ●位名称寻址 ●寄存器符号加位数寻址 例定时器T0的启动控制 ◑例:SETB 8CH SETB TR0 SETB TCON.4

  12. 地址偏移量(rel) 3.1 MCS-51单片机指令格式和寻址方式 三、MCS-51单片机寻址方式 7、相对寻址方式 ●相对寻址方式是为程序转移设置的 ●转移目的地址=转移指令后地址+地址偏移量(rel) ●地址偏移量(rel)的数据范围是 -128~ +127 例: CJNE A ,#10 ,AXY NOP ┇ AXY: NOP

  13. 3.2 MCS-51单片机指令分类介绍 一. 指令格式中符号意义说明 ●Rn——当前寄存器组的通用寄存器,n=0~7。 ●Ri——可用作间接寻址的寄存器,i=0,1。 ●direct—8位直接地址,在指令中表示直接寻址。 寻址范围256个单元。 0~127(内部RAM单元地址)和 128~255(专用寄存器单元地址或符号)。 ● #data——8位立即数。 ●#datal6——16位立即数。

  14. 3.2 MCS-51单片机指令分类介绍 一. 指令格式中符号意义说明 ●addrl6 ——16位目的地址, 只限于在LCALL和LJMP指令中使用。 ●addr11——11位目的地址, 只限于在ACALL和AJMP指令中使用。 ●rel——相对转移指令中的偏移量,为8位带符号补码数。 ●DPTR——数据指针。 ●bit——内部RAM(包括专用寄存器)中的直接寻址位。 ●A ——累加器。 ●ACC——直接寻址方式的累加器。

  15. —箭头左边的内容被箭头右边的内容所取代。 3.2 MCS-51单片机指令分类介绍 一. 指令格式中符号意义说明 ● B ——寄存器B。 ●C——进位标志位, 它是布尔处理机的累加器,也称为累加位。 ●@——间址寄存器的前缀标志。 ●/ ——加在位地址的前面,表示对该位状态取反。 ●(×)——某寄存器或某单元的内容。 ●((×))——由×间接寻址的单元中的内容。

  16. 3.2 MCS-51单片机指令分类介绍 二. 数据传送类指令 1、概述 ●数据传送操作属复制性质,而不是搬家性质。 ●一般传送类指令的助记符为 “MOV”。 ●格式为: MOV <目的操作数>,<源操作数> 数据从右传送向左 右边为源操作数,表达数据的来源; 左边为目的操作数,表达数据的去向。

  17. MOV A,#data ; A data MOV direct,#data ; direct data MOV Rn,#data ; Rn data MOV @Ri,#data ; (Ri) data 3.2 MCS-51单片机指令分类介绍 二. 数据传送类指令 2、内部RAM数据传送指令组 ●立即数传送指令 8位立即数传送指令共4条: 16位立即数传送指令一条: MOV DPTR,#datal6;DPTR—datal6 指令的功能是将立即数的高8位送DPH, 将立即数的低8位送DPL。

  18. MOV direct2,direct1 ;direct2 (direct1) MOV direct,Rn ;direct (Rn) MOV Rn,direct ; Rn (direct) MOV direet,@Ri ;direct ((R0)) MOV @Ri,direet ;(Ri) (direct) 3.2 MCS-51单片机指令分类介绍 二. 数据传送类指令 2、内部RAM数据传送指令组 ●内部RAM单元之间的数据传送指令--共有5条指令

  19. MOV A, Rn ;A (Rn) MOV Rn, A ;Rn (A) MOV A, direct ;A (direct) MOV direct, A ;direct (A) MOV A, @Ri ;A ((Ri)) MOV @Ri, A ;(Ri) (A) 3.2 MCS-51单片机指令分类介绍 二. 数据传送类指令 2、内部RAM数据传送指令组 ●通过累加器的数据传送指令--共有6条指令

  20. 3.2 MCS-51单片机指令分类介绍 二. 数据传送类指令 3、外部RAM数据传送指令组 外部RAM单元只能使用间接寻址方法, 分别使用DPTR和R0(R1)作间址寄存器。 外部RAM数据传送只能通过累加器A ●使用DPTR进行间接寻址(寻址范围为64K) MOVX A,@DPTR  ;A←((DPTR)) MOVX @DPTR,A  ;(DPTR)←(A) ●使用Ri进行间接寻址(寻址范围为256) MOVX A,@Ri  ;A←((Ri)) MOVX @Ri,A  ;(Ri)←(A)

  21. MOVC A,@A+DPTR ;A ((A)+(DPTR)) MOVC A,@A+PC ;A ((A)+(PC)) 3.2 MCS-51单片机指令分类介绍 二. 数据传送类指令 4、程序存储器数据传送指令组 ●从程序存储器读出数据,只能向累加器A传送。

  22. XCH XCHD SWAP 3.2 MCS-51单片机指令分类介绍 二. 数据传送类指令 5、数据交换指令组 ●数据交换是指两个数据空间的数据交换操作。 ●数据交换通过累加器A进行操作。 ●交换指令有: △整字节交换XCH。 △半字节交换XCHD。 △高低半字节自交换SWAP。

  23. XCH XCH XCHD XCH SWAP direct 3.2 MCS-51单片机指令分类介绍 二. 数据传送类指令 5、数据交换指令组 ●数据交换指令图 A @Ri Rn XCH A,Rn ;Rn寄存器与A中数据全交换 XCH A,@Ri ;Ri间接地址中数据与A中数据全交换 XCH A,direct ;直接地址中数据与A中数据全交换 XCHD A,@Ri ;Ri间接地址中低4位数据与A中低4位数据交换 SWAP A ; A中低4位数据与高4位数据交换

  24. 例: A中数据是57H,R1的数据是30H,30H的内容是43H A 0 0 1 1 0 0 0 0 A 0 1 0 1 0 1 1 1 R1 0 1 0 1 0 1 1 1 R1 0 0 1 1 0 0 0 0 A 0 1 0 0 0 0 1 1 30H 0 1 0 1 0 1 1 1 30H 0 1 0 0 0 0 1 1 A 0 1 0 1 0 0 1 1 30H 0 1 0 0 0 1 1 1 3.2 MCS-51单片机指令分类介绍 二. 数据传送类指令 5、数据交换指令组 ●交换指令举例 XCH A,R1 XCH A,@R1 XCHD A,@R1

  25. 例如: A中数据是57H,R1的数据是30H,30H的内容是43H A 0 1 0 1 0 1 1 1 R1 0 0 1 1 0 0 0 0 A 0 1 0 0 0 0 1 1 30H 0 1 0 1 0 1 1 1 A 0 1 1 1 0 1 0 1 30H 0 1 0 0 0 0 1 1 3.2 MCS-51单片机指令分类介绍 二. 数据传送类指令 5、数据交换指令组 ●交换指令举例 XCH A,30H SWAP A

  26. PUSH direct ;SP (SP)+1,(SP) (direct) POP direct ;direct ((SP)), SP (SP) -1 3.2 MCS-51单片机指令分类介绍 二. 数据传送类指令 6、堆栈操作指令组 ●进栈指令 其功能为内部RAM单元或专用寄存器内容送栈顶单元。 ●出栈指令 其功能为栈顶单元内容送内部RAM单元或专用寄存器。

  27. INC DEC DA INC INC INC ADD、ADDC、SUBB ADD、ADDC、SUBB DEC DEC DEC ADD、ADDC、SUBB ADD、ADDC、SUBB MUL DIV #data DPTR INC 3.2 MCS-51单片机指令分类介绍 三. 算术运算类指令 算术运算类指令共23条, ADD、ADDC、SUBB、MUL、 DIV、INC、DEC、DA等 A @Ri Rn direct B

  28. 3.2 MCS-51单片机指令分类介绍 三. 算术运算类指令 ●算术运算指令运算时会产生进位、借位、溢出等 标志并存放在程序状态寄存器PSW中。 √:表示有影响 INC、DEC对标 志位无影响。

  29. ADD A,#data ;A (A)+data ADD A,Rn ;A (A)+(Rn) ADD A,direct ;A (A)+(direct) ADD A,@Ri ;A (A)+((Ri)) 3.2 MCS-51单片机指令分类介绍 三. 算术运算类指令 1、加法指令组--共有4条加法运算指令 ●加法运算指令的一个加数总是累加器A,另一个加数可由 不同寻址方法得到, 其相加结果再送回累加器A。

  30. 负数 11001001 -正数 -01010101 +10101001 01110100 正数 3.2 MCS-51单片机指令分类介绍 三. 算术运算类指令 ●例:(A)=0C2H,(R0)=0A9H,执行ADD A,R0对PSW的影响 11000010 CY←1← 01101011 (A)=+74H,(AC)=0, (CY)=0, (OV)=1 (A)=6BH,(AC)=0, (CY)=1, (OV)=1 如位3有进位,则辅助进位标志AC置“1”,反之AC清“0”。 如位7有进位,则进位标志CY置“1”,反之CY清“0”。 如位7有进位而位6没有进位或位6有进位而位7没有进位, 则溢出标志OV置“1”,反之,OV清“0”。

  31. ADDC A,#data ;A (A)+data+CY ADDC A,Rn ;A (A)+(Rn)+CY ADDC A,direct ;A (A)+(direct)+CY ADDC A,@Ri ;A (A)+((Ri))+CY 3.2 MCS-51单片机指令分类介绍 三. 算术运算类指令 2、带进位加法指令组--共有4条指令 ●对程序状态字PSW的影响同用加法指令

  32. SUBB A,#data ;A (A)-data-CY SUBB A,Rn ;A (A)-(Rn)-CY SUBB A,direct ;A (A)-(direct)-CY SUBB A,@Ri ;A (A)-((Ri))-CY 3.2 MCS-51单片机指令分类介绍 三. 算术运算类指令 3、带借位减法指令组--共有4条指令 ●指令的功能是从累加器A中减去不同寻址方式的操作数以 及进位标志C,其相减结果再送回累加器A。 ●用减法指令时对程序状态字PSW的影响 如位3有借位,则辅助进位标志AC置‘‘1”,反之AC清0”。 如位7有借位,则进位标志CY置‘‘1”,反之CY清“0”。 如位7有借位而位6没有借位或位7有借位而位6没有借位, 则溢出标志OV置“1”,反之,OV清“0”。

  33. INC A ;A (A)+1 INC Rn ;Rn (Rn)+1 INC direct ;direct (direct)+1 INC @Ri ;(Ri) ((Ri))+1 INC DPTR ;DPTR (DPTR)+1 3.2 MCS-51单片机指令分类介绍 三. 算术运算类指令 4、加1指令组--共有5条指令 ●用加1指令时对程序状态字PSW没有影响

  34. DEC A ;A (A)-1 DEC Rn ;Rn (Rn)-1 DEC direct ;direct (direct)-1 DEC @Ri ;(Ri) ((Ri))-1 3.2 MCS-51单片机指令分类介绍 三. 算术运算类指令 5、减1指令组--共有4条指令 ● 用减1指令时对程序状态字PSW没有影响

  35. 3.2 MCS-51单片机指令分类介绍 三. 算术运算类指令 6、乘除指令组 ●乘法指令 MUL AB △把累加器A和寄存器B中的两个无符号8位数相乘, 所得16位乖积低8位放A中,高8位放B中。 △对PSW状态的影响:进位标志位CY=“0”, 若OV=1,乘积超过255,否则OV=0。 ●除法指令: DIV AB △把被除数置于累加器A中、除数置于B中的两个无 符号8位数相除,所得商放A中,余数放B中。 △对PSW状态的影响:进位标志位CY=“0”, 若OV=1,表示除数=0,否则OV=0。

  36. 1 0 0 0 + 1 0 0 1 1 0 0 0 1 1 0 0 0 1 + 0 1 1 0 1 0 1 1 1 3.2 MCS-51单片机指令分类介绍 三. 算术运算类指令 7、十进制调整指令 ●十进制调整指令指令DA A △用于十进制数(BCD码)加法运算结果的修正。 例:8+9=17 运算结果错误,因为(8+9)的结果应是17, 而运算所得到的结果却是11。应+6修正。

  37. 01010110 + 01100111 10111101 + 01100110 100100011 3.2 MCS-51单片机指令分类介绍 三. 算术运算类指令 △十进制调整的修正方法是: ◊A低4位>9或辅助进位位(AC)=1,则低4位加6修正。 A ← (A)+06H ◊A高4位>9或进位位(CY)=1,则高4位加6修正。 A ← (A)+60H ◊A高4位为9、低4位>9,则高4位和低4位分别加6修正。 A ← (A)+66H 例如。56+67=123 (A)=56H,(R5)=67H 执行指令: ADD A,R5 DA A 结果:(A)=23H,CY=1。

  38. ANL、ORL、XRL ANL、ORL、XRL RL、RLC CLR、 CPL RR、RRC ANL、ORL、XRL ANL、ORL、XRL #data ANL、ORL、XRL 3.2 MCS-51单片机指令分类介绍 四. 逻辑运算及移位类指令 ●逻辑运算类和移位类指令共25条, ANL、ORL、XRL 异或、CLR、CPL、RR、RRC、RL、RLC等 A @Ri Rn direct

  39. 1 0 0 1 1010 ∧0 0 0 0 1 1 1 1 3.2 MCS-51单片机指令分类介绍 四. 逻辑运算及移位类指令 1、逻辑与运算指令组 ●逻辑运算都是按位进行的 ●逻辑与运算用符号“∧”表示。 0 0 0 0 1 0 1 0 ANL A,Rn ;A←(A)∧(Rn) ANL A,direct ;A←(A)∧(direct) ANL A,#data ;A←(A)∧data ANL direct,A ;direct←(direct)∧(A) ANL direct,#data ;direct←(direct)∧data 例:(A)=9AH,执行 ANL A,#0FH 结果(A)=0AH

  40. 1 0 0 1 1010 ∨0 0 0 0 1 1 1 1 3.2 MCS-51单片机指令分类介绍 四. 逻辑运算及移位类指令 2、逻辑或运算指令组 ●逻辑或运算用符号“∨”表示。 1 0 0 1 1 1 1 1 0RL A,Rn ;A←(A)V(Rn) 0RL A,direct ;A←(A)V(direct) ORL A,@Ri ;A←(A)V((Ri)) ORL A,#data ;A←(A)V data 0RL direct,A ;direct←(direct)V(A) 0RL direct,#data ;direct←(direct)V data 例:(A)=9AH,执行 ORL A,#0FH 结果(A)=9FH

  41. 1 0 0 1 1010 ⊕0 0 0 0 1 1 1 1 3.2 MCS-51单片机指令分类介绍 四. 逻辑运算及移位类指令 3、逻辑异或运算指令组 ●逻辑异或运算用符号“⊕”表示 1 0 0 1 0 1 0 1 0⊕0=0 ; 1⊕1=0 0⊕1=1 ; 1⊕0=1 XRL A,Rn ;A←(A)⊕(Rn) XRL A,direct ;A←(A)⊕(ditect) XRL A,@Ri ;A←(A)⊕((Ri)) XRL A,#data ;A←(A)⊕data XRL direct,A ;direct←(direet)⊕(A) XRL direct,#data ;direct←(direct)⊕data 例:(A)=9AH,执行 XRL A,#0FH 结果(A)=95H

  42. CLR A ;A0 CPL A ;A (A) 3.2 MCS-51单片机指令分类介绍 四. 逻辑运算及移位类指令 4、累加器清“0”和取反指令组 ●累加器清“0”指令--1条: ●累加器按位取反指令--1条: 例:(A)=9AH 执行结果(A)=65H

  43. A7 A7 A0 A0 C C A0 A0 A7 A7 3.2 MCS-51单片机指令分类介绍 四. 逻辑运算及移位类指令 5、移位指令组 ●移位指令只能对累加器A进行移位 △循环左移指令 RL A △循环右移指令 RR A △带进位位循环左移 RLC A △带进位位循环右移 RRC A ♣例:(A)=95H, 执行 RL A 结果(A)=2BH 0 0 1 0 1 011 0 1 0 1 0 11 0 RL A 结果(A)=56H

  44. 3.2 MCS-51单片机指令分类介绍 五. 控制转移类指令 控制转移指令分两类:无条件转移和有条件转移。 1、无条件转移指令组 ●长转移指令 指令格式 LJMP addrl6 ;PC←(addrl6) 转移范围大,可达64 KB。 ●绝对转移指令 指令格式 AJMP addrl1 ;PC10~0←(addrl1) 转移范围达2 KB。

  45. 3.2 MCS-51单片机指令分类介绍 五. 控制转移类指令 1、无条件转移指令组 ●短转移指令 指令格式 SJMP rel ;PC←PC+2+rel ●变址寻址转移指令 指令格式 JMP @A+DPTR ;PC←(A)+(DPTR)

  46. 若(A)=0,则PC (PC)+2+rel 若(A)≠O,则PC (PC)+2 若(A)≠O,则PC (PC)+2+rel 若(A)=O,则PC (PC)+2 3.2 MCS-51单片机指令分类介绍 五. 控制转移类指令 2、条件转移指令组 ●累加器判零转移指令 JZ rel JNZ rel

  47. 3.2 MCS-51单片机指令分类介绍 五. 控制转移类指令 2、条件转移指令组 ●数值比较转移指令---共有四条指令: CJNE A,#data, re ;A内容与立即数不等转移。 CJNE A,direct,rel ;A内容与RAM单元的内容不等 转移。 CJNE Rn,#data,rel ;Rn的内容与立即数不等转移。 CJNE @Ri,#data,re ;Ri内容为地址,该地址单元 内容与立即数比较,不等转移。

  48. 指令功能为:寄存器内容减1,如所得结果为0,则顺序指令功能为:寄存器内容减1,如所得结果为0,则顺序 执行;如没有减到0,则程序转移。 Rn (Rn)-1若(Rn)≠0,则PC (PC)+2+rel。 若(Rn)=0, 则PC (PC)+2 3.2 MCS-51单片机指令分类介绍 五. 控制转移类指令 2、条件转移指令组 ●减1条件转移指令 把减1与条件转移两种功能结合在一起的指令-2条 ●寄存器减1条件转移 指令格式: DJNZ Rn, rel ●直接寻址单元减1条件转移 指令格式: DJNZ direct, rel

  49. ●断点保护 PC (PC)+2 SP (SP)+1,(SP) (PC)7~0 SP (SP)+1,(SP) (PC)15~8 ●构造目的地址 PC10~0 addr11 3.2 MCS-51单片机指令分类介绍 五. 控制转移类指令 3、子程序调用与返回指令组 ●绝对调用指令 指令格式为:ACALL Addr11 为了实现子程序调用,该指令共完成两项操作: ●长调用指令 指令格式为:LCALL Addr16

  50. 3.2 MCS-51单片机指令分类介绍 五. 控制转移类指令 3、子程序调用与返回指令组 ●返回指令 RET ;子程序返回指令 RETI ;中断服务子程序返回指令 从堆栈中自动取出断点地址送程序计数器PC,使程序在主程序断点处继续向下执行。 4、空操作指令----NOP

More Related