?? 萬年歷.asm
字號:
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
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減1月天數
CLR C
SUBB A,#29
MOV R1,A
MOV A,R6
JB ACC.6,SM11
MOV A,R2
CLR C
MOV A,#30
MOV R1,A
SM11: JC SM12
MOV A,R1 ;R2減1月天數 夠減
MOV R2,A ;轉2月
AJMP M2
SM12: CJNE R3,#00H,M13 ;R2減1月天數
LJMP Y1 ;不夠減,判斷R3為0否
M13: MOV A,R2 ;不為0,R3加到R2中
ADD A,R3 ;再讓1月減
MOV R2,A ;還不夠轉Y1
MOV R3,#00H
AJMP M1
M2: CLR C ;R2減1月天數 夠減
MOV A,R2 ;轉3月
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 ;再讓2月減
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 ;R2減閏2月天數
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
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
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -