第 2 章 mcs-51 单片机指令系统与汇编语言程序设计

Click here to load reader

Upload: aoife

Post on 04-Feb-2016

192 views

Category:

Documents


0 download

DESCRIPTION

第 2 章 MCS-51 单片机指令系统与汇编语言程序设计. 主要内容: MCS-51 单片机的寻址方式、指令系统、基本程序结构及汇编语言的开发和调试。 重点 在于寻址方式、各种指令的应用、程序设计的规范、程序设计的思想及典型程序的理解和掌握。 难点 在于控制转移、位操作指令的理解及各种指令的灵活应用,以及程序设计的基本方法和针对具体的硬件设计出最合理的软件。. 2.1 概述. 指令系统: 一台计算机所能识别、执行的指令的集合就是它的指令系统。 机器语言: 指令系统是一套控制计算机执行操作的二进制编码,称为机器语言。机器语言指令是计算机惟一能识别和执行的指令。 - PowerPoint PPT Presentation

TRANSCRIPT

  • 2 MCS-51 MCS-51

  • 2.1

  • 2.1.1 1 bit Byte81Byte=8bit Word161Word=2Byte MCS-5188 MCS-51Intel80518051MCS-51

  • 2 [:] [] [,] [;][ ]

  • CPU 1ORG ORG n n n ORG1000H STARTMOVA#20H MOVB#30H 3

  • 2END [:] END [] 3EQU x EQU n nxxnn

  • 4DB [:] DB x1, x2,, xn 88x1, x2,, xnxi8ASCII, xi00HFFHxiASCIIxi80 5DW [:] DW x1, x2,, xn []xi1688

  • 6DS [:] DS n nn 7BIT x BIT n nxxn 8DATA x DATA n nxnx DATAEQUEQUDATADATA

  • 2.1.2 MCS-51111 4946162. 654423. 2924241717

  • 2.1.3 Rnn=07R0R7 Rii=01R0, R1 #data8 #data1616 directRAM8 addr1111ACALLAJMP addr1616LCALLLJMP rel8128+127 DPTR

  • bitRAMSFR AACC B B CPSWCy @ $ / XX ((X))X 2.1.3

  • 2.2 MCS-51 MCS-517

  • 2.2.1 816#data#data16#direcbit 2.2.2 ROMRAMSFR

  • 2.2.3 MCS-51RnR0R7RnR0R7 A, B, DPTR, Cy 2.2.4

  • @SFR RAM128BR0R1RAMDPTR256RAMDPTRR0R1 2.2.5 ADPTRPC16

  • DPTRPC AMCS-51 DPTRPC A ROM A00HFFHMCS-51 MOVC A, @A+PC ;AA+PC+1 MOVC A, @A+DPTR ;AA+DPTR JMP @A+DPTR ;PCA+DPTR

  • 2.2.6 PCPCrel SJMP rel ; PCPC + 2 + relROMrel8128127PC256

  • 2.2.7 8RAM128BSFR831 MOV 00H, C ;00HCy 00HRAM20H0

  • 2 MOV 20H.0, C ; 20H.0Cy 20H.0RAM20H03 ANL C, P ; C CP PPSW0CPSW7 4PSW CPL PSW.6 ; AC PSW.6PSW6

  • [1] MOV AR1 ;AR1 ADD A#05H ; AA+ 05H MOV A@R1 ; A ((R1)) MOV 30H4AH ; 30H 4AH MOVC A@A+DPTR ;A((A)+(DPTR)) SJMP LP ; PCPC+ 2 + MOV 65H, C ;65HCy

  • 2.3 MCS-51 MCS-51443351111 MCS-51

  • 1 23456 1derict1#data1#data16ABR0R7 @RiDPTR@ A+ DPTR @ A+ PC

  • 2.3.1 CPU 29RAMRAM ARAMSFRRAM : AP

  • 1RAM16 MOV , RAMSFR1A4 MOV A , Rn@Ridirect#data2.1.3 PSWP 2Rn3 MOV Rn , Adirect#data

  • 35 MOV direct , ARn@Ridirect #data 4@Ri3 MOV @Ri , Adirect #data 5161 MOV DPTR , #data162345

  • 2RAM4 CPUAR0, R1DPTR MOVX A , MOVX , A @DPTR@RiRiR0, R1RAM256DPTRRAM64KB MOVX A , PSWP MOVX , A

  • 3ROM2 A MOVC A , @A+DPTP ;AA+DPTR MOVC A , @A+PC ;PCPC+1 AA+PC 1 DPTR64KB PC256B

  • 2 DPTRA+DPTRPCA+PC+1 DPTRAPC A A=PC145 12 SWAP A ;A30A74 XCHD A , @Ri ;A30(Ri)30

  • 23 XCH A , Rn@Ridirect 52 PUSH direct ; SPSP+1 , ((SP))direct POP derect ;direct((SP)) , SPSP1SPSPSP07HSP

  • RAMRAM PUSH ACCPUSH A POP 00H POP R0

  • 2.3.2 AR0R7@RiRAM#data 11 1. 4 ADD A , ; AA+ Rn@Ridirect#data ADDPSW

  • 2. 4 ADDC A , ; AA+ + (Cy) Rn@Ridirect#dataADDCPSW 3. 4 SUBB A , ; AA (Cy) Rn@Ridirect#dataSUBBPSW MCS-51Cy=0CLR CSUBB

  • 4. 1 ADDADDCBCDBCD BCDBCDBCDAA DA A BCDBCD+=9AH

  • 5. 15 11 INC + 1 ARndirect@Ri DPTR APPSW 6. 14 11 DEC 1 ARndirect@Ri1

  • 7. 2 MCS-51 MUL AB BAAB DIV AB AA/BB PSWCy, OV, PCy0PA1FFHOV100OV10

  • 2.3.3 PSWAPSWP024816 ANL A , Rn@Ridirect#data ANL direst , A#data

  • 10026ORL A , Rn@Ridirect#data ORL direst , A#data01136

  • XRL A , Rn@Ridirect#data XRL direst , A#data0144 MCS-51RL, RRRLC, RRC4A A

  • A22 502 CLR A A00H CPL A A CLR APSWPCPL APSW

  • 2.3.4 PC MCS-5117 CJNEPSWCyPSW 14 LJMP addr16 ;PCaddr150 AJMP addr11 ;PCPC+2 PC 100addr11 SJMP rel ;PCPC+2+rel JMP @A+DPTR ;PC DPTR+A

  • 12 PC: LJMP 64KB AJMP 2KB SJMP 128+127 JMP 64KB3SJMP rel rel = (PC) 2

  • 4 SJMP $ HERE: SJMP HERE 5JMP @A+DPTR DPTRA6SJMPAJMPLJMP 22 MCS-51A

  • JZ rel ; (A)=0 (PC) (PC)+2+rel (A)0(PC) (PC) +2 JNZ rel ; (A)0 (PC) (PC)+2+rel (A) =0 (PC) (PC) +2 relPC128+127 rel rel = (PC) 2

  • 34 CJNE rel A#datadirect Rn@Ri#data CJNE A, direct, rel CJNE A, #data, rel CJNE Rn, #data, rel CJNE @Ri, #data, rel =(PC)(PC) +3 >(PC)(PC) + rel +3Cy0
  • CyrelPC128+127 Cy 412 101

  • DJNZ , rel ; 1 0 (PC) (PC)+2+rel 0 (PC) (PC) +264KB54

  • PCPCPC

  • 3 RET ; (PC) 158((SP)) (SP) (SP) 1 (PC) 70 ((SP)) (SP) (SP) 14 RETI ; (PC) 158((SP)) (SP) (SP) 1 (PC) 70 ((SP)) (SP) (SP) 1RETIRETRETRETI RETRETI

  • 1 ACALL addr11 ; (PC) (PC) +2 (SP) (SP) +1(SP)PC70 (SP) (SP) +1 (SP) (PC) 158 (PC) 100addr11 addr11112KB 2 LCALL addr16 ; (PC) (PC) +3 (SP) (SP) +1(SP)PC70 (SP) (SP) +1 (SP) (PC) 158 (PC) 150addr16 addr161664KB

  • 6NOP 1 NOP ; (PC) (PC) +1NOPPC1CPU

  • 2.3.5 01 RAM20H2FH SFR1183 Cy 0AFH.PSW.3.0D0H.0F0

  • 1. 2Cy MOV C, bit ;Cybit MOV bit, C ;bit Cy2. 6 C , ANLORL bit/bit CPL ; CPL Cy bit

  • 3. 04 CLR ; 0 SETB ; 1 Cy bit4. 5 1Cy JC rel ; (Cy )=1(PC)(PC)+2+rel , JNC rel ; (Cy )=0(PC)(PC)+2+rel ,

  • 2bit JB bit, rel ; (bit)=1(PC) (PC)+3+rel JNB bit, rel ; (bit)=0(PC) (PC)+3+rel JBC bit, rel ; (bit)=1(PC) (PC)+3+rel(bit )0

  • 2.4 1 23 MCS-5112

  • [:] [] [,] [;]1012101011110B 01 B/b2 09AF H/h3BCD 09:00001001B :D/d

  • 2.4.1 1 2 3 4 5 I/O 67

  • 2.4.2 [2] RAM 30HBCDRAM 40H BCD a1a 0BCD=10a1a0

  • ORG 1000HSTART: MOV A, 30H ; BCDa1a0A ANL A, #0F0H ; 4BCDa1 SWAP A ; 44 MOV B, #0AH ; 10B MUL AB ; 10a1A MOV R0, A ; R0 MOV A, 30H ; BCDa1a0A ANL A, #0FH ; 4BCDa0 ADD A, R0 ; 10a1+ a0 MOV 40H, A ; 40H SJMP $ ; END

  • [3]RAM20HBCDASCII21H22H22H BCD09ASCII30H39H30H39HTABLEBCDBCDADPTR MOVC AA+DPTR21H22H ORG 1000H STARTMOV DPTR#TABLEMOVA20HANLA#0FHMOVCAA+DPTRMOV21HA

  • MOVA20HANLA#0F0HSWAPAMOVCAA+DPTRMOV22HASJMP TABLEDB 30H31H32H33H34H DB 35H36H37H38H39H END

  • 2.4.3 1 23

  • X01JBJNBX0A0[4] RAM 40HXYRAM 41H 1 X>0Y= 0 X=0 -1X
  • ORG 1000HSTART: MOV A, 40H ; XA JZ COMP ; A0COMP JNB ACC.7, POST ; A71X POSTX MOV A, #0FFH ; 1A SJMP COMP ; COMPPOST: MOV A, #01H ; +1ACOMP: MOV 41H, A ; Y SJMP $ ; END

  • 2.4.4 1234

  • 1 2

  • 1[5] RAM 30H3FH16R4, R51616R2R4, R5R48R58

  • ORG 1000HSTART: MOV R0, #30H MOV R2, #10H; 16 MOV R4, #00H; R40 MOV R5, #00H; R50LOOP: MOV A, R5; 8A ADD A, @R0; @R0R5Cy MOV R5, A; 8R5 CLR A; A0 ADDC A, R4; R4Cy MOV R4, A; 8R4 INC R0; 1 DJNZ R2, LOOP ;10LOOP SJMP $ END

  • [6] RAM30H4FHRAM2000H 30H4FH3216R2RAMR0RAMDPTR

  • ORG 1000H START: MOV R0, #30H MOV DPTR, #2000H MOV R2, #20H ; LOOP: MOV A, @R0 ; RAMA MOVX @DPTR, A ; ARAM INC R0 ; INC DPTR ; DJNZ R2, LOOP ; R20LOOP SJMP $ END

  • 2 [7] 50ms MCS-51fOSCfOSC=12MHz1sDJNZ22s 50ms 2s>25550ms

  • ORG 1000H DELAY: MOV R7, #200 ; 1 DLY1: MOV R6, #123 ; DLY2: DJNZ R6, DLY2 ;R61=0 DLY22s123=246s NOP ; 1s DJNZ R7DLY1 ;R71=0 DLY1 24621120021=50.003ms RET ; END

  • 31234

  • 4 [7] MCS-51RAM30H6464e64, e63,, e2, e1 e64e63e64>e63e63e62e2e1N1=6363e16

  • 6362e1e263636364 1, 2, 3,, 63, 64631=62

  • ORG 1000HMOV R0, #30H ; R0MOV R3, #63H ; R3LP0: CLR 7FH ; 2FH.70MOV A, R3 ; MOV R2, A ; MOV R0,#30H ; LP1: MOV 20H, @R0 ; 20HMOV A, @ R0 ; 20HAINC R0 ; R0+1MOV 21H, @ R0 ; 21HCLR C ; Cy0 SUBB A, 21H ; JC LP2 ; Cy =1LP2 Cy =0

  • MOV @ R0, 20H ; DEC R0MOV @ R0, 21H INC R0 ; R0+1SETB 7FH ; 2FH.71LP2: DJNZ R2, LP1 ; R2 R20LP1 R2=0JNB 7FH, LP3 ; 2FH.70LP3DJNZ R3, LP0 ; R3 R30LP0 R3=0LP3: SJMP $ ; END

  • 2.4.5 ROM 1. MOVC A, @A+DPTR1X2YTABLE3TABLEDPTRXAMOVC A, @A+DPTRXYA

  • 2. MOVC A, @A+PC PCPC1X2YTABLE3XAADD A, #dataAdatadata=PC1data4MOVC A, @A+PCXYA

  • [8]Y=X2X=0, 1, 2,, 9X30HY31HTABLEMOVC A, @A+DPTR2.

  • ORG 1000H START: MOV A, 30H ; XA MOV DPTR, #TABLE ; 16TABLEDPTR MOVC A, @A+DPTR ; YA MOV 31H, A ; Y31H TABLE: DB 0, 1, 4, 9, 16 DB 25, 36, 49, 64, 81 ENDMOVC A, @A+PC

  • ORG 1000H START: MOV A, 30H ; XA ADD A, #02H ; MOVC A, @A+PC ; YA MOV 31H, A ; Y31H TABLE: DB 0, 1, 4, 9, 16 DB 25, 36, 49, 64, 81 END

  • 2.4.6 1 LCALLACALL,RET

  • 1ACALLLCALLPC88PC2RETPCPC8PC8

  • RETIRETRETRETI 21 PUSH PSW PUSH ACC

  • 2 POP ACC POP PSW3

  • 3 4 MCS-51

  • 5 DELAY RET 64KB

  • [9] c=a2+b2a, b1a, bRAM30H, 31HcRAM40H

  • ORG 1000H SR MOV A, 30H; 30HaA ACALL SQR; SQR MOV R1, A; a2R1 MOV A, 31H; 31HbA ACALL SQR; SQR ADD A, R1; a2+b2A MOV 40H, A; 40H SJMP $; SQR: INC A MOVC A, @A+PC RET TABLE: DB 0, 1, 4, 9, 16 DB 25, 36, 49, 64, 81 END

  • 2.5 2.5.1 [10] 16 R7R616R5R416R3R2R1R016MCS-518168 ORG 1000H DMUL: MOV A, R6; A MOV B, R4; B MUL AB;

  • MOV R0, A; R0 MOV R1, B; R1 MOV A, R7; A MOV B, R4; B MUL AB; ADD A, R1; Cy MOV R1, A; R1 MOV A, B; Cy ADDC A, #00H MOV R2, A MOV A, R6; A MOV B, R5; B MUL AB; ADD A, R1; Cy MOV R1, A; MOV A, R2

  • ADDC A, B; MOV R2, A; MOV A, #00H; Cy ADDC A, #00H MOV R3, A; MOV A, R7; A MOV B, R5; B MUL AB; ADD A, R2; Cy MOV R2, A; MOV A, R3 ADDC A, B; MOV R3, A; RET END

  • 2.5.2 [11] BCDBCDa15a14a1a02=a15215+a14214++a121+a02010BCD a15214+a14213++a12+a0a15213 +a14212+a13211++a22+a1a15212+a14211+a13210++a32+a2 16 02+a152+a14 ai+12+aiBCD

  • 2ai+1216BCD16R3, R25BCDR6R5R4

  • ORG 1000H BINBCD1: CLR A ; A 0 MOV R4, A ; 0 MOV R5, A MOV R6, A MOV R7, #10H ; 16 LOOP CLR C ; Cy02 MOV A, R2 ai+12 RLC A MOV R2, A MOV A, R3 RLC A MOV R3, A MOV A, R4

  • ADDC A, R4 ; 2 DA A MOV R4, A MOV A, R5 ADDC A, R5 DA A MOV R5, A MOV A, R6 ADDC A, R6 MOV R6, A ; 6 DJNZ R7, LOOP ; 16LOOP RET END

  • 2.5.3 MCS-51JMP @A+DPTR256

  • 1 AJMPLJMPADPTRJMP @A+DPTR2 3 DPTRAJMP @A+DPTR

  • 4RET RETDPTRRETPC[12] R2R200HR201HR202HR203H P18 P38

  • ORG 1000H START: MOV P1, #DATA1H ; P1P3DATA1, DATA2 MOV P3, #DATA2H

  • MOV DPTR, #TABLE ; TABLEDPTR CLR C ; Cy0 MOV A, R2 ; A SUBB A, #04H ; 04HCy JNC ERROR ; ERROR ADD A, #04H ; CLR C ; Cy0 RL A ; A2 JMP @A+DPTR ; A+DPTRTABLE: AJMP PRG0 ; PRG0 AJMP PRG1 ; PRG1 AJMP PRG2 ; PRG2 AJMP PRG3 ; PRG3ERROR:

  • PRG0: MOV A, P1 ; A ADD A, P3 ; ACy MOV P1, A ; 8P1 CLR A ; A0 ADDC A, #00H ; CyA8 MOV P3, A ; 8P3 RET ; PRG1: MOV A, P1 ; A CLR C ; Cy0 SUBB A, P3 ; ACy MOV P1, A ; 8P1 CLR A ; A0 RLC A ; CyA8 MOV P3, A ; 8P3 RET ;

  • PRG2: MOV A, P1 ; A MOV B, P3 ; B MUL AB ; 8A 8BCy, OV MOV P1, A ; 8P1 MOV P3, B ; 8P3 RET ; PRG3: MOV A, P1 ; A MOV B, P3 ; B DIV AB ; AB MOV P1, A ; P1 MOV P3, B ; P3 RET ; END

  • 2.6 2.6.1 ROM

  • MCS-511Keil C51 2TKS 3Flyto Pemulator 4Medwin 5E6000 2.6.2 1 .ASM EDLINPE

  • 2 12.LST.OBJ

  • MCS-51MCS-51.EXE.ASM.PRT.LST.OBJ.EXE 2.6.3 1 123

  • 2. 12345678

  • 3 123

  • 2.2 2.3 2.5 2.72.8 2.92.11 2.122.15 2.172.19 2.212.22 2.24