⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 year.asm

📁 汇编语言写的程序
💻 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 + -