📄 table.asm
字号:
;;WAN NIAN LI TABLE PART
;;ESTABLISHED DATE: 2005/08/29
;;********************************************
TABLE1. SECTION PAGE 'CODE'
;;********************************************
;;THE T_LEAPMONTH TABLE CONTENT IS LEAP MONTH FROM 2000 YEAR TO 2031 YEAR
;;INPUT VARIABLE: ACC
;;********************************************
T_LEAPMONTH:
DC 40H
DC 00H
DC 02H
DC 07H
DC 50H
DC 00H
DC 04H
DC 09H
DC 60H
DC 00H
DC 04H
DC 20H
DC 60H
DC 00H
DC 05H
DC 30H
SBR_GETLEAPMONTH:
MOV R_TEMP3,A
CLR C
RRC ACC
MOV TBLP,A
MOV A,LOW T_LEAPMONTH
ADDM A,TBLP
TABRDC ACC
SZ R_TEMP3.0
SWAP ACC
AND A,0FH
MOV R_LEAPMONTH,A
RET
;;*******************************************
;;THE TABLE HIGH BYTE IS EACH MONTH DAYS,
;;AND LOW BYTE IS WEEK OF ONE DATE JANUARY SOLAR FROM 2000 YEAR TO 2031 YEAR
;;*******************************************
T_MONTHDAYS_WEEK:
DC 0016H
DC 1F32H
DC 1C64H
DC 1F10H
DC 1E42H
DC 1F65H
DC 1E20H
DC 1F43H
DC 1F05H
DC 1E21H
DC 1F53H
DC 1E06H
DC 1F31H
DC 0054H
DC 0016H
DC 0032H
;;--------------------------------------------
;;CALCULATE FROM CURRENT DATE SOLAR TO ONE DATE JANUARY SOLAR DAYS
;;INPUT VARIABLE: R_MONTH_SOLAR
;;--------------------------------------------
SBR_GETDAYSNUMBER:
M_MOV R_TEMP3,R_MONTH_SOLAR
MLP_GETDAYSNUMBER:
DEC R_TEMP3
SZ Z
JMP L_GETTOTALDAYS
MOV A,LOW T_MONTHDAYS_WEEK
ADD A,R_TEMP3
MOV TBLP,A
TABRDC ACC
MOV A,TBLH
ADDM A,R_DAYNUMBERL
MOV A,0H
ADCM A,R_DAYNUMBERH
JMP MLP_GETDAYSNUMBER
L_GETTOTALDAYS:
MOV A,R_DATE_SOLAR
SUB A,01H
ADDM A,R_DAYNUMBERL
MOV A,0H
ADCM A,R_DAYNUMBERH
CALL SBR_CHECKLEAPYEAR
SNZ F_LEAPYEAR
RET
MOV A,R_MONTH_SOLAR
SUB A,03H
SNZ C
RET
MOV A,01H
ADDM A,R_DAYNUMBERL
MOV A,0H
ADCM A,R_DAYNUMBERH
RET
;;-------------------------------------------
;;GET MONTH DAYS
SBR_GETMONTHDAYS:
TABRDC ACC
MOV A,R_MONTH_SOLAR
XOR A,02H
MOV A,TBLH
SNZ Z
RET ;;R_MONTH_SOLAR IS NOT 2.
CALL SBR_CHECKLEAPYEAR ;;R_MONTH_SOLAR IS 2.
SNZ F_LEAPYEAR
RET
INC ACC
RET
;;-------------------------------------------
;;CALCULATE THE ONE DATE JANUARY OF SOLAR IS WHICH WEEK
;;INPUT VARIABLE: R_SOLAR_YEAR
SBR_GETWEEK1_1:
M_MOV TBLP,R_YEAR_SOLAR
CLR C
RRC TBLP
MOV A,LOW T_MONTHDAYS_WEEK
ADDM A,TBLP
TABRDC ACC
SZ R_YEAR_SOLAR.0
SWAP ACC
AND A,0FH
MOV R_WEEK,A
RET
;;*******************************************
;;INPUT VARIABLE: ACC
;;*******************************************
T_LUNARDATEOF1_1:
DC 2719H
DC 1D12H
DC 152AH
DC 0D22H
DC 2617H
DC 1B11H
DC 1428H
DC 0B21H
DC 2416H
DC 1A0FH
DC 1227H
DC 2A1DH
DC 2214H
DC 180DH
DC 1125H
DC 281CH
SBR_GETLUNARDATEOF1_1:
MOV R_TEMP3,A
CLR C
RRC ACC
MOV TBLP,A
MOV A,LOW T_LUNARDATEOF1_1
ADDM A,TBLP
TABRDC R_TEMP2
MOV A,TBLH
SZ R_TEMP3.0 ;;THE YEAR IS ODD NUMBER OR EVEN NUMBER
JMP L_GETLUNARDATEOF1_1
MOV A,R_TEMP2 ;;THE YEAR IS EVEN NUMBER
L_GETLUNARDATEOF1_1:
MOV R_TEMP2,A
AND A,1FH
MOV R_LUNARDATE_1,A
MOV A,0BH
SZ R_TEMP2.5 ;;R_TEMP2.5 EQU 0 IS NOVEMBER,R_TEMP2.5 EQU 1 IS DECEMBER
MOV A,0CH
MOV R_LUNARMONTH_1,A
RET
;;*****************************************
;;INPUT VARIABLE: ACC
;;*****************************************
T_LUNARMONTHID:
DC 0C96H ;;2000YEAR
DC 1D4AH
DC 0D4AH
DC 0DA5H
DC 15AAH
DC 056AH
DC 1AADH ;;0AADH
DC 025DH ;;125DH
DC 092DH
DC 1C95H
DC 0A95H
DC 0B4AH
DC 0B55H
DC 0AD5H
DC 155AH
DC 04BAH
DC 0A5BH
DC 152BH
DC 052BH
DC 0A93H
DC 174AH
DC 06AAH
DC 0AD5H
DC 14DAH
DC 04B6H
DC 0957H
DC 0A4EH
DC 0D26H
DC 0E93H
DC 0D53H
DC 05AAH
DC 06B5H
SBR_GETLUNARMONTHID:
MOV TBLP,A
MOV A,LOW T_LUNARMONTHID
ADDM A,TBLP
TABRDC R_LUNARMONTHIDL
M_MOV R_LUNARMONTHIDH,TBLH
RET
;;********************************************
;;IT IS SOLAR TERM DATE OF EACH MONTH
;;********************************************
T_SOLARTERM_DATE:
DC 1405H ;;JANUARY THE FIRST SOLARTERM OF JANUARY IS 5 DATE,AND THE SECOND SOLARTERM OF JANUARY IS 14 DATE
DC 1203H ;;FEBRUARY
DC 1405H ;;MARCH
DC 1304H ;;APRIL
DC 1405H ;;MAY
DC 1505H ;;JUNE
DC 1606H ;;JULY
DC 1607H ;;AUGUST
DC 1607H ;;SEPTEMBER
DC 1708H ;;OCTOBER
DC 1607H ;;NOVEMBER
DC 1506H ;;DECEMBER
SBR_GETSOLARTERMDATE:
DEC ACC
MOV TBLP,A
MOV A,LOW T_SOLARTERM_DATE
ADDM A,TBLP
TABRDC R_SOLARTERMDATE
M_MOV R_TEMP1,TBLH
RET
;;********************************************
;;THE DELTA DATE OF SOLARTERM FROM JANUARY TO JUNE
;;********************************************
T_SOLARTERMDELTADATELOW:
DC 001010001111B
DC 001011000100B
DC 011111111100B
DC 011111111101B
DC 001010001111B
DC 001011000100B
DC 011011111100B
DC 111111111101B
DC 001010001111B
DC 001010000100B
DC 011011111100B
DC 111111111101B
DC 000010001111B
DC 001010000100B
DC 011011111100B
DC 111111111101B
DC 000000001101B
DC 001010000000B
DC 011011101100B
DC 011111111100B
DC 000000001101B
DC 001010000000B
DC 011011001100B
DC 011111111100B
DC 000000001101B
DC 001010000000B
DC 001111000100B
DC 011111111100B
DC 000000001101B
DC 001010000000B
DC 001011000100B
;SBR_GETSOLARTERMDELTADATELOW:
; TABRDC R_TEMP2
; RET
;;********************************************
;;TE DELTA DATE OF SOLARTERM FROM JULY TO DECEMBER
;;********************************************
T_SOLARTERMDELTADATEHIGH:
DC 010000101001B
DC 110000101011B
DC 110000111111B
DC 111111111111B
DC 010000101001B
DC 110000101011B
DC 110000111011B
DC 111111111111B
DC 010000001001B
DC 110000101011B
DC 110000111011B
DC 111110111111B
DC 010000001001B
DC 110000101001B
DC 110000111011B
DC 110110111111B
DC 010000001001B
DC 110000101001B
DC 110000111011B
DC 110110111111B
DC 010000000000B
DC 010000101001B
DC 110000101011B
DC 110110111111B
DC 000000000000B
DC 010000101001B
DC 110000101011B
DC 110000111111B
DC 000000000000B
DC 010000101001B
DC 110000101011B
SBR_GETSOLARTERMDELTADATELOW:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -