流水灯汇编语言小程序

       初学单片机,碰巧又是初学汇编程序设计,就突然迸发了一个用汇编程序写一个单片机控制的小程序,流水灯运行。。没想到一次就成功了,眼瞅着单片机开发板上的流水灯在我的指示下跑得那么飘逸,激动啊,单片机才学了2个多星期,汇编还没入门,呵呵,意外。。

其他不是很重要,关键是我通过这个程序,认识了子程序与程序标号的区别,个人感觉很难得,小小记录下。。

 

ORG 00H                  

START:
     MOV A,#0FFH                ; A代表累加器ACC     发光二极管全熄灭1111 1111
    CLR C                    ; C代表进位程序状态字中标志位CY        将C清零  CY = 0
    MOV R1 ,#8                ;

LEFT:
    RLC A                   ;  带进位CY在ACC(8位/共9位,以8为周期循环)中左移
    MOV P0,A
    CALL DELAY
    DJNZ R1,LEFT
    MOV R2,#7

RIGHT:
    RRC A                    ; 带进位CY在ACC(8位/共9位)中右移
    MOV P0,A
    CALL DELAY
    DJNZ R2,RIGHT
    JMP START

DELAY:
    MOV R3,#20
D1:
    MOV R4,#30
D2:
    MOV R5,#20
    DJNZ R5,$                  ;R5减1,不为0,则执行本行
    DJNZ R4,D2                     ;R4减1,不为0,则跳转到D2标号的程序开始处
    DJNZ R3,D1                  ;R3减1,不为0,则跳转到D1标号的程序开始处
    RET                                
    END

     ;1——这里LEFT,RIGHT,DELAY不是子程序,而只是标号,标号只是用来标记地址,方便程序员识别,以及程序中跳转时,以标号表示地址方便、直观
     ;2——不是子程序的特点表现在:当主程序中没有调用这个子程序时,该子程序等于没写,而标号的 ,是真个程序的一部分,程序执行时,
     ;3——按着从上到下的顺序执行,不是只有在其他跳转指令跳转到这个标号处,该标号对应的程序才执行
     ;4——一般的子程序用proc,endp标记            

你可能感兴趣的:(我学我体会,汇编,语言,delay,c)