;判断是否是闰年
;如果某一年能被4整除但不能被100整除,或者该年能被400整除,则该年为闰年。
.MODEL SMALL
.Data
mass1 DB 0dh,0ah,'input 0 to quit',0dh,0ah,'$';输入结束提示
mass2 DB 'thank you!!!',0dh,0ah,'$';程序结束提示
mass DB 'input the year(1~65535):','$';输入年份提示
year DW ?;保存输入的年份
string1 DB ' is a bissextile.(YES)', 0dh,0ah,'$';是闰年的信息
string2 DB ' is not a bisssetilt.(NO)' , 0dh,0ah,'$';不是闰年的信息
.code
MAIN PROC FAR
MOV AX ,@Data
MOV DS ,AX
;--------------------------------
again:
mov dx , offset mass1;提示输入停止
mov ah , 9
int 21h
mov dx , offset mass;输入提示
mov ah , 9
int 21h
;-----------
call input;调用输入子程序
mov year , bx
cmp bx , 0
jz exitMain
mov dx , 0
mov bx , 400
mov ax , year
div bx ;除以bx,余数在dx中
;call TextP
cmp dx , 0;判断能否被400整除,可以的话就是闰年
jz Y
mov dx , 0
mov bx ,100
mov ax , year
div bx;除以100
cmp dx , 0;判断能否被100整除,不能就是闰年
jz N;如果能说明不是闰年
mov dx , 0
mov bx , 4
mov ax , year;将年份放进ax中
div bx
cmp dx , 0;判断能否被4整除,能就是闰年
jz Y
N:
mov ax , year;输出年份
call output
mov dx , offset string2;不是闰年的提示
jmp ans
Y:
mov ax , year;输出年份
call output
mov dx ,offset string1;是闰年的提示
ans:
mov ah , 9
int 21h
jmp again
;-------------------------------
exitMain:
mov dx , offset mass2
mov ah , 9
int 21h
mov ax,4C00H
int 21h
Main endp
;========================================================
;输入子程序----------------------------------------------
;========================================================
input proc near
;-----键盘输入十进制数放在bx中
mov bx , 0
newchar:
mov ah, 1 ;键盘输入
int 21h
sub al, 30h
jl exit ; <0退出
cmp al, 9
jg exit ; >9退出
cbw
xchg ax, bx
mov cx, 10;乘以10
mul cx
xchg ax, bx
add bx, ax
jmp newchar
exit:
ret
input endp
;========================================================
;输出子程序---(输出ax的十进制数)-------------------------------
;========================================================
output proc near
mov bx , 10;每次除以10,将10放进bx中
mov cx , 0;计数,相当于有几位数
next:
mov dx , 0
div bx
add dl , '0'
push dx;余数在dx中,将其放进栈中
inc cx;计数加一,相当于有多少位数
cmp ax , 0;与0比较如果还不为0就继续执行操作
jnz next
mov ah , 2
lo1:
pop dx;//输出
int 21h
loop lo1
mov dl ,' '
mov ah , 2
int 21h
ret
output endp
end
文章标题 汇编 判断闰年
最新推荐文章于 2021-12-14 10:31:55 发布