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

📄 lxt.asm

📁 接收用户键入的年、月、日
💻 ASM
字号:
 DATA SEGMENT
     YEAR DW ?
     MONTH DB ?
     DAY DB ?
     YEAR1 DW ?
     MONTH1 DB ?
     DAY1 DB ?
     ME DB 'ERROR!$'
     BREAK DB 0DH,0AH,'$'
     M1  DB  'TODAY IS MONDAY ',0AH,0DH,'$'
     M2  DB  'TODAY IS TUESDAY ',0AH,0DH,'$'
     M3  DB  'TODAY IS WEDNESDAY ',0AH,0DH,'$'
     M4  DB  'TODAY IS THURSDAY ',0AH,0DH,'$'
     M5  DB  'TODAY IS FRIDAY ',0AH,0DH,'$'
     M6  DB  'TODAY IS SATURDAY ',0AH,0DH,'$'
     M0  DB  'TODAY IS SUNDAY ',0AH,0DH,'$'
     MY  DB  'PLEASE INPUT YEAR:$'
     MM  DB  'PLEASE INPUT MONTH:$'
     MD  DB  'PLEASE INPUT DAY:$'
DATA ENDS
STACK1 SEGMENT PARA 'STACK'
       DB 128 DUP(0)
STACK1 ENDS
CODE SEGMENT                                        
      ASSUME CS:CODE,DS:DATA,SS:STACK1
START:
      MOV AX,DATA
      MOV DS,AX
      
LAB:
      MOV DX,OFFSET MY      ; 输入年数 
      MOV AH,09H
      INT 21H
      CALL INBX            
      MOV DX,OFFSET BREAK
      MOV AH,09H
      INT 21H
      MOV YEAR,BX
      
       
      MOV DX,OFFSET MM       ;输入月数
      MOV AH,09H
      INT 21H 
      CALL INBX              
      MOV DX,OFFSET BREAK
      MOV AH,09H
      INT 21H
      MOV MONTH,BL
      CMP MONTH,12 
      JA  ER
      
      MOV DX,OFFSET MD        ; 输入日数 
      MOV AH,09H
      INT 21H 
      CALL INBX             
      MOV DAY,BL
      CMP MONTH,1
      JZ L1
      CMP MONTH,3
      JZ L1
      CMP MONTH,5
      JZ L1
      CMP MONTH,7
      JZ L1
      CMP MONTH,8
      JZ L1
      CMP MONTH,10
      JZ L1
      CMP MONTH,12
      JZ L1
      
      CMP MONTH,4
      JZ L2
      CMP MONTH,6
      JZ L2
      CMP MONTH,9
      JZ L2
      CMP MONTH,11
      JZ L2
      CMP MONTH,2
      JZ L3
L1:
      CMP DAY,31
      JA  ER
      JMP  NEXT
      
L2:
      CMP DAY,30
      JA  ER
      JMP  NEXT
      
L3:   
      MOV AX,YEAR               ;判断是不是闰年 
      CWD
      MOV CX,400
      DIV CX
      AND DX,0FFH
      CMP DX,0
      JZ  L6
      ;JNZ L5
      MOV AX,YEAR
      CWD
      MOV CX,4
      DIV CX
      AND DX,0FFH
      CMP DX,0
      JNZ L5
L4:
      MOV AX,YEAR
      CWD
      MOV CX,100
      DIV CX
      AND DX,0FFH
      CMP DX,0
      JNZ L6
      
L5:
      CMP DAY,28
      JA ER
      JMP  NEXT
L6:
     CMP DAY,29
     JA  ER
     JMP  NEXT
ER:  MOV DX,OFFSET ME
      MOV AH,09H
      INT 21H
      JMP LAB

NEXT:
      MOV DX,OFFSET BREAK
      MOV AH,09H
      INT 21H
      
      
      MOV AH,2AH             ;保存系统的当前日期 
      INT 21H
      MOV YEAR1,CX
      MOV MONTH1,DH
      MOV DAY1,DL
      
       
      MOV CX,YEAR           ;修改系统日期 
      MOV DH,MONTH
      MOV DL,DAY
      MOV AH,2BH
      INT 21H
      
     
      
     MOV AH,2AH
     INT 21H
     AND AL,0FH
     CMP AL,1
     JZ L11
     CMP AL,2
     JZ L21
     CMP AL,3
     JZ L31
     CMP AL,4
     JZ L41
     CMP AL,5
     JZ L51
     CMP AL,6
     JZ L61
     CMP AL,0
     JZ L01
L11:
     MOV DX,OFFSET M1         ;显示星期信息 
     JMP EXIT2
L21:
     MOV DX,OFFSET M2
     JMP EXIT2
L31:
     MOV DX,OFFSET M3
     JMP EXIT2                                                                                      
L41:
     MOV DX,OFFSET M4
     JMP EXIT2
L51:
     MOV DX,OFFSET M5
     JMP EXIT2
L61:
     MOV DX,OFFSET M6
     JMP EXIT2
L01:
     MOV DX,OFFSET M0
EXIT2:
     MOV AH,09H
     INT 21H    
     MOV AH,2BH              ;系统时间还原 
     MOV CX,YEAR1
     MOV DH,MONTH1
     MOV DL,DAY1
     MOV AH,2BH
  INT 21H
              
     MOV AH,4CH
     INT 21h

; 子程序名:INBX 
;  功能:从键盘输入数字 
;  入口参数:从键盘输入的数字 
;  出口参数:键盘输入的日期记录在BX中 

INBX proc NEAR               
	PUSH AX
	PUSH CX
	PUSH DX
	
	XOR BX,BX
	mov DH, 0AH
	CLD
NEXT1:
	MOV AX,0800H
	INT 21H

	CMP AL,30H
	JB EXIT
	CMP AL,39H
	JA EXIT
	
	mov DL,AL
	MOV AX,0200H
	INT 21H
	
	mov AX,BX
	MUL DH
	MOV BX,AX
	SUB DL,30H
	ADD BL,DL
	ADC BH,00H
	
	JMP NEXT1

EXIT:
	POP DX
	POP CX
	POP AX

	RET
INBX endp
CODE ENDS
     END START

⌨️ 快捷键说明

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