+ -
当前位置:首页 → 问答吧 → 我是新手求下面汇编语言的注释~看不懂啊

我是新手求下面汇编语言的注释~看不懂啊

时间:2011-11-11

来源:互联网

ORG 0000H
  LJMP MIN
  ORG 0030H
MIN:MOV SP,#60H
MIX:SETB P1.0
  MOV 30H,#01H
MOV 33H,#03H
MOV DPTR,#TABLE
L1:LCALL MIC
  CLR C
  MOV A,DPL
  ADD A,#02
  MOV DPL,A
  MOV A,DPH
  ADDC A,#00H
  MOV DPH,A
D1:DJNZ 30H,L1
  DJNZ 33H,D1
  LJMP MIX
MIC:SETB P1.0
LP: MOV 31H,#90
LOOP:MOV 32H,#16
  MOV R1,#1EH
  MOV R2,#00H
EN: MOV A,R2
  MOVC A,@A+DPTR
  MOV P0,A
  INC R2
  MOV A,R2
  MOVC A,@A+DPTR
  MOV P2,A
  INC R2
  MOV A,R1
  MOV P1,A
  LCALL DELAY
  SETB P1.0
RR A
DEC A
RL A
MOV R1,A
  DJNZ 32H,EN
  DJNZ 31H,LOOP
  RET
DELAY:MOV 34H,#01
  L2:MOV R4,#01
  DJNZ R4,$
  DJNZ 34H,L2
  RET
TABLE:
DB 

作者: xf85011263   发布时间: 2011-11-11

ORG 0000H ;程序从0000H单元起始
  LJMP MIN ;跳转至MIN
  ORG 0030H;中断起始地址
MIN:MOV SP,#60H ;设置堆栈地址
MIX:SETB P1.0 ;P1.0口置一
  MOV 30H,#01H ;送01H到30H
MOV 33H,#03H ;送03H到33H
MOV DPTR,#TABLE ;将TABLE直给指针DPTR
L1:LCALL MIC ;调用MIC
  CLR C ;清进位
  MOV A,DPL ;DPTR低八位给A
  ADD A,#02 ;地址加2
  MOV DPL,A ;回送
  MOV A,DPH  
  ADDC A,#00H
  MOV DPH,A
D1:DJNZ 30H,L1 30H单元值减一,不为0跳至L1
  DJNZ 33H,D1 ;33H单元值减一,不为0跳至D1
  LJMP MIX ;调至MIX
MIC:SETB P1.0 ;P1.0 置1
LP: MOV 31H,#90 ;送90到31H
LOOP:MOV 32H,#16 ;送16到32H
  MOV R1,#1EH ;送地址
  MOV R2,#00H
EN: MOV A,R2
  MOVC A,@A+DPTR ;查表
  MOV P0,A ;将查表值送P0口
  INC R2 ;地址增一
  MOV A,R2
  MOVC A,@A+DPTR
  MOV P2,A ;将查表值送P2口

  INC R2 ;地址增一
  MOV A,R1  
  MOV P1,A ;送1EH到P1口

  LCALL DELAY ;调用延时
  SETB P1.0 ;P1.0置一
RR A ;A循环右移

DEC A ;A值自减
RL A ;A循环左移

MOV R1,A ;
  DJNZ 32H,EN
  DJNZ 31H,LOOP
  RET
DELAY:MOV 34H,#01
  L2:MOV R4,#01
  DJNZ R4,$ ;等待
  DJNZ 34H,L2
  RET
TABLE:
DB  
字面翻译,下面都是一样的,你大概也不会太明白,尤其是查表那为什么要加2,因为调用子程序结尾有一条RET指令,占2字节,书上都有的,找本书看看吧

作者: wander0001   发布时间: 2011-11-11