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

📄 万年历.asm

📁 万年历的全套资料 是用汇编写的
💻 ASM
📖 第 1 页 / 共 5 页
字号:
                                          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 + -