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

📄 clock.asm

📁 用汇编编写的时钟程序
💻 ASM
字号:
.MODEL   SMALL   
.DATA 
 keep_ip    dw   2 dup(?)
 count    dw     0
 hour     dw     0
 min      dw     0
 sec      dw     0
 row      db     0 
 clom     db     0  ;光标的行和列
.CODE
main proc far
start:
 push ds
 sub ax,ax
 push ax
 mov ax,@data
 mov ds,ax
;保存原来的中断1CH
 mov al,1ch
 mov ah,35h
 int 21h
 mov  keep_ip  ,bx     
 mov  keep_ip+2,es
 push ds
 mov   count,18
;设置新的中断1CH
 mov   dx,offset clock
 mov   ax,seg clock
 mov   ds,ax
 mov   al,1ch
 mov   ah,25h
 int   21h
;程序驻留用DOS中的31H号中断
 mov   ah,31h
 mov   al,0
 int   21h
;恢复中断1CH
 push ds
 mov  ax,keep_ip+2
 mov  ds,ax
 mov  dx,keep_ip
 mov al,1ch
 mov ah,25h
 int 21h
main   endp
;时钟中断程序
clock proc   near
  mov ax,@data
  mov ds,ax
  push  ax
  push  bx
  push  cx
  push  dx
  push  ds
  push  es
  mov   ah,2ch
  int   21h
  mov   bh,0
  mov   bl,ch
  mov   hour,bx
  mov   bh,0
  mov   bl,cl
  mov   min,bx
  mov   bh,0
  mov   bl,dh
  mov   sec,bx
  dec   count
  jnz   exit
;保存光标 用INT 10H中的3号中断
  mov   bh,0
  mov   ah,3
  int   10h
  mov   row,dh
  mov   clom,dl
;设置光标 用INT 10H中的2号中断
  mov   bh,0
  mov   dh,0
  mov   dl,46h
  mov   ah,2
  int   10h
;计数和进位处理      
  inc   sec
  cmp   sec,60
  jnz   noclear
  mov   sec,0
  inc   min
  cmp   min,60
  jnz   noclear
  mov   min,0
  inc   hour
  cmp   hour,24
  jnz   noclear
  mov   hour,0
noclear:
  call  show
  mov   count,18
;恢复光标 用INT 10H中的2号中断
  mov    ah,02
  mov    bh,0
  mov    dh,row
  mov    dl,clom
  int    10h
exit:
  pop es
  pop ds
  pop dx
  pop cx
  pop bx
  pop ax      
iret
clock    endp
show proc near
  mov ax,hour
  call bindec
  mov bx,0
  mov al,':'
  mov ah,0eh
  int 10h
  mov ax,min
  call bindec
  mov bx,0
  mov al,':'
  mov ah,0eh
  int 10h
  mov ax,sec
  call bindec
  ret
show endp
;将2为位数的整数转换为字符显示
bindec proc near
  mov cx,10d
  call decdiv
  mov cx,1
  call decdiv
  ret
bindec endp
decdiv proc near
  mov dx,0
  div cx
;显示单个字符用INT 10H中的0E号中断
  mov bx,0
  add al,30h
  mov ah,0eh
  int 10h
  mov ax,dx
  ret
decdiv endp
end    start 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -