SoloCodigo
Programación General => ASM (Ensamblador) => Mensaje iniciado por: Tomy en Jueves 26 de Febrero de 2004, 21:13
-
Hola:
Necesito un programa o instrucciones para recibir y enviar informacion a la PC, todo esto porque necesito saber como accionar un programa por medio de un dispositivo que sera conectado al puerto paralelo.
Atte.
Tomm :hola:
-
:) el puerto paralelo esta dividido en 3 direcciones
0378 salida de 8 bits de datos
0379 entrada de 5 bits
037a entrada o salida de 4 bits
En el registro DX se coloca la direccion del puerto y en el registro AL el dato que se quiere enviar (si estamos recibiendo en AL se guarda el dato recibido)"ESTO ES ASI SIEMPRE SIN EXCEPCION", asi si tu tienes los datos que quieres enviar de la direccion 0500 a la 0600
tienes que hacer lo siguiente
mov bx,0500 ;cargas en bx la direccion inicial
ot: mov al,[bx] ;guardas en AL lo que tiene adentro de la 0500 (dato a enviar)
mov dx,0378 ;pones la direccion del puerto (salida)
out dx,al ;sacas el dato por el puerto de salida
mov cx,00fff ;esto es un retraso que colocamos para darle tiempo
at loop at ; al receptor de recibir el dato
inc bx ;incrementamos bx para pasarnos a la siguiente direccion
cmp bx,0600 ;verificamos si ya enviamos todos los caracteres que estaban
; en la 0500 a la 0600
jnz ot ; si no es asi nos vamos a ot (seguimos enviando)
int 20 ;fin del programa
ahora si quieres recibir tienes que hacer lo siguiente
mov dx,0379; direccion del puerto que funciona como entrada
in al,dx ; guardas en AL el dato recibido
pero esto es si los datos que vas a recibir son solo de 4 bits, si son de ocho tienes que hacer otro paso mas
mov dx,037a
in al,dx ;con esto capturas los otros cuatro bits
-
:comp: Hi Karen....
Que buena respuesta, pero tengo una duda sobre la dirección,¿funciona en todos la equipos de pc?. Que tal esta.
mov ax, 0040h {Colocar 0040h en el reg. Ax}
mov es, ax {Direccionar el segmento es con el valor de ax}
mov ax, es:[si] {Colocar en ax el contenido de la dirección de memoria [0040:0008]}
mov base, ax; {Actualizar la variable base con el valor de ax}
:kicking: Recuerda que base debe estar en el SEGMENT Data
mov dx, base {Direccionar en dx la dirección base}
mov al, 5 {Colocar en ² al ² el número 5}
out dx, al {Enviar al puerto}
mov dx, dir_estado {Direccionar dx con el registro de estado del puerto o base+2 para transmitir nibles( 4 bytes )}
in al, dx {Leer del puerto. En el registro ² al ² está el dato leído}
:devil: Me encanta ¡Espero que les sirva de mucho!
-
:( la verdad no estoy segura si la direccion es la misma en todas las Pc pero creo que no, en las computadoras que yo usaba en mi lugar de estudio nos dijeron que esas eran las direcciones. voy a averiguar bien y te aviso :hola: