PDA

View Full Version : برنامه tsr



everyone
شنبه 01 دی 1386, 11:53 صبح
با سلام
من یه برنامه Tsr نوشتم که می خوام در محیط Dos با هر بار فشار دکمه Alt یه پیغام چاپ کنه. مشکل اینجاست که در قسمتی از برنامه که مقیم هست نمی شه از وقفه های Dos مثل int 21h استفاده کرد. می شه راهنمایی بفرمائید که چطور می تونم یه پیغام در برنامه مقیم شده چاپ کنم؟؟؟

متن برنامه:


codesg segment 'code'
assume cs:codesg, ds:codesg
org 100h


main: jmp load1


oldint9 dd ?


Hmsg db 13,10," Salam",'$'


newisr proc near
push ax
mov ah,02
int 16h
test al,00001000b
jz exit
mov ah,09
lea dx,Hmsg
int 21h



exit: pop ax
jmp cs:oldint9
newisr endp
;_________________________________
load1 proc near
mov ah,35h
mov al,09h


int 21h
mov word ptr oldint9,bx
mov word ptr oldint9+2,es


mov ah,25h
mov al,09h
mov dx,offset newisr
int 21h
mov dx,(offset load1- offset codesg)
add dx,15
mov cl,4
shr dx,cl
mov ah,31h
int 21h
load1 endp
codesg ends
end main



با تشکر

Delphi Coder
جمعه 14 دی 1386, 15:02 عصر
اول اینکه توی وقفه ای که Hook کردید نباید Register ها دستکاری بشه پس یه PUSHA و POPA اول و آخر کار بذارید. برای نوشتن هم میتونید از وقفه 10 تابع 13 استفاده کنید.