您的位置:首页 > 其它

案例1判断闰年程序

2016-01-08 19:07 399 查看

这是一个判断某一年是否为闰年的程序,输入具体的年份,可输出是本年是否为闰年的提示信息。

代码块:

data segment    ;定义数据段
infon db 0dh,0ah,'Please input a year: $'
Y db 0dh,0ah,'This is a leap year! $'
N db 0dh,0ah,'This is not a leap year! $'
w dw 0
buf db 8
db ?
db 8 dup(?)
data ends

stack segment stack
db 200 dup(0)
stack ends

code segment
assume ds:data,ss:stack,cs:code
start:mov ax,data
mov ds,ax

lea dx,infon  ;在屏幕上显示提示信息
mov ah,9
int 21h

lea dx,buf    ;从键盘输入年份字符串
mov ah,10
int 21h

mov cl, [buf+1]
lea di,buf+2
call datacate
call ifyears
jc a1

lea dx,n
mov ah,9
int 21h
jmp exit
a1:   lea dx,y
mov ah,9
int 21h
exit: mov ah,4ch
int 21h

datacate proc near;
push cx;
dec cx
lea si,buf+2
tt1: inc si
loop tt1
;lea si,cx[di]
pop cx

mov dh,30h
mov bl,10
mov ax,1
l1: push ax
sub  byte ptr  [si],dh
mul  byte ptr [si]
add w,ax
pop ax
mul bl
dec si
loop l1
ret
datacate endp

ifyears proc near
push  bx
push  cx
push  dx
mov ax,w
mov   cx,ax
mov  dx,0
mov  bx,4
div  bx
cmp  dx,0
jnz  lab1
mov   ax,cx
mov  bx,100
div  bx
cmp dx,0
jnz  lab2
mov  ax,cx
mov bx,400
div  bx
cmp  dx,0
jz  lab2
lab1: clc
jmp lab3
lab2: stc
lab3: pop  dx
pop  cx
pop  bx
ret
ifyears endp
code ends
end start
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: