📄 wannieli.asm
字号:
AJMP M4
RM33: CJNE R3,#00H,RM34
LJMP RY3 ;R2减润3月天数
RM34: MOV A,R2 ;不够减,判断R3为0否
ADD A,R3 ;不为0,R3加到R2中
MOV R2,A ;再让闰3月减
MOV R3,#00H ;还不够转RY3
AJMP RM3
M4: MOV A,R2 ;R2减4月天数
CLR C
SUBB A,#29
MOV R1,A
MOV A,R6
JB ACC.2,M41
CLR C
MOV A,R2
SUBB A,#30
MOV R1,A
M41: JC M42
MOV A,R1 ;R2减4月天数,够减
MOV R2,A
AJMP MM4
M42: CJNE R3,#00H,M43 ;R2减4月天数
LJMP Y4 ;不够减,判断R3为0否
M43: MOV A,R2 ;不为0,R3加到R2中
ADD A,R3 ;再让4月减
MOV R2,A ;还不够,则转Y4
MOV R3,#00H
AJMP M4
MM4: LCALL CHECKRE ;查4月,如果不为闰月
CJNE A,#04H,M5 ;转5月
RM4: MOV A,R4
ANL A,#0FH ;R2减闰4月天数
JNZ RM41
MOV A,R2
CLR C
SUBB A,#30
MOV R1,A
AJMP RM42
RM41: MOV A,R2
CLR C
SUBB A,#29
MOV R1,A
RM42: JC RM43
MOV A,R1 ;R2减闰4月天数,够减
MOV R2,A ;转5月
AJMP M5
RM43: CJNE R3,#00H,RM44
LJMP RY4 ;R2减润4月天数
RM44: MOV A,R2 ;不够减,判断R3为0否
ADD A,R3 ;不为0,R3加到R2中
MOV R2,A ;再让闰4月减
MOV R3,#00H ;还不够转RY4
AJMP RM4
M5: MOV A,R2 ;R2减5月天数
CLR C
SUBB A,#29
MOV R1,A
MOV A,R6
JB ACC.1,M51
MOV A,R2
CLR C
SUBB A,#30
MOV R1,A
M51: JC M52
MOV A,R1 ;R2减5月天数,够减
MOV R2,A
AJMP MM5
M52: CJNE R3,#00H,M53 ;R2减5月天数
LJMP Y5 ;不够减,判断R3为0否
M53: MOV A,R2 ;不为0,R3加到R2中
ADD A,R3 ;再让5月减
MOV R2,A ;还不够,则转Y5
MOV R3,#00H
LJMP M5
MM5: LCALL CHECKRE ;查5月,如果不为闰月
CJNE A,#05H,M6 ;转6月
RM5: MOV A,R4
ANL A,#0FH ;R2减闰5月天数
JNZ RM51
MOV A,R2
CLR C
SUBB A,#30
MOV R1,A
AJMP RM52
RM51: MOV A,R2
CLR C
SUBB A,#29
MOV R1,A
RM52: JC RM53
MOV A,R1 ;R2减闰5月天数,够减
MOV R2,A ;转6月
LJMP M6
RM53: CJNE R3,#00H,RM54
LJMP RY5 ;R2减润5月天数
RM54: MOV A,R2 ;不够减,判断R3为0否
ADD A,R3 ;不为0,R3加到R2中
MOV R2,A ;再让闰5月减
MOV R3,#00H ;还不够转RY5
LJMP RM5
M6: MOV A,R2 ;R2减6月天数
CLR C
SUBB A,#29
MOV R1,A
MOV A,R6
JB ACC.0,M61
MOV A,R2
CLR C
SUBB A,#30
MOV R1,A
M61: JC M62
MOV A,R1 ;R2减6月天数,够减
MOV R2,A
AJMP MM6
M62: CJNE R3,#00H,M63 ;R2减6月天数
LJMP Y6 ;不够减,判断R3为0否
M63: MOV A,R2 ;不为0,R3加到R2中
ADD A,R3 ;再让6月减
MOV R2,A ;还不够,则转Y6
MOV R3,#00H
AJMP M6
MM6: LCALL CHECKRE ;查6月,如果不为闰月
CJNE A,#06H,M7 ;转7月
RM6: MOV A,R4
ANL A,#0FH ;R2减闰6月天数
JNZ RM61
MOV A,R2
CLR C
SUBB A,#30
MOV R1,A
AJMP RM62
RM61: MOV A,R2
CLR C
SUBB A,#29
MOV R1,A
RM62: JC RM63
MOV A,R1 ;R2减闰6月天数,够减
MOV R2,A ;转7月
LJMP M7
RM63: CJNE R3,#00H,RM64
LJMP RY6 ;R2减润6月天数
RM64: MOV A,R2 ;不够减,判断R3为0否
ADD A,R3 ;不为0,R3加到R2中
MOV R2,A ;再让闰6月减
MOV R3,#00H ;还不够转RY6
LJMP RM6
M7: MOV A,R2 ;R2减7月天数
CLR C
SUBB A,#29
MOV R1,A
MOV A,R5
JB ACC.6,M71
MOV A,R2
CLR C
SUBB A,#30
MOV R1,A
M71: JC M72
MOV A,R1 ;R2减7月天数,够减
MOV R2,A
LJMP MM7
M72: CJNE R3,#00H,M73 ;R2减7月天数
LJMP Y7 ;不够减,判断R3为0否
M73: MOV A,R2 ;不为0,R3加到R2中
ADD A,R3 ;再让7月减
MOV R2,A ;还不够,则转Y7
MOV R3,#00H
LJMP M7
MM7: LCALL CHECKRE ;查7月,如果不为闰月
CJNE A,#07H,M8 ;转8月
RM7: MOV A,R4
ANL A,#0FH ;R2减闰7月天数
JNZ RM71
MOV A,R2
CLR C
SUBB A,#30
MOV R1,A
LJMP RM72
RM71: MOV A,R2
CLR C
SUBB A,#29
MOV R1,A
RM72: JC RM73
MOV A,R1 ;R2减闰7月天数,够减
MOV R2,A ;转8月
LJMP M8
RM73: CJNE R3,#00H,RM74
LJMP RY7 ;R2减润5月天数
RM74: MOV A,R2 ;不够减,判断R3为0否
ADD A,R3 ;不为0,R3加到R2中
MOV R2,A ;再让闰7月减
MOV R3,#00H ;还不够转RY7
LJMP RM7
M8: MOV A,R2 ;R2减8月天数
CLR C
SUBB A,#29
MOV R1,A
MOV A,R5
JB ACC.5,M81
MOV A,R2
CLR C
SUBB A,#30
MOV R1,A
M81: JC M82
MOV A,R1 ;R2减8月天数,够减
MOV R2,A
LJMP M9 ;转9月
M82: CJNE R3,#00H,M83 ;R2减8月天数
LJMP Y8 ;不够减,判断R3为0否
M83: MOV A,R2 ;不为0,R3加到R2中
ADD A,R3 ;再让8月减
MOV R2,A ;还不够,则转Y8
MOV R3,#00H
LJMP M8
M9: MOV A,R2 ;R2减9月天数
CLR C
SUBB A,#29
MOV R1,A
MOV A,R5
JB ACC.4,M91
MOV A,R2
CLR C
SUBB A,#30
MOV R1,A
M91: JC M92
MOV A,R1 ;R2减9月天数,够减
MOV R2,A
LJMP MM9
M92: CJNE R3,#00H,M93 ;R2减9月天数
LJMP Y9 ;不够减,判断R3为0否
M93: MOV A,R2 ;不为0,R3加到R2中
ADD A,R3 ;再让9月减
MOV R2,A ;还不够,则转Y7
MOV R3,#00H
LJMP M9
MM9: LCALL CHECKRE ;查7月,如果不为闰月
CJNE A,#09H,M10 ;转10月
RM9: MOV A,R4
ANL A,#0FH ;R2减闰9月天数
JNZ RM91
MOV A,R2
CLR C
SUBB A,#30
MOV R1,A
LJMP RM92
RM91: MOV A,R2
CLR C
SUBB A,#29
MOV R1,A
RM92: JC RM93
MOV A,R1 ;R2减闰9月天数,够减
MOV R2,A ;转10月
LJMP M10
RM93: CJNE R3,#00H,RM94
LJMP RY9 ;R2减润9月天数
RM94: MOV A,R2 ;不够减,判断R3为0否
ADD A,R3 ;不为0,R3加到R2中
MOV R2,A ;再让闰9月减
MOV R3,#00H ;还不够转RY9
LJMP RM9
M10: MOV A,R2 ;R2减10月天数
CLR C
SUBB A,#29
MOV R1,A
MOV A,R5
JB ACC.2,M101
MOV A,R2
CLR C
SUBB A,#30
MOV R1,A
M101: JC M102
MOV A,R1 ;R2减10月天数,够减
MOV R2,A
LJMP M11 ;转11月
M102: CJNE R3,#00H,M103 ;R2减10月天数
LJMP Y10 ;不够减,判断R3为0否
M103: MOV A,R2 ;不为0,R3加到R2中
ADD A,R3 ;再让10月减
MOV R2,A ;还不够,则转Y10
MOV R3,#00H
LJMP M10
M11: MOV A,R2 ;R2减11月天数
CLR C
SUBB A,#29
MOV R1,A
MOV A,R5
JB ACC.1,M111
MOV A,R2
CLR C
SUBB A,#30
MOV R1,A
M111: JC M112
MOV A,R1 ;R2减11月天数,够减
MOV R2,A
LJMP M12
M112: CJNE R3,#00H,M113 ;R2减11月天数
LJMP Y11 ;不够减,判断R3为0否
M113: MOV A,R2 ;不为0,R3加到R2中
ADD A,R3 ;再让10月减
MOV R2,A ;还不够,则转Y10
MOV R3,#00H
LJMP M11
M12: MOV A,R2 ;R2减12月天数
CLR C
SUBB A,#29
MOV R1,A
MOV A,R5
JB ACC.0,M121
CLR C
MOV A,R2
SUBB A,#30
MOV R1,A
M121: CJNE R3,#00H,M122 ;R2减12月天数
LJMP Y12 ;不够减,判断R3为0否
M122: MOV A,R2 ;不为0,R3加到R2中
ADD A,R3 ;再让10月减
MOV R2,A ;还不够,则转Y10
MOV R3,#00H
LJMP M12
Y1: MOV A,R2
MOV R0,A ;R2中为日的值
LCALL D_BCD
MOV NDAY,A
MOV NMONTH,#01H
CLR F0 ;非闰月
LJMP S_PLAY
Y2: CJNE R2,#00H,Y21
MOV A,R6 ;R2为0,则为前一月最后一天
MOV NDAY,#29H
JB ACC.6,Y22
MOV NDAY,#30H
Y22: MOV NMONTH,#01H
CLR F0
LJMP S_PLAY
Y21: MOV A,R2
MOV R0,A ;R2中为日的值
LCALL D_BCD
MOV NDAY,A
MOV NMONTH,#02H
CLR F0
LJMP S_PLAY
RY2: CJNE R2,#00H,RY21
MOV NDAY,#29H ;R2为0,则为前一月最后一天
MOV A,R6
JB ACC.5,RY22
MOV NDAY,#30H
RY22: MOV NMONTH,#02H
CLR F0
LJMP S_PLAY
RY21: MOV A,R2 ;R2中为日的值
MOV R0,A
LCALL D_BCD
MOV NDAY,A
MOV NMONTH,#02H
SETB F0 ;闰月
LJMP S_PLAY
Y3: CJNE R2,#00H,Y31
LCALL CHECKRE ;查前一个月是否为闰月
CJNE A,#02H,Y32
MOV NDAY,#29H ;前一个月是闰月
MOV A,R4
ANL A,#0FH ;R2中为0,则为前一个月的最后一天
JNZ Y33
MOV NDAY,#30H
MOV NMONTH,#02H
SETB F0
LJMP S_PLAY
Y33: MOV NMONTH,#02H
SETB F0
LJMP S_PLAY
Y32: MOV NDAY,#29H ;前一个月不是闰月
MOV A,R6
JB ACC.5,Y34
MOV NDAY,#30H
Y34: MOV NMONTH,#02H
CLR F0
LJMP S_PLAY
Y31: MOV A,R2
MOV R0,A ;R2中为日的值
LCALL D_BCD
MOV NDAY,A
MOV NMONTH,#03H
CLR F0
LJMP S_PLAY
RY3: CJNE R2,#00H,RY31
MOV NDAY,#29H ;R2为0,则为前一月最后一天
MOV A,R6
JB ACC.4,RY32
MOV NDAY,#30H
RY32: MOV NMONTH,#03H
CLR F0
LJMP S_PLAY
RY31: MOV A,R2 ;R2中为日的值
MOV R0,A
LCALL D_BCD
MOV NDAY,A
MOV NMONTH,#03H
SETB F0 ;闰月
LJMP S_PLAY
Y4: CJNE R2,#00H,Y41
LCALL CHECKRE ;查前一个月是否为闰月
CJNE A,#03H,Y42
MOV NDAY,#29H ;前一个月是闰月
MOV A,R4
ANL A,#0FH ;R2中为0,则为前一个月的最后一天
JNZ Y43
MOV NDAY,#30H
MOV NMONTH,#03H
SETB F0
LJMP S_PLAY
Y43: MOV NMONTH,#03H
SETB F0
LJMP S_PLAY
Y42: MOV NDAY,#29H ;前一个月不是闰月
MOV A,R6
JB ACC.4,Y44
MOV NDAY,#30H
Y44: MOV NMONTH,#03H
CLR F0
LJMP S_PLAY
Y41: MOV A,R2
MOV R0,A ;R2中为日的值
LCALL D_BCD
MOV NDAY,A
MOV NMONTH,#04H
CLR F0
LJMP S_PLAY
RY4:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -