witam, mam problem z programem typu TSR, jest to program COM, problem polega na tym ze kiedy uruchomie program raz to zgrywa on nowa procedure przerwania 9. KIedy uruchomie go ponowanie psrawdza on czy juz jest w pamieci czy nie i i jesli jest to sie usuwa. PRoblem w tym ze kiedy uruchmonie go tak kolo 6 - 10 razy to w pamieci zostaja jakies jego smieci i nie wiem dlaczego prosze o pomoc oto kod:
.model tiny
prog segment
assume cs:prog, ds:prog, es:prog
org 100h
start:
jmp startuj
;-------------CZESC TSR PROGRAMU------------------
ety db 'jest_ok'
nowa08 proc far
pushf
push ax
in al,60h ;pobranie klawisza
cmp al,30 ;porownanie czy to nasz klawisz
jne koncz_juz
mov ah,02h
int 16h ; pobieramy do al bajt ze stanem klawisz (SHIFT,ALT,CTRL)
and al,04h ;nakldamy maske na CTRL
cmp al,04h
jne koncz_juz
push dx
push bx
push ds
push es
push bp
mov ah,03h
mov bh,0 ; storna video w techu pisze ze pzrewaznie 0
int 10h ; pobieramy pozycje kursora kolumne i wiesz do dl i dh
mov row,dh
mov col,dl
;----------------13h INT10h wypisuje ciag znakow
mov ax,1301h ;wyswietl kursor i aktualizuj kursor
push cs
pop es
lea bp,zmienna ;napis do wypisania
mov cx,59 ;ile znakow wypisac
mov dl,col-2 ;kolumna gdzie zaczac pisac
mov dh,row ; rzad j/w
mov bl,74h ;kolor napisu i tla
int 10h
;jmp $+2 ; opoznienie sekunda
pop bp
pop es
pop ds
pop bx
pop dx
koncz_juz:
pop ax
call dword ptr cs:[temp08]
iret
endp
zmienna db 'Program rezydentny jest zaladowany Mozna pracowac dalej: '
row db 0
col db 0
stara08 dd 0
temp08 dd 0
;--------------WLASCIWY START PROGRAMU-------------
startuj:
mov ax,3509h
int 21h
mov word ptr cs:[stara08],bx
mov word ptr cs:[stara08+2],es
lea si,ety
mov di,si
mov cx,7
repe cmpsb ; powrownuje ds:si z es:di, repe powtarza tyle razey ile w cx
je usun_sie
mov ax,3509h
int 21h
mov word ptr cs:[temp08],bx
mov word ptr cs:[temp08+2],es
mov ax,2509h
lea dx,nowa08
cli
int 21h
sti
push cs
pop ds
lea dx,startuj
int 27h
;---------------PRZERWANIE 09h ROWNA SIE STARA09-------
;---------------USUWAMY PROGRAM Z PAMIECI-------------
usun_sie:
mov ds,word ptr es:[temp08+2]
mov dx,word ptr es:[temp08]
mov ax,2509h
cli
int 21h
sti
mov ah,49h
int 21h
mov ax,4c00h
int 21h
prog ends
end start
z gory dziek iza pomoc!
nikt nie potrafi mi pomoc ???