我是新手求下面汇编语言的注释~看不懂啊
时间: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
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字节,书上都有的,找本书看看吧
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
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28