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

📄 wannieli.asm

📁 19位万年历程序(带8个定时器
💻 ASM
📖 第 1 页 / 共 5 页
字号:
            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 + -