Programación General > ASM (Ensamblador)

 Interceptar Interrupciones

<< < (2/2)

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

[0] Índice de Mensajes

[*] Página Anterior

Ir a la versión completa