利用BIOS中断或DOS中断实现一个电子表的程序,要求精确到秒

;***************************************************************
;利用BIOS中断或DOS中断实现一个电子表的程序,要求精确到秒
;author:野渡无人
;create date:2007-12-31
;***************************************************************
save_reg macro
      push  ax
      push  bx
      push  cx
      push  dx
      push  si
      push  di
endm     
;***************************************************************
ret_reg macro
      pop   di
      pop   si
      pop   dx
      pop   cx
      pop   bx
      pop   ax
      ret
endm
;***************************************************************
print macro x
      mov  ah,02
      mov  dl,x
      int  21h
endm
;***************************************************************
;***************************************************************
data segment
     colon db ':'
     crlf  db 13,10,'$'
data ends
;***************************************************************
prog segment
      assume cs:prog,ds:data
;---------------------------------------------------------------
main proc far
start:
     push ds
     sub  ax,ax
     push ax
     mov  ax,data
     mov  ds,ax
rotate:
     mov  ah,2ch
     int  21h
     push dx
     mov  bl,ch
     call print_time
     print colon
     mov  bl,cl
     call print_time
     print colon
     pop  dx
     mov  bl,dh
     call print_time
     mov  ah,09
     lea  dx,crlf
     int  21h
     mov  bx,20
wait1:
      mov  cx,33144
      call waitf
      dec  bx
      jnz  wait1
      call clear_screen
      jmp  rotate
   
     ret

main endp
;---------------------------------------------------------------
print_time proc near
      save_reg
      mov  al,bl
      mov  ah,0
      mov  cx,10
      div  cl
      mov  bx,ax
      add  bl,30h
      add  bh,30h
      print bl
      print bh
      ret_reg
print_time endp
;---------------------------------------------------------------
clear_screen proc near
      save_reg
      mov  ah,6
      mov  al,0
      mov  bh,7
      mov  ch,0
      mov  cl,0
      mov  dh,24
      mov  dl,79
      int  10h
      mov  dx,0
      mov  ah,2
      int  10h
      ret_reg
clear_screen endp
;--------------------------------------------------------------------------
waitf proc near
      push ax
waitf1:
      in   al,61h
      and  al,10h
      cmp  al,ah
      je   waitf1
      mov  ah,al
      loop waitf1
      pop  ax
      ret
waitf endp
;---------------------------------------------------------------
prog ends
;***************************************************************
    end start 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值