code segment
assume cs:code,ds:code
org 100h
begin:jmp init
sti
push ax
push es
xor ax,ax
mov es,ax
in al,60h
test al,80h
jnz exit1
test byte ptr es:[0417h],100b
jz exit1
cmp al,67
jz ok
jmp exit1
ok:
push ax
push bx
push cx
push dx
push bp
push di
push si
push ds
push cs
pop ds
in al,61h
push ax
or al,80h
out 61h,al
pop ax
out 61h,al
mov al,20h
out 20h,al
call my
pop ds
pop si
pop di
pop bp
pop dx
pop cx
pop bx
pop ax
exit1:
pop es
pop ax
jmp cs:int9
new_int endp
my proc near
mov al,36h
out 43h,al
mov al,0
out 40h,al
mov al,10h
out 40h,al
ret
my endp
init :
cli
push cs
pop ds
mov dx,offset zd
mov ah,9
int 21h
mov ax,3509h
int 21h
cmp word ptr es:[bx-2],'dz'
jnz install
mov dx,offset mes1
mov ah,9
int 21h
mov ah,4ch
int 21h
install:
mov di,offset int9
mov [di],bx
mov [di+2],es
push cs
pop ds
mov dx,offset new_int
mov ax,2509h
int 21h
sti
mov dx,offset mes
mov ah,9
int 21h
mov dx,offset init
int 27h
code ends
end begin
不知