第四章 汇编语言程序设计

Click here to load reader

download 第四章   汇编语言程序设计

of 31

description

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

Transcript of 第四章 汇编语言程序设计

  • 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