汇编程序求解释

;================读卡程序================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
展开
 我来答
呼延凝洁Di
推荐于2016-07-04 · TA获得超过134个赞
知道小有建树答主
回答量:279
采纳率:0%
帮助的人:214万
展开全部
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

;暂时给你解释了第一段子程序的意思,下面的也和这个差不多,你自己看看书,不难懂,呵呵!
创作者ZksagUXcHq
2020-06-26 · TA获得超过3696个赞
知道大有可为答主
回答量:3198
采纳率:32%
帮助的人:186万
展开全部
我也是刚学汇编,大概解释下:

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:新手,请高手指正
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式