📄 runnian.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 + -