📄 year.asm
字号:
data segment
msg1 db 'Plase input a year:','$'
msg2 db 'YES','$'
msg3 db 'NO','$'
msg4 db 'Out of Bound!','$'
error db 'Enter error!','$'
year dw ?
crlf db 13,10,'$'
count db 0
data ends
code segment
main proc far
assume cs:code,ds:data
start:
push ds
sub ax,ax
push ax
mov ax,data
mov ds,ax
mov ah,09
lea dx,msg1
int 21h
call dec2bin
mov year,bx
mov ah,09
lea dx,crlf
int 21h
cmp count,4
jz next
mov ah,09
lea dx,error
int 21h
next:
mov ax,year
cmp ax,1900
jc out1
cmp ax,2100
ja out1
jmp next3
out1:
mov ah,9
lea dx,msg4
int 21h
jmp end1
next3:
mov bx,400
cwd
div bx
cmp dx,0
jz yes
mov bx,4
mov ax,year
cwd
div bx
cmp dx,0
jnz no
mov ax,year
cwd
mov bl,100
div bl
cmp ah,0
jnz yes
no: lea dx,msg3
mov ah,09
int 21h
jmp next2
yes:
lea dx,msg2
mov ah,09
int 21h
next2:
end1:
ret
main endp
dec2bin proc near
mov bx,0
newchar:
mov ah,1
int 21h
sub al,30h
jl exit
cmp al,9d
jg exit
cbw
xchg ax,bx
mov cx,10d
mul cx
xchg ax,bx
add bx,ax
inc count
jmp newchar
exit:
ret
dec2bin endp
code ends
end start
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -