Domingo 22 de Diciembre de 2024, 13:48
SoloCodigo
Bienvenido(a),
Visitante
. Por favor,
ingresa
o
regístrate
.
¿Perdiste tu
email de activación?
Inicio
Foros
Chat
Ayuda
Buscar
Ingresar
Registrarse
SoloCodigo
»
Foros
»
Programación General
»
ASM (Ensamblador)
(Moderador:
Eternal Idol
) »
Programa Residente?
« anterior
próximo »
Imprimir
Páginas: [
1
]
Autor
Tema: Programa Residente? (Leído 2197 veces)
maikmr
Miembro MUY activo
Mensajes: 112
Programa Residente?
«
en:
Martes 19 de Abril de 2005, 23:45 »
0
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.
Tweet
Super_G
Miembro MUY activo
Mensajes: 375
Re: Programa Residente?
«
Respuesta #1 en:
Miércoles 20 de Abril de 2005, 02:43 »
0
un ejemplo muy conocido:
Código: Text
pantalla equ 0b800h
.model tiny
.code
include bdos.mac
org 100h
inicio:
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
;;*****************
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
;;*******
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
;;******
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
;;*********************************
mov ax,pantalla
mov es,ax
mov di,2*(80-length hora)
mov cx,length hora
mov si,0
mover:
mov al,hora[si]
mov es:[di],al
inc di
mov byte ptr es:[di],07h
inc si
inc di
loop mover
fin:
pop es
pop ds
pop di
pop si
pop dx
pop cx
pop bx
pop ax
sti
iret
reloj 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
endif
endm
SET_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 21h
endm
TSR_COM macro etq,c
mov dx,( etq-1)/16+1
ifnb <c>
mov al,c
endif
mov ah,31h
int 21h
endm
maikmr
Miembro MUY activo
Mensajes: 112
Re: Programa Residente?
«
Respuesta #2 en:
Jueves 21 de Abril de 2005, 18:02 »
0
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
Miembro MUY activo
Mensajes: 375
Re: Programa Residente?
«
Respuesta #3 en:
Domingo 24 de Abril de 2005, 04:49 »
0
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.
Imprimir
Páginas: [
1
]
« anterior
próximo »
SoloCodigo
»
Foros
»
Programación General
»
ASM (Ensamblador)
(Moderador:
Eternal Idol
) »
Programa Residente?