汇编语言高手请进

来源:百度知道 编辑:UC知道 时间:2024/05/11 16:59:17
下面的程序是在51单片机的基础上写的,其主要作用是在8X8点阵LED上显示柱形,让其先从左到右平滑移动三次,其次从右到左平滑移动三次,再次从上到下平滑移动三次,最后从下到上平滑移动三次。请哪位大侠帮忙解释下每行指令的意思,越详细越好。
ORG 00H
START: NOP
MOV R3,#3
LOP2: MOV R4,#8
MOV R2,#0
LOP1: MOV P1,#0FFH
MOV DPTR,#TABA
MOV A,R2
MOVC A,@A+DPTR
MOV P3,A
INC R2
LCALL DELAY
DJNZ R4,LOP1
DJNZ R3,LOP2

MOV R3,#3
LOP4: MOV R4,#8
MOV R2,#7
LOP3: MOV P1,#0FFH
MOV DPTR,#TABA
MOV A,R2
MOVC A,@A+DPTR
MOV P3,A
DEC R2
LCALL DELAY
DJNZ R4,LOP3
DJNZ R3,LOP4

MOV R3,#3
LOP6: MOV R4,#8
MOV R2,#0
LOP5: MOV P3,#00H
MOV DPTR,#TABB
MOV A,R2
MOVC A,@A+DPTR
MOV P1,A
INC R2
LCALL DELAY
DJNZ R4,LOP5
DJNZ R3,LOP6

MOV R3,#3
LOP8: MOV R4,#8
MOV R2,#7
LOP7: MOV P3,#00H
MOV DPTR,#TABB
MOV A,R2
MOVC A,@A+DPTR
MOV P1,A
DEC R2
LCALL DELAY
DJNZ R4,LOP7
DJNZ R3,LOP8

ORG 00H ;定义程序存储器地址00H
START: NOP ;空指令(MCU上电时不稳定,一般会在复位地址
;加NOP指令,防止程序跑非)
MOV R3,#3 ;
LOP2: MOV R4,#8
MOV R2,#0
LOP1: MOV P1,#0FFH ;设置P1口为全高(P1口应该是与LED的阳极相连
;的)
MOV DPTR,#TABA ;<查表(R2为相对偏移指针,P3口与LED阴极相连
MOV A,R2
MOVC A,@A+DPTR
MOV P3,A ;>
INC R2 ;指针加一,以便于查表格的下一地址的数据
LCALL DELAY ;显示延时
DJNZ R4,LOP1 ;LOP1循环8次
DJNZ R3,LOP2 ;LOP2循环3次

---------------------以下类似------------------------------

MOV R3,#3
LOP4: MOV R4,#8
MOV R2,#7
LOP3: MOV P1,#0FFH
MOV DPTR,#TABA
MOV A,R2
MOVC A,@A+DPTR
MOV P3,A
DEC R2
LCALL DELAY
DJNZ R4,LOP3
DJNZ R3,LOP4

MOV R3,#3
LOP6: MOV R4,#8
MOV R2,#0
LOP5: MOV P3,#00H
MOV DPTR,#TABB
MOV A,R2
MOVC A,@A+DPTR
MOV P1,A