Programación General > ASM (Ensamblador)

 Programa Residente?

(1/1)

maikmr:
Hola compañeros del foro, necesito crear un programa residente en memoria, y tengo duda de cual funcion de la interrupcion 21h usar y ademas de como usar la porque me parece que es la 31h, pero no estoy seguro. ademas, quiero saber la menero correcta de operar un residente porque hasta donde e podido ver hay que guardar en la pila el PSP el AX, el CX y el DS, pero no se tengo alguas dudas, asi que si tambien no fura mucha melestisa pedirles un ejemplo, se los agradeceré.

Ah y otra cosa el programa residente que quiero crear necesito que entre en ejecucion mediante la combinacion de una seria de teclas como ctrl + j ó alt + r o algo asi, y para ello encontre que se debe parchera el vector de interrupciones y direccionar en el campo del de la int. del teclado el segmento y desplazamiento del segmento de codifgo de me programa que verifica la convinacion de teclas deseadas (ctrl + j) por ejemplo, pero no se como hacerlo, no se que interrupcion usar y que funcion, no tengo ni idea de como hacerlo.
Haci que les agradeseré la ayuda.

Super_G:
un ejemplo muy conocido:


--- Código: Text --- pantalla equ 0b800h.model tiny.codeinclude bdos.macorg 100hinicio:        jmp instalar        se_g dw 0        des dw 0        hora db 8 dup('?')reloj proc       cli       push ax       push bx       push cx       push dx       push si       push di       push ds       push es      &#59;;*****************       mov ax,40h       mov es,ax       mov si,6ch       mov ax,es:[si]       mov dx,es:[si+2]       mov bx,32761       div bx       shr ax,1      &#59;;*******       jnc p0       add dx,bx p0:   mov ch,al       mov ax,dx       mov dx,0       mov bx,1092       div bx       mov cl,al       mov ax,dx       mov dx,0       mov bx,18       div bx       mov dh,al      &#59;;******       mov bh,10       mov ah,0       mov al,ch       div bh       add ax,3030h       mov word ptr hora,ax       mov hora+2,':'       mov  ah,0       mov al,cl       div bh       add ax,3030h       mov word ptr hora+3,ax       mov hora+5,':'       mov ah,0       mov al,dh       div bh       add ax,3030h       mov word ptr hora+6,ax       mov hora+8,':'       mov ah,0       mov al,dl       div bh       add ax,3030h       mov word ptr hora+9,ax      &#59;;*********************************       mov ax,pantalla       mov es,ax       mov di,2*(80-length hora)       mov cx,length hora       mov si,0mover:       mov al,hora[si]       mov es:[di],al       inc di       mov byte ptr es:[di],07h       inc si       inc di       loop moverfin:       pop es       pop ds       pop di       pop si       pop dx       pop cx       pop bx       pop ax       sti       iretreloj endp instalar:          GET_INT 1ch,se_g,des          SET_INT 1ch,,reloj          TSR_COM<offset instalar-offset inicio+100h>   ;;fin:  int 20h end inicio      GET_INT macro n,s,o     ifnb <n>        mov al,n     endif     mov ah,35h     int 21h     ifnb <s>        mov s,ES     endif     ifnb <o>        mov o,BX     endifendmSET_INT macro n,s,o     ifnb <n>        mov al,n     endif     ifnb <s>        mov DS,s     endif     ifnb <o>        mov DX,offset o     endif     mov ah,25h     int 21hendm  TSR_COM macro etq,c    mov dx,( etq-1)/16+1    ifnb <c>        mov al,c    endif    mov ah,31h    int 21h           endm    

maikmr:
Gracias por responder, solo que agradeceria si me puede pasar esta inclucion "include bdos.mac" ya que al no tenerla no se pude compilar el codigo, pues quiero ver que es lo que hace, y si talves estubiera comentado podria entenderlo mejor.

Aun si Gracias!
Si alguna otra persona me puede ayudar con algo mas.

Super_G:
para no poner la bios.mac puse las macros que usa el programa al final del mismo; asi que si pone slas macros en el encabezado sustituyendo por el el include... no deberias tener problemas.

Navegación

[0] Índice de Mensajes

Ir a la versión completa