📄 nianyueri.asm
字号:
CRLF MACRO ;宏定义
MOV AH , 02H
MOV DL , 0DH
INT 21H
MOV AH , 02H
MOV DL , 0AH
INT 21H
ENDM
DATA SEGMENT
MESS DB 'WHAT IS THE DATE ( MM / DD /YY)?' , 0DH , 0AH , '$'
ERROR DB 'INPUT ERROR !', 0DH , 0AH , '$'
DATA ENDS
STACK SEGMENT
STA DW 32 DUP (?)
TOP DW ?
STACK ENDS
CODE SEGMENT
ASSUME CS: CODE, DS:DATA, ES:DATA, SS:STACK
START: MOV AX, DATA
MOV DS, AX
MOV ES, AX
MOV SP,TOP ;初始化
MOV AH, 09H
MOV DX, OFFSET MESS
INT 21H ; 显示提示信息
MOV AH, 02H
MOV DL, 07H
INT 21H ;响铃一次
CALL GETNUM
PUSH DX
CALL GETNUM
PUSH DX
CALL GETNUM ;接收键入的月、日及年值
MOV AX , DX
CALL DISP ;显示年值
MOV AH, 02H
MOV DL , '-'
INT 21H ;显示'-'
POP DX
POP AX
CALL DISPP ;显示月值
MOV AH , 02H
MOV DL , '-'
INT 21H ;显示'-'
MOV AX , DX
CALL DISPP ;显示日值
MOV AX, 4C00H
INT 21H ;返回DOS
DISPP PROC NEAR
MOV BL, AL
MOV DL, Bl
MOV CL, 04
ROL DL, CL
AND DL, 0FH
CALL DISPL
MOV DL, BL
AND DL, 0FH
CALL DISPL
RET
DISPP ENDP
DISPL PROC NEAR
ADD DL, 30H
CMP DL, 3AH
JB DDD
ADD DL, 27H
DDD: MOV AH, 02H
INT 21H
RET
DISPL ENDP
DISP PROC NEAR
PUSH BX
PUSH CX
PUSH DX
PUSH AX
MOV AL , AH
CALL DISPP
POP AX
CALL DISPP
POP DX
POP CX
POP BX
RET
DISP ENDP
GETNUM PROC NEAR
PUSH CX
XOR DX, DX
GGG: MOV AH, 01H
INT 21H
CMP AL, 0DH
JZ PPP
CMP AL, 20H
JZ PPP
SUB AL, 30H
JB KKK
CMP 0AH
JB GETS
CMP AL, 11H
JB KKK
SUB AL, 07H
CMP AL, 0FH
JBE GETS
JB KKK
CMP AL, 2FH
JA KKK
SUB AL, 20H
GETS: MOV CL, 04
SHL DX, CL
XOR AH, AH
ADD DX, AX
JMP GGG
KKK: MOV AH, 09H
MOV DX, OFFSET ERROR
INT 21H
PPP: PUSH DX
CRLF ;宏调用
POP DX
POP CX
RET
GETNUM ENDP
CODE ENDS
END START
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -