assume cs:code
stack segment
db 128 dup (0)
stack ends
code segment
start:
mov ax,stack
mov ss,ax
mov sp,128
push cs
pop ds
mov si,offset nint9
mov ax,0
mov es,ax
mov di,204h
push es:[9*4]
pop es:[200h]
push es:[9*4+2]
pop es:[202h]
cli
mov es:[9*4],di
mov es:[9*4+2],ax
sti
mov cx,offset nint9end-offset nint9
cld
rep movsb
mov ax,4c00h
int 21h
nint9:
push ax
push es
push di
push cx
mov ax,0b800h
mov es,ax
in al,60h
pushf
call dword ptr cs:[200h]
mov di,0
cmp al,1eh
je nint9ovr
fulla:
cmp al,9eh
jne nint9ovr
mov cx,2000
l:
mov byte ptr es:[di],'a'
add di,2
loop l
nint9ovr:
pop cx
pop di
pop es
pop ax
iret
nint9end:
nop
code ends
end start |