第 4 章 汇编语言程序设计

Click here to load reader

Upload: valmai

Post on 25-Jan-2016

111 views

Category:

Documents


0 download

DESCRIPTION

第 4 章 汇编语言程序设计. 4.1 伪指令 4.1.1 为什么要使用伪指令 4.1.2 MCS - 51 单片机的伪指令 4.2 汇编语言程序设计 4.2.1 顺序结构 4.2.2 分支程序 4.2.3 循环结构 4.2.4 子程序设计和子程序调用. 4.1.1 为什么要使用伪指令. 前一章详细介绍了 MCS - 51 单片机的 111 条汇编语句,但是编程时仅利用这些汇编语句还不够,我们还会有这样的需求: ◆ 指示程序开始和结束 ◆ 分配存储空间 ◆ 定义变量和常量 ◆ 定义数组 - PowerPoint PPT Presentation

TRANSCRIPT

  • 4 4.1 4.1.1 4.1.2 MCS514.2 4.2.1 4.2.2 4.2.3 4.2.4

  • 4.1.1 MCS51111

  • 4.1.2 MCS51 CPU MCS51:

  • 1 ORG [:] ORG 16 ORG 0000H ORG16ORGORG origin8086SEGMENTPROCNAME

  • ORG 0050HCWORD: MOV DPTR,#7000H MOVX A,@DPTR MOV B,A SWAP A ANL A,#0FH INC DPTR MOVX @DPTR,A MOV A,B ANL A,#0FH INC DPTR MOVX @DPTR,ACWORD1:SJMP CWORD1 END

  • 2 END [:] END

    END

    END

  • 3 EQU EQU 816

    EQUequal 8086=

  • A10 EQU 30H .Main: MOV A, #A10

    MOV A, A10

    ; MOV A, #30H; MOV A, 30H A1030H

  • 4 DATA DATA EQU:EQUDATA

  • 5 DB [:] DB 88ASCII8DB8DBVB8086 DB

  • TABLE1000H MAIN: MOV A,#2H A MOV DPTR,# TABLE DPTR MOVC A,@A+DPTR (A)=((A)+(DPTR))=(1002H) MOV R3,A R3 TABLEDB 0A3H ;8 DB 26H, 03H ; 8 DB ABC ;ASCII, A,B,CASCII41H,42H,43H

    18DB DB 0A3H,01H,02H,03H,04H,05H 26H,03H 2ASCIIABCA, B ,C03H8086MOV AL,2HMOV BX,OFFSET TABLEXLAT

  • 6 DW [:] DW 1616DW16DW 1688 8086 DW

  • TABLEDW 1234H23H10HTABLE1000H1000H1000H=1001H=1002H=1003H=1004H=1005H= DW1623H0023H1002H=00H1002H=23H

    DB16DW12H34H00H23H00H10H

  • 7 DS [:] DS :TABLE: DS 04H DB 30H,8AH8086TABLE DB ?,?,?,?4

  • 8 BIT ( ) BIT BIT LED1 BIT P1.0 FLAG BIT 02HP1090HLED102HFLAG

    EQUEQUBIT

  • 4.2 P65 4.2.1 4.2.2 4.2.3 4.2.4

  • > >>

    4

  • 1

  • 7000H47001H47002H7000H =34H34H4 H30011 0100 B001101004 H3 H03H04H

  • 7000H =34H03H04H330 1 0 0 0 0 1 1BB4 HH04H30 0 0 0 1 1 1 1B1100000040 0 1 1 0 1 0 0BBH00 0 0 0 1 1 1 1B001000004H3SWAPANL01

  • 7000HA47001H7000HA7002H

    34H03H34H04H

  • 7000H=34H ORG 0050HCWORD: MOV DPTR,#7000H MOVX A,@DPTR MOV B,A SWAP A ANL A,#0FH INC DPTR MOVX @DPTR,A MOV A,B ANL A,#0FH INC DPTR MOVX @DPTR,ACWORD1:SJMP CWORD1 END(A)=((DPTR))=(7000H)=34H(DPTR)=7000H

  • 52ROMRAM52128SFRFFH80HFFH80H7FH30H2FH20H1FH00HFFFFH0000HFFFFH2000H1FFFH1000H0FFFH0000HEA=1EA=0FFFFH0000H64KB128B+128B64KB128B128B4KB60KB

  • ORG 0050HCWORD: MOV DPTR,#7000H MOVX A,@DPTR MOV B,A SWAP A ANL A,#0FH INC DPTR MOVX @DPTR,A MOV A,B ANL A,#0FH INC DPTR MOVX @DPTR,ACWORD1:SJMP CWORD1 END(A)=((DPTR))=(7000H)=34H4A=43H47001H (A)=(B)=34HB34HA47002H7001H=03H7002H=04H(B)=34H, B(DPTR)=7000HA=03H(DPTR)=7001H((DPTR))=(7001H)=(A)=03HA=04H(DPTR)=7002H((DPTR))=(7002H)=(A)=04H

  • 7000H7001H47002H7000HA,44B7001HA4AB7002H

    03H30H04H34H

  • 2

  • RAM31H32HR0(31H)(32H)CYCY=0(31H)CY=1(32H) CLR C MOV A,31H SUBB A,32HLOOP:JNC LOOP1 MOV R0,32H SJMP LOOP2LOOP1:MOV R0,31HLOOP2:LJMP $;(31H) (A);(31H)(32H)LOOP;CY=0,(31H)>(32H)LOOP1;CY=1,(31H)
  • 3 P72 (1) (2) (3)

    DJNZ CJNE

  • 4.4 P73NYa DJNZYNb CJNE

  • 7000H70FFH

    00H7000H70FFH

  • 0100HR00,(R0)-10(R0)=07000HDPTR

  • ORG 0000H LJMP MAIN ORG 0030HMAIN: MOV DPTR, #7000H ;7000H ;DPTR MOV R0, #00H ;0100H ;R0 CLR A (A)=0LOOP: MOVX @DPTR, A ;0 INC DPTR ; DJNZ R0, LOOP ;0(R0)-1=0? SJMP $ END((DPTR))(A)=0(7001H)=0(7000H)=07001H

  • MCS51 P26

  • 4.2.4 MOV A,3AH LCALL DELAY MOV B,A

    LCALL DELAY MOV A,B

    DELAYDELAY:MOV BL,AL

    RET

  • 1 2 LCALL RET3

  • RAM

    4

  • 416: 100 ms1sP781 ()2 , , 12MHz,1s,DJNZ 2s, 50 000 ,100ms3 50 000 250200

  • 250DJNZ-1200DJNZ-1

  • 100 msDELAY: MOV R6, #0C8H ; 200 LOOP1: MOV R7, #0F8H ; 248 NOP ; LOOP2: DJNZ R7, LOOP2 ; 2 s248=496 s DJNZ R6, LOOP1 ; 500 s200=100 ms RET 500us1s+1+1+496+2s200=100001us=100.001ms1s100ms;1s100ms10100ms10

    DELAY1S: MOV R0, #10 LOOP: LCALL DELAY DJNZ R0, LOOP RET1s1s2s496s1s

  • 7341018 533