MyVirgo

            /ASM/C++/JAVA/JSP/SQL/逆向工程/密码学/

  C++博客 :: 首页 :: 联系 :: 聚合  :: 管理
  2 Posts :: 2 Stories :: 14 Comments :: 0 Trackbacks

常用链接

留言簿(1)

我参与的团队

搜索

  •  

最新评论

阅读排行榜

评论排行榜

Dos........不知道是否老掉牙了

 代码如下(MASM v5.0编译通过):
   ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;
2005.7.13-7.24
;;这是一个驻留内存的时钟,本程序显示时钟的时候是直接修改显示缓冲区的
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;COM的程序,只有一个段
code segment
  org 100h;com文件需要在开头预留100h字节的空间
  assume cs:code , ds:code
main:
 jmp start;要跳开数据部分,不能执行
 welcome db 
'+---------------------------------------------------+' ,0ah ,0dh
  db 
'+     This is a clock                               +' ,0ah ,0dh
  db 
'+                             ---write by Future Yao+' ,0ah ,0dh
  db 
'+---------------------------------------------------+' ,0ah ,0dh ,'$'
 old_int dd 
?
TSR proc far
 ;保护现场
 push ax
 push bx
 push cx
 push dx
 push si
 push di
 push bp
 push sp
 push es
 push ds
 sti
 call disp
 cli
 ;返回现场
 pop ds
 pop es
 pop sp
 pop bp
 pop di
 pop si
 pop dx
 pop cx
 pop bx
 pop ax
 
 jmp cs:old_int
TSR endp
disp proc near
 push ax
 push cx
 push dx
 push es
 push bx
 
 ;进行初始化
 mov ax,0b800h
 mov es,ax
 ;获得时间
 mov ah, 02h
 
int 1ah
 mov ax, 0eh
 
 ;显示小时的高位
 mov bh,ch
 shr bh,
1
 shr bh,
1
 shr bh,
1
 shr bh,
1
 add bh,30h
 mov es:0090h,bh
 mov es:0091h,ax
 ;显示小时的低位
 and ch,0fh
 add ch,30h
 mov es:0092h,ch
 mov es:0093h,ax
 
 ;显示分隔符号:
 mov 
byte ptr es:0094h,':'
 mov es:0095h,ax
 
 ;显示分钟的高位
 mov bh,cl
 shr bh,
1
 shr bh,
1
 shr bh,
1
 shr bh,
1
 add bh,30h
 mov es:0096h,bh
 mov es:0097h,ax
 ;显示分钟的低位
 and cl,0fh
 add cl,30h
 mov es:0098h,cl
 mov es:0099h,ax
 
 ;显示分隔符号:
 mov 
byte ptr es:009ah,':'
 mov es:009bh,ax

 ;显示秒的高位
 mov bh,dh
 shr bh,
1
 shr bh,
1
 shr bh,
1
 shr bh,
1
 add bh,30h
 mov es:009ch,bh
 mov es:009dh,ax
 ;显示秒的低位
 and dh,0fh
 add dh,30h
 mov es:009eh,dh
 mov es:009fh,al
 
 pop bx
 pop es
 pop dx
 pop cx
 pop ax
 ret

disp endp
start: 
 mov dx ,offset welcome
 mov ah ,09h
 
int 21h
 
 mov ax ,351Ch
 
int 21h;读取中断向量

 mov word ptr old_int , bx
 mov word ptr old_int[
2] , es
 
 mov dx , offset TSR
 push cs
 pop ds
 
 mov ax , 251Ch
 
int 21h
 
 mov dx , offset start
 
int 27h
 
code ends
  end main
posted on 2005-11-19 10:23 SkyFuture 阅读(707) 评论(0)  编辑 收藏 引用 所属分类: 汇编语言

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理