assume cs:code,ds:rrr
rrr segment
db 128 dup (0)
rrr ends
code segment
start:
mov ax,rrr
mov ss,ax
mov sp,128
mov ax,cs
mov ds,ax
mov ax,0
mov es,ax
mov si,offset int9s1
mov di,204h
push es:[9*4]
pop es:[200h]
push es:[9*4+2]
pop es:[202h]
cli
mov word ptr es:[9*4],204h
mov word ptr es:[9*4+2],0
sti
mov cx,offset int9s2 -offset int9s1
cld
rep movsb
mov ax,4c00h
int 21h
int9s1:
push ax
push bx
push es
in al,60h
pushf
call dword ptr cs:[200h]
mov bx,0b800h
mov es,bx
mov byte ptr es:[160*10+10],al
inc byte ptr es:[160*10+11]
pop es
pop bx
pop ax
iret
int9s2:
nop
code ends
end start |