微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 广告流水灯汇编程序

广告流水灯汇编程序

时间:09-08 来源:互联网 点击:
_____________________________________________________功能:广告流水灯程序时间:2010—9—13注释:指令MOV P2,#80H是一条废指令,不起作用,可删除_____________________________________________________ ORG 00HMOV P2,#80HSTART:MOV A,#0FFH    ;赋初值CLR CMOV R2,#8LOOP:RRC A           ; 带进位右移MOV P1,ACALL DELAYDJNZ R2,LOOPMOV R2,#7LOOP1:RLC A          ;  带进位左移MOV P1,ACALL DELAYDJNZ R2,LOOP1JMP STARTDELAY:MOV R3,#20     ;   延时0.2秒D1:   MOV R4,#20D2:   MOV R5,#248DJNZ R5,$DJNZ R4,D2DJNZ R3,D1RETEND

ORG是Origin的缩写:起始地址源。在汇编语言源程序的开始通常都用一条ORG伪指令来实现规定程序的起始地址。如果不用ORG规定则汇编得到的目标程序将从0000H开始。例如:

ORG 2000H
START:MOV A,#00H

其实:ORG 00H这条指令的作用是定位初始地址,这里只是一个规定,没有其它含义。如上边的两条代码,规定了起始地址,那么得到的目标程序将不会从默认的00H开始,而是从定义的2000H处执行。至于第二条指令,MOV P2,#80H这条指令完全没有用,可以删去。

CLR C是CF置零,相当于STAB CF的反操作,目的是将进位位置零.

DJNZ指令有两种格式:DJNZ Rn,rel和DJNZ direct,rel,其实它的功能不止这些,本程序中使用到的只是一个标号,也就是工作寄存器组Rn非零则转移到标号标示的位置执行程序,为零则顺序进行下一条指令的执行。

DJNZ Rn,rel 寄存器减1,非零转移
DJNZ direct,rel 直接地址单元减1,非零转移

RLC A ;累加器带进位位循环左移
RRC A ;累加器带进位位循环右移

上边的两条移位指令是带进位的移位指令,注意和汇编语言程序设计中的SHR、SHL、SAR、SAL进行比对,它相当于是SAR和SAL,也就是算术移位指令,因为标志寄存器CF始终参与移位。其实,汇编语言程序中存在一个循环移位指令,用到这里效率会更高。

JMP $  ;原地不动,即一直保持,无条件转移
END ;汇编程序结束, 这里不用也没有关系


另外对于DJNZ Rn,$来说,也不难理解。Rn内容递减,而$不变,即所谓原地跳转,但这是有条件转移指令,对于无条件转移指令JMP $来说,就是原地不动,一直保持。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top