📄 1302.asm
字号:
MOV R3,#0FFH
AJMP TIAOZHENG1
TIAOZHENG1: MOV A,year
MOV B,#04
DIV AB
MOV A,B
JNZ GGG1
MOV A,65H ;当前年为闰年
CJNE A,#01H,AAAA
AJMP GGG1 ;当前月是1
AAAA: CJNE A,#02H,BBBB
AJMP GGG1 ;当前月是2
BBBB: CJNE R2,#0FFH,GGG2
MOV R3,#0FFH ;当前月不是1和2,
MOV R2,#01H ;R1和R2总和加一
AJMP GGG1
GGG2: INC R2
GGG1: MOV R0,year ;查一年数据
LCALL CHECKMONTH
MOV A,R2
CLR C
SUBB A,R7
MOV P1.6,C
CJNE A,#01H,GGG3
MOV R2,#01H
MOV A,R3
CJNE A,#00H,NEW1
MOV 57H,#01H ;R2和R3总和减R7
MOV 56H,#01H ;为0,则为春节
LJMP S_PLAY
GGG3: CJNE A,#00H,GGG6
MOV R2,A
AJMP OLD
GGG6: JNB P1.6,NEW2
MOV A,R7
CLR C
SUBB A,R2
MOV R7,A
CJNE R3,#0FFH,GGG5
MOV A,R3
CLR C
SUBB A,R7
MOV R2,A
MOV R3,#00H
AJMP NEW
GGG5: MOV A,R7
MOV R2,A
AJMP OLD
NEW1: MOV R2,#0FFH
MOV R3,#01H
AJMP NEW
NEW2: MOV R2,A
MOV A,R3
CJNE A,#0FFH,GGG4
MOV A,R2
MOV R3,A
MOV R2,#0FFH
GGG4: AJMP NEW
;;;;;;;;;;;;;;;;;;;;;
;; OLD ;;;;;;;;;农历为公历的前一年
;;;;;;;;;;;;;;;;;;;;;
OLD: MOV A,year
DEC A
MOV R0,A
LCALL CHECKMONTH
MOV A,R2
CLR C
SUBB A,#29
MOV P1.6,C
MOV R6,A
MOV A,R5
JB ACC.0,AAA ;12月为小月,转到AAA
MOV A,R2
CLR C
SUBB A,#30
MOV P1.6,C
MOV R6,A
AAA:MOV A,R6
CJNE A,#00H,BBB
MOV 56H,#29H ;为0,则为11月最后一天
MOV A,R5 ;小月为11月29
JB ACC.1,CCC
MOV 56H,#30H ;大月为11月30
CCC:MOV 57H,#11H
LJMP S_PLAY
BBB:JNB P1.6, DDD
MOV A,#29 ; CY位置位,位12月
CLR C
SUBB A,R2
MOV R4,A
MOV A,R5
JB ACC.0,EEE
MOV A,#30
CLR C
SUBB A,R2
MOV R4,A
EEE: MOV A,R4
MOV R0,A
LCALL D_BCD
MOV 56H,A
MOV 57H,#12H
LJMP S_PLAY
DDD: MOV A,#29 ;CY为0,为11月
CLR C
SUBB A,R4
MOV R1,A
MOV A,R5
JB ACC.1, FFF
MOV A,#30
CLR C
SUBB A,R4
MOV R1,A
FFF: MOV A,R1
MOV R0,A
LCALL D_BCD
MOV 56H,A
MOV 57H,#11H
LJMP S_PLAY
;;;;;;;;;;;;;;;;;;;;农历和公历为同一年,
;;;;;NEW;;;;;;;;;;;;此时R2中的值为FFH时,
;;;;;;;;;;;;;;;;;;;; R3有值,否则为0
NEW: NOP
M1: MOV A,R2 ;R2减一月天数
CLR C
SUBB A,#29
MOV R1,A
MOV A,R6
JB ACC.6,SM11
MOV A,R2
CLR C
SUBB A,#30
MOV R1,A
SM11: JC SM12
MOV A,R1 ;R2减1月天数,够减
MOV R2,A ;转二月
AJMP M2
SM12: CJNE R3,#00H,M13 ;R2减1月天数
LJMP Y1 ;不够减,判R3为0否
M13: MOV A,R2 ;不为0,R3加到R2中
ADD A,R3 ;再让一月减
MOV R2,A ;还不够,则转Y1
MOV R3,#00H
AJMP M1
M2: CLR C ;R2减一月天数,够减
MOV A,R2 ;转三月
SUBB A,#29
MOV R1,A
MOV A,R6
JB ACC.5,M21
MOV A,R2
CLR C
SUBB A,#30
MOV R1,A
M21: JC M22
MOV A,R1 ;R2减2月天数,够减
MOV R2,A
AJMP MM2
M22: CJNE R3,#00H,M23 ;R2减2月天数
LJMP Y2 ;不够减,判,R3为0否
M23: MOV A,R2 ;不为0,R3加到R2中
ADD A,R3 ;再让二月减
MOV R2,A ;还不够,则转Y2
MOV R3,#00H
AJMP M2
MM2: LCALL CHECKRE ;查2月,如果不为闰月
CJNE A,#02H,M3 ;转3月
RM2: MOV A,R4
ANL A,#0FH
JNZ RM21
MOV A,R2
CLR C
SUBB A,#30
MOV R1,A
AJMP RM22
RM21:MOV A,R2
CLR C
SUBB A,#29
MOV R1,A
RM22:JC RM23
MOV A,R1 ;R2减闰2月天数,够减
MOV R2,A ;转3月
AJMP M3
RM23: CJNE R3,#00H,RM24 ;R2减闰2月天数
LJMP RY2 ;不够减,判,R3为0否
RM24:MOV A,R2 ;不为0,R3加到R2中
ADD A,R3 ;再让闰2月减
MOV R3,#00H ;还不够,则转RY2
AJMP RM2
M3: MOV A,R2 ;R2减3月天数
CLR C
SUBB A,#29
MOV R1,A
MOV A,R6
JB ACC.4,M31
CLR C
MOV A,R2
SUBB A,#30
MOV R1,A
M31: JC M32
MOV A,R1 ;R2减3月天数,够减
MOV R2,A
AJMP MM3
M32: CJNE R3,#00H,M33 ;R2减3月天数
LJMP Y3 ;不够减,判,R3为0否
M33: MOV A,R2 ;不为0,R3加到R2中
ADD A,R3 ;再让3月减
MOV R2,A ;还不够,则转Y3
MOV R3,#00H
AJMP M3
MM3: LCALL CHECKRE ;查3月,如果不为闰月
CJNE A,#03H,M4 ;转4月
RM3: MOV A,R4
ANL A,#0FH ;R2减闰3月天数
JNZ RM31
MOV A,R2
CLR C
SUBB A,#30
MOV R1,A
AJMP RM32
RM31: MOV A,R2
CLR C
SUBB A,#29
MOV R1,A
RM32: JC RM33
MOV A,R1 ;R2减闰3月天数,够减
MOV R2,A ;转4月
AJMP M4
RM33:CJNE R3,#00H,RM34 ;R2减闰3月天数
LJMP RY3 ;不够减,判,R3为0否
RM34:MOV A,R2 ;不为0,R3加到R2中
ADD A,R3 ;再让闰3月减
MOV R2,A ;还不够,则转RY3
MOV R3,#00H
AJMP RM3
M4: MOV A,R2
CLR C ;R2减4月天数
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 ;R2减闰4月天数
LJMP RY4 ;不够减,判,R3为0否
RM44: MOV A,R2 ;不为0,R3加到R2中
ADD A,R3 ;再让闰4月减
MOV R2,A
MOV R3,#00H ;还不够,则转Y4
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
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -