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

📄 runnian.txt

📁 闰年判断
💻 TXT
字号:
 ;定义数据段
               data          SEGMENT
              string1 DB        'Please input a year:---------$'
              string2 DB        0dh,0ah,'The year that you have inputted is not right!$'
              string3 DB        0dh,0ah,'Please input again:$'
              string4 DB        0dh,0ah,'This year is a Leap Year!$'
              string5 DB        0dh,0ah,'This year is not a Leap Year!$'
              string6 DB        0dh,0ah,'Are you want to input a other year?(y/n)$'
              string7 DB        0dh,0ah,'-----------------------Welcome to the leap-judging procedure!-------------------$'
              string8 DB        0dh,0ah,'--------------------------Thanks for your using!--------------------------------$'
              CR      DB        0Dh,0Ah,'$'
              year DB        8
                   DB        ?
                   DB        8 DUP(?)
              x    DB        8
                   DB        ?
                   DB        8 DUP(?)
              var DW        0
              data ENDS
       stack      SEGMENT   
                  DB        200 DUP(0) 
              stack ENDS
       code        SEGMENT
              ASSUME    CS:code,DS:data,SS:stack
              
              main PROC      FAR
              begin:
              PUSH      AX
              SUB       AX,AX
              PUSH      DS
              MOV       AX,data
              MOV       DS,AX
              LEA       DX,string7
              CALL      show
              ;在屏幕上显示提示输入信息

input:        CALL      trade
              CALL      trade
              LEA       DX,string1               
              CALL      show 
              
              CALL      judgeNumber  
              
              CALL      leapJudge
              
              LEA       DX,string6
              CALL      show
              
              LEA       DX,x
              MOV       AH,01h
              INT       21h  
                            
              CMP       AL,79H
              CALL      trade
              JZ        input
              CMP       AL,6Eh
              JZ        exit
exit:         CALL      trade
              LEA       DX,string8
              CALL      show
               MOV       AH,01h
              INT       21h 
              MOV       AH,4ch
              INT       21h

              RET
              main ENDP    
              ;输入显示
              show PROC      NEAR
              MOV       AH,09h
              INT       21h
              RET
              show ENDP
              ;换行
              trade PROC      NEAR
              MOV       AH,09h
              MOV       DX,OFFSET CR
              INT       21H 
              RET
              trade ENDP 
              ;判断输入年份的正确与否
              judgeNumber  PROC      NEAR
              LEA       DI,year  
              MOV       BX,0
l1:           MOV       AH,01h
              INT       21h  
              CMP       AL,0dh
              JZ        right
              CMP       AL,30h
              JB        wrong
              CMP       AL,39h
              JA       wrong
              SUB       AL,30h
              MOV       [DI],AL
              CALL      output
              INC       DI
              JMP       l1    
wrong:        CALL      trade              
              LEA       DX,string2
              CALL      show
              
              CALL      trade
              CALL      trade
               
              MOV       DX,OFFSET string1
              CALL      show
              LEA       DI,year  
              JMP       l1    
              
right:        CALL      trade
              MOV       var,BX                                                                           
              RET
              judgeNumber ENDP
              
              ; 将输入的数转换为真正的数值
              output PROC      NEAR
              CBW
              XCHG      AX,BX
              MOV       CL,10
              MUL       CL
              XCHG      AX,BX
              ADD       BX,AX
              RET                         
              output ENDP
              ;判断闰年
              leapJudge PROC      NEAR
              MOV       AX,var
              SUB       AH,AH
              SUB       DX,DX
              MOV       CL,0
              MOV       CL,4
              MOV       BX,400
              DIV       CL
              CMP       AH,0
              JNZ        no
              MOV       AX,var
              MOV       CL,100
              DIV       CL
              CMP       AH,0
              JNZ       leap             
              MOV       AX,var
              CWD       
              DIV       BX
              CMP       DX,0
              JZ        leap
              JMP       no


no:           LEA       DX,string5
              CALL      show
              CALL      trade
              JMP       over
leap:         LEA       DX,string4
              CALL      show
              CALL      trade
over:                      
               RET
              leapJudge ENDP
              code ENDS
              END       begin
              
              
              
              
              
              
              
              
              
              
              

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -