¿Por qué no puedo leer (in) en el puerto paralelo?

Felipe
10 de Abril del 2005
Necesito leer datos desde el puerto paralelo de los pines de estado, para escribir lo puedo hacer desde el 378h pero para leer que debe ser desde el 379h no lo he logrado.

He bajado otros programas de Internet hechos (al parecer) en Visual Basic y C++ y pueden leer los datos (no tengo el código fuente de estos).

Uso disco de inicio de Win98 para ejecutar por que tengo Xp
¿En qué estoy fallando? ¿Qué voltaje debe entrar?
¿Es obligatorio poner un buffer para que lea bien?

Esta es una parte del código que compila bien. (tasm; tlink)

.model small
.stack 64
.data
MEMI db ?
MEMD db ?
OPC db 13,10,'PROGRAMA PARA MOVER CARRO ',13,10,'$'
.code
...

;LECTURA al= SI SD 0000

COMPARAR:

RECIBIR:
mov dx,0379h ;ENTRADA DESDE PROTOBOARD AL PUERTO PARALELO
in al,dx

COMPARE0:
cmp al,000000b
jne COMPARESD
cmp MEMD,1
jne COMPARESD
mov al,011b
out dx,al
jmp COMPARAR

COMPARESD:
cmp al,010000b
jne COMPARESDT
cmp MEMD,1
jne COMPARESDT
mov al,001b
out dx,al
call TEMPO
mov MEMD,0
mov MEMI,1
mov al,101b
out dx,al
jmp COMPARAR...

FUERA:
mov ax,4c00h
int 21h

PUERTOFEL endp
end PUERTOFEL