Programación General > ASM (Ensamblador)
Interceptar Interrupciones
Eternal Idol:
No se, tendria que ponerme a mirarlo con mas detenimiento, si queres "filtrar" lo que hagan otros programas tenes que interceptar la 14h y no la 0Ch.
BAJA:
Hola, saludos!
Aqui estoy, ya un poco mas "fogueado", en el tema de interrupiones, no quise abrir una nueva discusion, ya que me parece que sigue dentro de este tema, y espero para cuando logre sacar esto exponer lo que hice.
Entonces el problema que me aparecio es el siguiente:
Tengo este codigo:
PILA SEGMENT PARA STACK 'stack'
BUFFERKL DW 10 DUP(0)
PILA ENDS
DATOS SEGMENT PARA 'data'
TEXT DB 'ENTRA CUALQUIER COSA', 0AH, 0DH, '$'
SALTO DB 0AH, 0DH, '$' ;Representa los saltos de linea en el dialogo
;en el chat
BUFFER_TECLADO DB 71 DUP('0')
BUFFER_ARCHIVO DB 100 DUP('0')
ES_INT9 DW ? ; variables para las pruebas de intercepcion de de interrupciones
OFF_INT9 DW ?
COMPA DW ?
DATOS ENDS
CODIGO SEGMENT PARA 'code'
BEGIN PROC FAR
ASSUME SS:PILA, DS:DATOS, CS:CODIGO
MOV AX, DATOS
MOV DS, AX
MOV AX, PILA
MOV SS, AX
MOV DX, 3F8H
ADD DX,3
MOV AL,128
OUT DX,AL
MOV DX,3F8H
MOV AL,48
OUT DX,AL
MOV DX, 3F8H
ADD DX, 1
MOV AL, 0
OUT DX, AL
MOV DX, 3F8H
ADD DX, 3
MOV AL, 0
OUT DX, AL
MOV AL, 3
OUT DX, AL
;????????????????????????????????????????
;--->> JUSTO AQUI ES DONDE ME SUCEDE EL PROBLEMA <<---
MOV DX, 03F8H
ADD DX, 5H
IN AL, DX
BEGIN ENDP
CODIGO ENDS
END BEGIN
Presento todo el codigo, para que que se visualice mejor la dua que tengo, este programita asi como esta, cuando llega a la parte señalada me aparece un error por una insturccion no permitida, lo extraño o mas bien lo que me llama la atecion y no entiendo por que, es que cuando al inicio del codigo le agrego las directivas
.MODEL SMALL
DOSSEG
ya se soluciona el problema y puede leer perfectamente el registro LCR del UART, no entiendo bien que podria solucionar ya que hasta donde tengo entendido los modelos son organizaciones de memoria de algunos segmentos para la programacion.
Pero bueno, espero alguien me puedo responder algo al respecto.
Gracias :)
Eternal Idol:
Asi con solo ver el codigo no te puedo decir nada y ahora no tengo acceso a ninguna maquina util. Depuralo con debug.exe, observa atentamente el estado del proceso en el momento del error (registros, memoria relevante de haberla, etc) y comparalo con el estado del proceso cuando funciona correctamente. Seria bueno que lo probaras en MS-DOS y no en una consola de Windows.
Navegación
[*] Página Anterior
Ir a la versión completa