.386p .MODEL TPASCAL .DATA oldint3 dd ? alter_interrupt3 dd ? .CODE public protected_stopping protected_stopping proc pascal pusha cli ; Interrupts ausschalten mov eax,cr0 ; In den Protected-Mode schalten or eax,1 mov cr0,eax jmp PROTECTION_ENABLED ; Executionpipe l”schen PROTECTION_ENABLED: and al,0FEh ; Wieder in den Real-Mode schalten mov cr0,eax ; CPU nicht resetten jmp PROTECTION_DISABLED ; Executionpipe l”schen PROTECTION_DISABLED: sti ; Interrupts wieder einschalten popa ret protected_stopping endp public Check_auf_vector Check_auf_vector proc pascal check : dword; mov bx,0 mov es,bx mov bx,18 mov eax,es:[bx] mov oldint3,eax mov eax,check mov es:[bx],eax ret Check_auf_vector endp public Vector_ok Vector_ok proc pascal check : dword; mov bx,0 mov es,bx mov bx,18 mov eax,es:[bx] cmp eax,check je @check_ok mov al,0 jmp @check_ende @check_ok: mov al,1 @check_ende: ret Vector_ok endp public restore_Checkvector restore_Checkvector proc pascal mov bx,0 mov es,bx mov bx,18 mov eax,oldint3 mov es:[bx],eax ret restore_Checkvector endp public Copy_int21_int3 Copy_int21_int3 proc pascal mov bx,0 mov es,bx mov bx,18 mov eax,es:[bx] mov alter_interrupt3,eax ; alten int3 sichern mov bx,84 ; Int 21 laden mov eax,es:[bx] mov bx,18 ; in int3 speichern mov es:[bx],eax ret Copy_int21_int3 endp END