Hola, el código que pusiste está mal, como bien dice Tongas. Supongo que lo que intenta hacer es poner una rutina propia que se dispare como una interrupción. Si esto es así, el código corregido sería:
mov ax, seg rutina ; escribe en AX el segmento donde se
; encuentra el programa llamado "rutina"
mov dS, ax ; pone ese valor en DS (un registro de
; segmento y no en DX)
mov dx, offset rutina ; pone en DX el offset de la misma rutina
; con estas instrucciones tener DS:DX
; apuntando a "rutina"
mov al, 05h ; coloca en AL el 05h
mov aH 25h ; coloca un 25h en AH (y no en AL)
int 21h ; Llama a la INT 21h, esto es, ejecuta la
; función 25h (lo que está en AH) del SO.
En particular la función 25h cambia la entrada del vector de ierrupciones (en este caso la entrada 05h). Cada vez que se ejecute una interrupción del tipo 5, se va a ejecutar "rutina"
Saludos