⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 1302.asm

📁 万年历程序 从1302中读出的数据放在67H(高两位年)66H(低两位年)65H(月)64H(星期)63H(日) 62H(小时)61H(分钟)60H(秒)57H(农历月)56H(农历日) 显示
💻 ASM
📖 第 1 页 / 共 5 页
字号:
                           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 + -