Click here to load reader

第四章 汇编语言程序设计

  • Upload
    aurek

  • View
    181

  • Download
    4

Embed Size (px)

DESCRIPTION

第四章 汇编语言程序设计. 学习指导. 1. 通过例子和上机调试找到程序设计的感觉 2. 记住 keil 软件的调试过程 3. 通过编程、上机调试来巩固掌握指令系统 4. 本章所有例子都现场调试. 学习目标. 1. 记住一些常用的程序例子 2. 掌握常见几种类型结构的汇编程序设计 3. 能在 keil 软件上编程调试 4. 初步具有程序设计的感觉. §4 - 1 汇编语言的基本概念. §4.1.1 单片机应用系统常见的开发语言. 汇编语言:能很好的直接控制硬件,程序小,执行的速度快。 - PowerPoint PPT Presentation

Citation preview

  • 1.2.keil3.4.1.2.3.keil4.

  • 41 4.1.1 C51C C51 1 2 3 4C51

  • 4.1.2 ORG

  • ORG ORGEND END ENDDB DB

  • ORG 2000H TAB: DB 14H,26,A DB 0AFH,BC (2000H)=14H, (2001H)=1AH, (2002H)=41H (2003H)=AFH, (2004H)=42H, (2005H)=43HBIT BIT QQ BIT (20H).0 QQ00H PP BIT (29H).6 ; PP4EHEQU EQU

  • BeiJiaShu EQU 32H ;BeiJiaShu=32H JiaShu EQU 48H ;JiaShu=48H Address EQU 2000H MOV A, BeiJiaShu MOV 40H,JiaShu ADD A,40H ;32H+48H

    EQUDATA DATA QQ DATA 1000H QQ=1000HDATAEQUDATA

  • 4.2 4.2.1

  • 4.2.2

  • 2BCDRAM50H,51H60H, 61H40H,41H 1000

  • 31616R7,R6 R7,R62020H ORG 2020HMOV A,R6CPL AADD A,#01HMOV R6,AMOV A, R7CPL AADDC A,#01HMOV R7,A END

  • 4.2.3

  • 1a30Hb31H

  • 2xRAM30HYRAM40 ORG 0000H MOV A,30H CJNE A,#00H,NOT_ZORO MOV 40H,#00H SJMP $ZORO: JC ACC.7, FUSHU MOV 40H,#01H SJMP $FUSHU: MOV 40H,#0FFH SJMP $ END

  • 3R0 R0=0,TURN_0 R0=1,TURN_1 R0=2,TURN_2 R0=3,TURN_3 R0=4,TURN_4 R0=5,TURN_5

  • ORG 0000H MOV DPTR,#FENZHICHENGXU MOV A, R0 JMP @A+DPTR SJMP $ ORG 2000HFENZHICHENGXU: AJMP TURN_0 AJMP TURN_1 AJMP TURN_2 AJMP TURN_3 AJMP TURN_4 AJMP TURN_5 SJMP $ END

  • 4.2.4 DJNZ MOV Rn , #XXH()DJNZ Rn , LOOP

  • 1100 RAM30H100
  • 210 RAM40H 1010H ORG 1000H MAIN:MOV R2,#09H ; MOV R1,#40H 40HR1 1 MOV A,@R1 LOOP:INC R1 MOV 30H,@R1 CJNE A,30H,NOT_EQ 10H AGAIN: DJNZ R2,LOOP JMP MAX 10H NOT_EQ:JC MAX1 MAX1 JMP AGAIN MAX1:MOV A,30H A JMP AGAIN MAX:MOV 10H,A 10H SJMP END

  • 310 RAM40H 10 ORG 0000H MOV R2,#09H START:MOV R0,#40H MOV A,@R0 LOOP:INC R0 MOV 30H,@R0 CJNE A,30H,NEXT AGAIN:DJNZ R2,LOOP MOV R2,#09H DJNZ R2,START SJMP $ NEXT:JNC Q_BIGQ_SMALL:MOV A,30H JMP AGAIN Q_BIG:MOV @r0,a DEC R0 MOV @R0,30h INC R0 JMP AGAIN END

  • 4.2.5

  • 1 P10 10uS,P11 10uS ORG 0000H START:MOV A,#00 MOV P1,A LCALL DELAY MOV P1,#OFFH JMP START DELAY:MOV R7,#20 MOV R6,#250 DJNZ R6,$ DJNZ R7,DELAY RET END

  • 4.2.6 :

    1 2 3 4 5

  • ----12000H100 ORG 0000HBlock equ 2000h mov dptr, #Block ; mov r0, #64H ; 100 clr aLoop: movx @dptr, a inc dptr ; djnz r0, Loop ; sjmp $ end

  • 240H60H2100H

    ORG 1000H

    START:MOV R2,#21H MOV R0,#40H MOV DPTR,#2100H LOOP: MOV A,@R0 MOVX @DPTR,A INC R0 INC DPTR DJNZ R0,LOOP SJMP $

    END

  • 350H57H(00010203 04050607)5AH ORG 0000H

    START:MOV R2,#07H MOV R0,#50H MOV A,@R0LOOP: INC R0 ADDC A,@R0 DJNZ R0,LOOP MOV B,#08 DIV AB SJMP $

    END

  • 47BH(123)BCD, Result Result equ 20h org 0000h jmp StartBinToBCD: mov b, #100 div ab mov Result, a ; 100, mov a, b mov b, #10 div ab mov Result+1, a ; 10, mov Result+2, b ; retStart: mov sp, #40h mov a, #123 call BinToBCD ljmp $ end

  • 5MICROCONTROLRAM2400H ORG 0000HSTART: MOV R2,#12 MOV R0,#00H MOV R4,#24H MOV R3,#00HLOOP: MOV A,R0 MOV DPTR,#TAB MOVC A, @A+DPTR MOV DPL,R3 MOV DPH,R4 MOVX @DPTR,A INC R0 INC R3 DJNZ R2,LOOP SJMP $TAB: DB 'MICROCONTROL' END

  • 6RAM 30H~35H ORG 0000HMAIN: MOV R2,#05HSTART:MOV R0,#35H MOV A,@R0LOOP: DEC R0 MOV 40H,@R0 CJNE A,40H,NEXTAGAIN: DJNZ R2,LOOP MOV R2,#05H DJNZ R2,START SJMP $NEXT: JNC Q_BIGQ_SMALL:MOV A,40H JMP AGAINQ_BIG: MOV @R0,A INC R0 MOV @R0,40H DEC R0 JMP AGAIN END

  • 730H31H30H 31H40H30H34H31H56H40H 45H ORG 0000HSTART:MOV R0,#30H MOV A,@R0 ANL A,#0FH SWAP A MOV 40H,A INC R0 MOV A,@R0 SWAP A ANL A,#0FH ORL 40H,A SJMP $ END