
汇编程序求解释
;================读卡程序================DKCX0:;MOVTMOD,#20H;MOVTCON,#40H;MOVPCON,#00H;MO...
;================读卡程序================
DKCX0: ;MOV TMOD,#20H
;MOV TCON,#40H
;MOV PCON,#00H
;MOV SCON,#50H
MOV TL1,#0FDH
MOV TH1,#0FDH
SETB TR1
;MOV 1FH,#0FFH
MOV 7CH,#00H
ERRO: CLR A
MOV R0,#20H
RCLR: MOV @R0,A
INC R0
CJNE R0,#40H,RCLR
MOV R0,#20H
MOV R1,#8
CLR C
WAIT: ;JB T0,WAIT
;JNB T0,$
;JB T0,$
MAI2: MOV R5,#5
MAI3: MOV R6,#0FFH
MAI4: JB T0,MAI5
DJNZ R6,MAI4
DJNZ R5,MAI3
RET
MAI5: MOV R5,#5
MAI6: MOV R6,#0FFH
MAI7: JNB T0,MAI8
DJNZ R6,MAI7
DJNZ R5,MAI6
RET
MAI8: MOV @R0,#1;2006.11.6
WATP: MOV R7,#152;142
WAT1: JB T0,WAT2 ; 0_1
DJNZ R7,WAT1
RET ;LJMP WAT77;11.6 ERRO ; T>640uS
WAT2: CJNE R7,#56,WAT3
WAT3: JNC WAT5 ; T<384uS
DJNZ R1,WAT4 ; 384uS>T<640uS
MOV R1,#8
INC R0
CJNE R0,#30H,WAT4;40
SJMP YM
WAT4: MOV A,@R0
RL A
MOV @R0,A ; "0"
WAT5: DJNZ R1,WAT6
MOV R1,#8
INC R0
CJNE R0,#30H,WAT6;40
SJMP YM
WAT6: MOV A,@R0
RL A
MOV @R0,A ; "0"
WAT77: MOV R7,#152;142
WAT7: JNB T0,WAT8 ; 1_0
DJNZ R7,WAT7
RET ;SJMP ERRO ;11.6 ; T>640uS
WAT8: CJNE R7,#56,WAT9
WAT9: JNC WAT11 ; T<384uS
DJNZ R1,WAT10 ; 384uS>T<640uS
MOV R1,#8
INC R0
CJNE R0,#30H,WAT10;40
SJMP YM
WAT10: MOV A,@R0
RL A
INC A
MOV @R0,A ; "1"
WAT11: DJNZ R1,WAT12
MOV R1,#8
INC R0
CJNE R0,#30H,WAT12;40
SJMP YM
WAT12: MOV A,@R0
RL A
INC A
MOV @R0,A ; "1"
SJMP WATP
YM: MOV R6,#128;0;11.6
YM0: MOV A,20H
CJNE A,#6AH,YM1
MOV A,21H
CJNE A,#0AAH,YM1
MOV A,22H 展开
DKCX0: ;MOV TMOD,#20H
;MOV TCON,#40H
;MOV PCON,#00H
;MOV SCON,#50H
MOV TL1,#0FDH
MOV TH1,#0FDH
SETB TR1
;MOV 1FH,#0FFH
MOV 7CH,#00H
ERRO: CLR A
MOV R0,#20H
RCLR: MOV @R0,A
INC R0
CJNE R0,#40H,RCLR
MOV R0,#20H
MOV R1,#8
CLR C
WAIT: ;JB T0,WAIT
;JNB T0,$
;JB T0,$
MAI2: MOV R5,#5
MAI3: MOV R6,#0FFH
MAI4: JB T0,MAI5
DJNZ R6,MAI4
DJNZ R5,MAI3
RET
MAI5: MOV R5,#5
MAI6: MOV R6,#0FFH
MAI7: JNB T0,MAI8
DJNZ R6,MAI7
DJNZ R5,MAI6
RET
MAI8: MOV @R0,#1;2006.11.6
WATP: MOV R7,#152;142
WAT1: JB T0,WAT2 ; 0_1
DJNZ R7,WAT1
RET ;LJMP WAT77;11.6 ERRO ; T>640uS
WAT2: CJNE R7,#56,WAT3
WAT3: JNC WAT5 ; T<384uS
DJNZ R1,WAT4 ; 384uS>T<640uS
MOV R1,#8
INC R0
CJNE R0,#30H,WAT4;40
SJMP YM
WAT4: MOV A,@R0
RL A
MOV @R0,A ; "0"
WAT5: DJNZ R1,WAT6
MOV R1,#8
INC R0
CJNE R0,#30H,WAT6;40
SJMP YM
WAT6: MOV A,@R0
RL A
MOV @R0,A ; "0"
WAT77: MOV R7,#152;142
WAT7: JNB T0,WAT8 ; 1_0
DJNZ R7,WAT7
RET ;SJMP ERRO ;11.6 ; T>640uS
WAT8: CJNE R7,#56,WAT9
WAT9: JNC WAT11 ; T<384uS
DJNZ R1,WAT10 ; 384uS>T<640uS
MOV R1,#8
INC R0
CJNE R0,#30H,WAT10;40
SJMP YM
WAT10: MOV A,@R0
RL A
INC A
MOV @R0,A ; "1"
WAT11: DJNZ R1,WAT12
MOV R1,#8
INC R0
CJNE R0,#30H,WAT12;40
SJMP YM
WAT12: MOV A,@R0
RL A
INC A
MOV @R0,A ; "1"
SJMP WATP
YM: MOV R6,#128;0;11.6
YM0: MOV A,20H
CJNE A,#6AH,YM1
MOV A,21H
CJNE A,#0AAH,YM1
MOV A,22H 展开
2个回答
展开全部
DKCX0: ;MOV TMOD,#20H;DKCX0子程序开始******************
;MOV TCON,#40H;初始化单片机模式类型
;MOV PCON,#00H;初始化单片机模式类型
;MOV SCON,#50H;初始化单片机模式类型
MOV TL1,#0FDH;给T1低8位中断设置初值
MOV TH1,#0FDH;给T1高8位中断设置初值
SETB TR1;打开定时器1中断
;MOV 1FH,#0FFH;向内存地址内赋值
MOV 7CH,#00H;向内存地址内赋值
ERRO: CLR A;清空ACC寄存器
MOV R0,#20H向寄存器r0内赋值
RCLR: MOV @R0,将A赋值给寄存器r0值的内存地址
INC R0;r0自加1
CJNE R0,#40H,RCLR;r0值大于40h则跳转,不大于则继续
MOV R0,#20H;向寄存器r0内赋值
MOV R1,#8;向寄存器r1内赋值
CLR C;清楚c寄存器的值
WAIT: ;JB T0,WAIT;设置程序断电,并根据to的值是否继续等待
;JNB T0,$;设置程序断电,并根据to的值是否继续等待
;JB T0,$;设置程序断电,并根据to的值是否继续等待
MAI2: MOV R5,#5;赋值
MAI3: MOV R6,#0FFH;赋值
MAI4: JB T0,MAI5;;设置程序断电,并根据to的值是否继续等待
DJNZ R6,MAI4;设置程序断电,并根据56的值是否继续等待
DJNZ R5,MAI3;设置程序断电,并根据tr5的值是否继续等待
RET;DKCX0子程序结束
;子程序结束******************************************
MAI5: MOV R5,#5
MAI6: MOV R6,#0FFH
MAI7: JNB T0,MAI8
DJNZ R6,MAI7
DJNZ R5,MAI6
RET
MAI8: MOV @R0,#1;2006.11.6
WATP: MOV R7,#152;142
WAT1: JB T0,WAT2 ; 0_1
DJNZ R7,WAT1
RET ;LJMP WAT77;11.6 ERRO ; T>640uS
WAT2: CJNE R7,#56,WAT3
WAT3: JNC WAT5 ; T<384uS
DJNZ R1,WAT4 ; 384uS>T<640uS
MOV R1,#8
INC R0
CJNE R0,#30H,WAT4;40
SJMP YM
WAT4: MOV A,@R0
RL A
MOV @R0,A ; "0"
WAT5: DJNZ R1,WAT6
MOV R1,#8
INC R0
CJNE R0,#30H,WAT6;40
SJMP YM
WAT6: MOV A,@R0
RL A
MOV @R0,A ; "0"
WAT77: MOV R7,#152;142
WAT7: JNB T0,WAT8 ; 1_0
DJNZ R7,WAT7
RET ;SJMP ERRO ;11.6 ; T>640uS
WAT8: CJNE R7,#56,WAT9
WAT9: JNC WAT11 ; T<384uS
DJNZ R1,WAT10 ; 384uS>T<640uS
MOV R1,#8
INC R0
CJNE R0,#30H,WAT10;40
SJMP YM
WAT10: MOV A,@R0
RL A
INC A
MOV @R0,A ; "1"
WAT11: DJNZ R1,WAT12
MOV R1,#8
INC R0
CJNE R0,#30H,WAT12;40
SJMP YM
WAT12: MOV A,@R0
RL A
INC A
MOV @R0,A ; "1"
SJMP WATP
YM: MOV R6,#128;0;11.6
YM0: MOV A,20H
CJNE A,#6AH,YM1
MOV A,21H
CJNE A,#0AAH,YM1
MOV A,22H
;暂时给你解释了第一段子程序的意思,下面的也和这个差不多,你自己看看书,不难懂,呵呵!
;MOV TCON,#40H;初始化单片机模式类型
;MOV PCON,#00H;初始化单片机模式类型
;MOV SCON,#50H;初始化单片机模式类型
MOV TL1,#0FDH;给T1低8位中断设置初值
MOV TH1,#0FDH;给T1高8位中断设置初值
SETB TR1;打开定时器1中断
;MOV 1FH,#0FFH;向内存地址内赋值
MOV 7CH,#00H;向内存地址内赋值
ERRO: CLR A;清空ACC寄存器
MOV R0,#20H向寄存器r0内赋值
RCLR: MOV @R0,将A赋值给寄存器r0值的内存地址
INC R0;r0自加1
CJNE R0,#40H,RCLR;r0值大于40h则跳转,不大于则继续
MOV R0,#20H;向寄存器r0内赋值
MOV R1,#8;向寄存器r1内赋值
CLR C;清楚c寄存器的值
WAIT: ;JB T0,WAIT;设置程序断电,并根据to的值是否继续等待
;JNB T0,$;设置程序断电,并根据to的值是否继续等待
;JB T0,$;设置程序断电,并根据to的值是否继续等待
MAI2: MOV R5,#5;赋值
MAI3: MOV R6,#0FFH;赋值
MAI4: JB T0,MAI5;;设置程序断电,并根据to的值是否继续等待
DJNZ R6,MAI4;设置程序断电,并根据56的值是否继续等待
DJNZ R5,MAI3;设置程序断电,并根据tr5的值是否继续等待
RET;DKCX0子程序结束
;子程序结束******************************************
MAI5: MOV R5,#5
MAI6: MOV R6,#0FFH
MAI7: JNB T0,MAI8
DJNZ R6,MAI7
DJNZ R5,MAI6
RET
MAI8: MOV @R0,#1;2006.11.6
WATP: MOV R7,#152;142
WAT1: JB T0,WAT2 ; 0_1
DJNZ R7,WAT1
RET ;LJMP WAT77;11.6 ERRO ; T>640uS
WAT2: CJNE R7,#56,WAT3
WAT3: JNC WAT5 ; T<384uS
DJNZ R1,WAT4 ; 384uS>T<640uS
MOV R1,#8
INC R0
CJNE R0,#30H,WAT4;40
SJMP YM
WAT4: MOV A,@R0
RL A
MOV @R0,A ; "0"
WAT5: DJNZ R1,WAT6
MOV R1,#8
INC R0
CJNE R0,#30H,WAT6;40
SJMP YM
WAT6: MOV A,@R0
RL A
MOV @R0,A ; "0"
WAT77: MOV R7,#152;142
WAT7: JNB T0,WAT8 ; 1_0
DJNZ R7,WAT7
RET ;SJMP ERRO ;11.6 ; T>640uS
WAT8: CJNE R7,#56,WAT9
WAT9: JNC WAT11 ; T<384uS
DJNZ R1,WAT10 ; 384uS>T<640uS
MOV R1,#8
INC R0
CJNE R0,#30H,WAT10;40
SJMP YM
WAT10: MOV A,@R0
RL A
INC A
MOV @R0,A ; "1"
WAT11: DJNZ R1,WAT12
MOV R1,#8
INC R0
CJNE R0,#30H,WAT12;40
SJMP YM
WAT12: MOV A,@R0
RL A
INC A
MOV @R0,A ; "1"
SJMP WATP
YM: MOV R6,#128;0;11.6
YM0: MOV A,20H
CJNE A,#6AH,YM1
MOV A,21H
CJNE A,#0AAH,YM1
MOV A,22H
;暂时给你解释了第一段子程序的意思,下面的也和这个差不多,你自己看看书,不难懂,呵呵!
展开全部
我也是刚学汇编,大概解释下:
mov
dx,0506h
;
把0506h送入寄存器dx
mov
cl,04h
;
把04h送寄存器cx的低8位寄存器中,即cl
shl
dh,cl
;
dh左移4位,dx内容就为
5006
add
dl,dh
;
dl
与
dh相加存入寄存器dl
dx:5056
sub
dh,dh
;
dh
与
dh
相减存入dh,即将dh重置为0,
dx:0056
mov
ah,02h
;
将02h送入寄存器ah
int
21h
;
中断指令
mov
ah,4ch
int
21h
dh和dl分别是dx的高8位和低8位寄存器,可以单独使用.
ps:新手,请高手指正
mov
dx,0506h
;
把0506h送入寄存器dx
mov
cl,04h
;
把04h送寄存器cx的低8位寄存器中,即cl
shl
dh,cl
;
dh左移4位,dx内容就为
5006
add
dl,dh
;
dl
与
dh相加存入寄存器dl
dx:5056
sub
dh,dh
;
dh
与
dh
相减存入dh,即将dh重置为0,
dx:0056
mov
ah,02h
;
将02h送入寄存器ah
int
21h
;
中断指令
mov
ah,4ch
int
21h
dh和dl分别是dx的高8位和低8位寄存器,可以单独使用.
ps:新手,请高手指正
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询