📄 ifleap.asm
字号:
Data segment ;定义数据段
Info DB 0dh,0ah,'Please input a year: $'
Year 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,Info ;在屏幕上显示提示信息
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
push cx
mov cx,word ptr N
call echo
pop cx
jmp exit
a1: push cx
mov cx,Year
call ECHO
pop cx
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
ECHO PROC NEAR
PUSH DX
LEA dx,cx
mov ah,9
int 21h
POP DX
RET
ECHO 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
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -