|
8#
楼主 |
发表于 2008-2-3 18:49:45
|
只看该作者
代码
.model tiny,stdcall
.stack
.code
assume ds:_text
;在标号myint与main之间的就是中断过程
myint:
push ax
push bx
push cx
push dx
inc cs:cycle
cmp cs:cycle,18 ;18.2cycle=1s
jb label_callsysint
mov cs:cycle,0
mov bh,0h
mov al,cs:ascii
mov cx,1
mov ah,0ah
int 10h
inc cs:ascii
cmp cs:ascii,127
jbe label_callsysint
mov cs:ascii,0
label_callsysint:
pop dx
pop cx
pop bx
pop ax
jmp cs:[oldintaddr]
oldintaddr dd ?
cycle dw 0
ascii db 0
main:
;获取INT 1CH中断过程的地址,bx中存放偏移地址,es中存放段地址
push cs
pop ds
mov ax,351ch
int 21h
mov word ptr oldintaddr,bx
mov word ptr oldintaddr+2,es
;将自己的中断过程的地址写入中断向量表
mov ax,251ch
mov dx,offset myint
int 21h
;退出程序,并把中断过程驻留在内存中
mov ax,3100h
mov dx,offset main
mov cl,4
shr dx,cl
inc dx
add dx,10h
int 21h
end main |
|