Anda di halaman 1dari 42

INSTITUTO TECNOLGICO DE DELICIAS

INGENIERIA EN SISTEMAS COMPUTACIONALES


LENGUAJES DE INTERFAZ.

Unidad 4
PROGRAMACION DE DISPOSITIVOS.
CATEDRATICO. Lic. Ral Vzquez Tiscareo.










a 19 de Mayo del 2013, Cd Delicias Chihuahua.


2
INDICE.
Introduccin 3


Programacin de dispositivos 4
4.1 El buffer de video en
modo texto.
4
4.2 Acceso a discos en
lenguaje ensamblador.
7
4.3 Programacin del puerto
serial.
25
4.4 Programacin del puerto
paralelo.
29
4.5 Programacin hbrida. 38
4.6 Programacin de puerto
USB.
39
Conclusin 44
Bibliografas. 45


3
INTRODUCCION.
En este documento se van a tratar temas de inters para el mbito de
lenguajes de interfaz que se enfocan a la programacin de dispositivos
las herramientas de modo de texto en este caso se utilizan para el
despliegue de mensajes en lenguaje ASCII y as como este ejemplo se
muestran los diferentes comandos para despliegues y las interrupciones
necesarias que se usan en un ensamblador.
A travs de diversas tablas se hace un desglose de cada una de las
referencias de las interrupciones y se muestran parmetros.




4
PROGRAMACIN DE DISPOSITIVOS.

4.1. El buffer de video en modo texto.

Modo texto.
El modo de texto se utiliza para el despliegue normal en la pantalla de
caracteres ASCII. El procesamiento es semejante tanto para el
monocromtico como a color, salvo que a color no permite el atributo de
subrayado. El modo texto proporciona acceso a todo el conjunto de 256
caracteres ASCII extendido. La figura 10-1 muestra los modos de texto
comunes, con el nmero de modo ala izquierda.
Modo de texto 00(mono) 01 (color).estos modos permiten usar un
formato de 40 columnas. Aunque fueron diseados originalmente para el
CGA, son compatibles los siguientes y tambin operan con funciones en
sistemas EGA y VGA.
Modo de texto 02(mono) 03 (color). Estos modos proporcionan el formato
convencional de 80 columnas. Aunque fueron diseados originalmente
para el CGA, son compatibles los siguientes y tambin operan con
funciones en sistemas EGA y VGA.
Modo de texto 07(mono).Este modo estndar monocromtico para MDA,
EGA y VGA, ofrece respetables soluciones en pantalla.



5

Despliegue monocromtico
Para un monitor monocromtico, el bit 0 establece el atributo subrayado.
Para especificar atributos, puede establecer combinaciones de bits como
se muestra a continuacin:





6
Despliegue a color
En muchos monitores a color, el fondo puede mostrar uno de 8 colores y
los caracteres pueden mostrar 1 de 16 colores. La intermitencia e
intensidad soplo se aplica al primer plano. Tambin puede seleccionar 1
de 16 colores para el borde (marco).Los monitores de color no permiten
subrayado; en lugar de esto, al establecer un bit en cero seleccione el
color azul como primer plano.
El byte de atributo e sutilizado de la misma manera como se mostro con
un monitor monocromtico. Los tres colores bsicos son verde rojo y azul.
Puede combinarlos en el byte de atributo para formar un total de 8 colores
(incluyendo blanco y negro) y puede establecer alta intensidad para un
total de 16 colores.










7
4.2. ACCESO A DISCOS EN LENGUAJE ENSAMBLADOR.

En modo real de sistemas operativos, como MS-DOS , llamada INT 13h
saltaban en cdigo ROM-BIOS de la computadora para los servicios de
disco de bajo nivel , lo que llevar a cabo las operaciones de lectura de
disco basado en el sector fsico o escribir para el programa. En MS-DOS,
que sirve como interfaz de bajo nivel para los controladores de
dispositivos de bloque internas para discos duros y disquetes . Esto
permite a 26h y de 25h INT INT para proporcionar absoluta disco de
lectura / escritura de funciones lgicas a los sectores de la FAT sistema
de archivos del controlador en el kernel de DOS, que atiende las
solicitudes relacionadas con los archivos a travs de MS-DOS API ( INT
21h funciones).
En modo protegido sistemas operativos, como Microsoft Windows
NT derivados (por ejemplo, NT4, 2000, XP y Server 2003)
y Linux con dosemu , las intersecciones utilizar la llamada y pasa al disco
nativo del sistema operativo mecanismo de entrada / salida. Windows
9x y Windows para Trabajo en Grupo 3.11 tambin omitir las rutinas del
BIOS cuando se utiliza acceso a archivos de 32 bits .
El modo real interfaz original BIOS INT 13h admite unidades de tamaos
de hasta aproximadamente 504 MB, mediante lo que se conoce
comnmente como CHS direccionamiento fsico. Este lmite se origina a
partir de la interfaz de hardware de la PC / IBM XT hardware del disco. El
BIOS usa el -sector-culata (CHS) direccin indicada en la llamada INT
13h, y se transfieren directamente a la interfaz de hardware.
Esta interfaz ms tarde se ampli para admitir el direccionamiento de
hasta exactamente 8064 MB utilizando lo que se conoce comnmente
como CHS direccionamiento lgico. Este lmite se origina de una
combinacin del valor de registro basado convencin de llamada utilizado
en la interfaz INT 13h, y el objetivo de mantener la compatibilidad con
versiones anteriores. Haba originalmente una serie de BIOS que ofrecan
versiones incompatibles de esta interfaz, pero con el tiempo la industria
informtica estandarizada en la interfaz desarrollada en la investigacin
Microid ("MR BIOS") en 1989. Este lmite se utiliza 1024 cilindros, 256
cabezales, 63 sectores y bloques de 512 bytes, lo que ms o menos 7.875
GB de direccionamiento (1024 * 256 * 63 * 512).
Para apoyar los modos de direccionamiento an ms grandes, una
interfaz conocida como extensiones INT 13h se introdujo por Western
Digital y Phoenix Technologies como parte de BIOS Enhanced Disk Drive


8
Servicios. Se utiliza 64 bits direccionamiento lgico de bloques (LBA),
que permite hacer frente a 8 ZiB (la unidad tambin puede soportar LBA
de 28 bits o de 48 bits que permite que hasta 128 GiB o
128 PiB respectivamente, suponiendo un sector de 512 bytes / tamao
de bloque). Esta es una interfaz de paquetes, ya que utiliza un puntero a
un paquete de informacin en lugar del registro basado convencin de
llamada de la interfaz INT 13h originales. Este paquete es una estructura
de datos que contiene una versin de la interfaz, tamao de los datos, y
LBA.
Todas las versiones de MS-DOS , como MS-DOS 7 y de Windows
95 contienen un error que impide que se inicie discos duros con 256
cabezas (registrarse valor 0xFF),
[ 2 ]
tantas mapas modernos del BIOS
que las unidades tienen en la mayora de las 255 cabezas . Tambin
algunos controladores de cach se lave sus reservas cuando se detecta
que MS-DOS se pasa por alto por las aplicaciones que las cuestiones
directamente peticiones INT 13h. BIOS AMI de alrededor de 1990-1991
basura palabra buffers no alineados. Algunos MS-DOS y TSR programas
clobber interrumpir la activacin y registros para PC-DOS y MS-
DOS instalan sus propios filtros para evitar esto.

CARTA DE SERVICIOS INT 13h

Tabla Drive.

DL = 00h Primero disquete ("la unidad A:")
DL = 01h Segundo disco ("unidad B:")
DL = 80h Primero el disco duro
DL = 81h Disco duro segundo



TABLA DE FUNCIONES.



9
AH = 00h Cambiar las unidades de disco
AH = 01h Ver estado de la ltima operacin Drive
AH = 02h Leer Sectores de la unidad
AH = 03h Escribe Sectores para conducir
AH = 04h Verifique Sectores
AH = 05h Formato de pista
AH = 06h Formato de pista Set Flags Bad Sector
AH = 07h Formato de la unidad a partir de la cancin
AH = 08h Leer parmetros del variador
AH = 09h HD Inicializar controlador de disco
AH = 0Ah HD Leer Sectores largo de la unidad
AH = 0Bh HD Escribe Sectores largo para conducir
AH = 0Ch HD Mueva Head Drive al cilindro
AH = 0Dh HD Cambiar las unidades de disco
AH = 0Eh PS / 2 Controller Leer Ensayo
AH = 0Fh PS / 2 Controlador Escribir prueba


10
AH = 10h HD Probar si la unidad est lista
AH = 11h HD Vuelva a calibrar Drive
AH = 12h PS / 2 Controlador de memoria RAM de prueba
AH = 13h PS / 2 Test Drive
AH = 14h HD Controlador de Diagnstico
AH = 15h Leer Tipo de unidad
AH = 16h FD Detectar Medios Change
AH = 17h FD Configurar el tipo de Formato (utilizado por las versiones de DOS <= 3.1)
AH = 18h FD Configurar el tipo de Formato (utilizado por DOS versiones> = 3.2)
AH = 19h Parque Heads
AH = 41h EXT Comprobar si las extensiones estn disponibles
AH = 42h EXT Leer Sectores de la unidad
AH = 43h EXT Escribe Sectores para conducir
AH = 44h EXT Verifique Sectores
AH = 45h EXT Bloquear / Desbloquear unidad
AH = 46h EXT Expulsin de la unidad


11
AH = 47h EXT Mueva Head Drive To Sector
AH = 48h EXT Leer parmetros del variador
AH = 49h EXT Detectar Medios Change
Si la segunda columna est vaca, entonces la funcin puede ser utilizado
tanto para disquete y duro.
FD: para disquete solamente.
HD: de disco duro solamente.
PS / 2: para el disco duro en el sistema PS / 2 solamente.
EXT: parte de las extensiones INTERNAS 13H que estaban escritas en
la dcada de 1990 para apoyar a los discos duros con ms de 8 GB .
INT 13h AH = 00h: Restaurar la unidad de disco

Parmetros:
AH 00h
DL Conducir

Resultados:
CF Ubicado en error








INT 13h AH = 01h: obtener el estado de la ltima operacin Drive


12
Parmetros:
AH 01h
DL Conduzca $
$ Bit 7 = 0 para la unidad de disquete, bit 7 = 1 para la unidad fija
Resultados:
Alabama Vuelva Cdigo
00h xito
01h Comando no vlido
02h No puedo encontrar la direccin Marcos
03h Escribir intentado en tu disco protegido
04h Sector no encontrado
05h Restablecer Error
06h Lnea de cambio de disco "activa"
07h Actividad parmetro Error de la unidad
08h DMA rebasamiento
09h Intento de DMA sobre 64kb lmite
0Ah Sector defectuoso detectado
0Bh Mala cilindro (pista) detecta
0Ch Tipo de medio no se encuentra
0Dh No vlido nmero de sectores
0Eh Control de marca de direccin de datos detecta
0Fh DMA fuera de rango
10h Error de datos CRC / ECC
11h ECC corrige error de datos
20h Fallo del controlador
40h Busque el fracaso
80h Conduce el tiempo de espera, que se supone no est listo
AAh Drive not ready
BBH Error indefinido
CCh Escribe fallo
E0h Error de estado
FFh Operacin Sense no
CF Set On Error, Borrar Si No Error
INT 13h AH = 02h: leer sectores desde la unidad
Parmetros:


13
AH 02h
Alabama Sectores Para Leer Conde
CH Rastrear
CL Sector
DH Cabeza
DL Conducir
ES: BX Tampn de direccin del puntero
Resultados:
CF Set On Error, Borrar Si No Error
AH Vuelva Cdigo
Alabama Sectores reales Leer Conde
Observaciones:
Registro CX contiene tanto el nmero de cilindro (10 los bits , los valores
posibles son 0 a 1023) y el nmero de sector (6 bits, los valores posibles
son 1 a 63). Pedacitos del cilindro y del Sector se numeran a continuacin:
CX = CH --- --- --- CL ---
cilindro: 76543210 98
sector: 543210


Ejemplos de traduccin:


14
CX: = ((cilindro y 255) SHL 8) o ((cilindro y 768) SHR 2) o sector;
cilindro: = ((CX y 0xFF00) shr 8) o ((CX y 0xC0) SHL 2)
sector: = CX y 63;
Direccionamiento de amortiguamiento debe garantizar que el buffer
completo se encuentra dentro del segmento dado, es decir, (BX +
size_of_buffer) <= 10000h. De lo contrario la alarma puede fallar con
algunos BIOS o versiones de hardware. Ejemplo: Suponga que desea leer
16 sectores (= 2000h bytes ) y el bfer comienza en la direccin 4FF00h
memoria. La utilizacin de la segmentacin de memoria , hay diferentes
maneras de calcular los valores de registro, por ejemplo:

ES = segmento = 4F00h
BX = offset = 0F00H
Suma = direccin de memoria = 4FF00h
Sera una buena opcin porque 0F00H + 2000h = 2F00h <= 10000h
ES = segmento = 4000h
BX = offset = FF00h
Suma = direccin de memoria = 4FF00h
Que no es una buena opcin porque FF00h + 2000h = 11F00h> 10000h
02h Funcin de interrupcin 13h slo pueden leer los sectores de los
primeros 16.450.560 sectores de su disco duro, para leer los sectores
ms all del lmite de 8 GB se debe utilizar la funcin 42h de extensiones
INTERNAS 13H. Otra alternativa puede ser DOS 25h interrupcin que lee
sectores dentro de una particin.
INT 13h AH = 03h: Escribe Sectores para conducir




Parmetros:
AH 03h
Alabama Sectores de escribir Conde


15
CH Rastrear
CL Sector
DH Cabeza
DL Conducir
ES: BX Tampn de direccin del puntero
Resultados:
CF Set On Error, Borrar Si No Error
AH Vuelva Cdigo
Alabama Sectores reales Conde Escrito

INT 13h AH = 04h: Verifique los sectores de la unidad

Parmetros:
AH 04h
Alabama Sectores para verificar Conde
CH Rastrear
CL Sector
DH Cabeza


16
DL Conducir
ES: BX Tampn de direccin del puntero
Resultados:
CF Set On Error, Borrar Si No Error
AH Vuelva Cdigo
Alabama Sectores reales verificados Conde
INT 13h AH = 05h: Formato de pista

Parmetros:
AH 05h
Alabama Sectores a formato Conde
CH Rastrear
CL Sector
DH Cabeza
DL Conducir
ES: BX Tampn de direccin del puntero $
$ 4-byte campo de direccin (se aplica a PC / XT 286, AT, PS / 1 y PS /
2)



17
Byte Significado Valores permitidos
1 Rastrear
2 Cabeza
3 Sector
4 Bytes / Sector 0 = 128, 1-256, 2-512, 3-1024

Resultados:
CF Set On Error, Borrar Si No Error
AH Vuelva Cdigo

INT 13h AH = 06h: Formato Track Set Flags Bad Sector
Parmetros:
AH 06h
Alabama Interleave
CH Rastrear
CL Sector
DH Cabeza
DL Conducir
Resultados:


18
CF Set On Error, Borrar Si No Error
AH Vuelva Cdigo

INT 13h AH = 07h: Formato A partir de la cancin Drive





Parmetros:
AH 07h
Alabama Interleave
CH Rastrear
CL Sector
DH Cabeza
DL Conducir
Resultados:
CF Set On Error, Borrar Si No Error
AH Vuelva Cdigo

INT 13h AH = 08h: lee los parmetros del variador
Parmetros:


19
Registros
AH 08h = nmero de funcin para
read_drive_parameters
DL ndice de activacin (por ejemplo, primero HDD =
80h)
ES: DI
[ 4 ]
establecido en 0000h: 0000h a evitar algunos
errores BIOS

Resultados:
CF Set On Error, Borrar Si No Error
AH Vuelva Cdigo
DL nmero de unidades de disco duro
DH
[ 4 ]
lgica ltimo ndice de cabezas = number_of - 1 (porque el ndice comienza en 0)
CX [07:06] [15:08] lgica ltimo ndice de cilindros = number_of - 1 (porque el ndice
comienza con 0 )
[05:00]lgica ltimo ndice de sectores por pista = number_of (porque el ndice
comienza con 1)
BL tipo de unidad (slo AT/PS2 disquetes)
ES: DI puntero a conducir tabla de parmetros (slo para disquetes)
Observaciones:
los valores lgicos de 08h funcin pueden / deben diferir de los valores
CHS fsicas de funcin 48h.
Resultado registro CX contiene dos cilindros y sectores / pista de valores,
vase la observacin de 02h funciones.
INT 13h AH = 09h: Caractersticas Par Drive Init


20

Parmetros:
AH 09h
DL Conducir
Resultados:
CF Set On Error, Borrar Si No Error
AH Vuelva Cdigo
INT 13h AH = 0Ah: Leer Sectores largo de la unidad
La nica diferencia entre esta funcin y la funcin 02h (vase ms arriba)
es que la funcin 0Ah lee 516 bytes por sector en lugar de slo 512. Los
ltimos 4 bytes contienen el cdigo de correccin de errores (ECC), una
suma de comprobacin de los datos del sector.
INT 13h AH = 41h: Llegada Extensiones Presente

Parmetros:
Registros
AH 41h = nmero de funcin para las extensiones de verificacin
[ 5 ]

DL ndice de activacin (por ejemplo, primero HDD = 80h)
BX 55AAh
Resultados:
CF Habilite no presente, claro si lo hay
AH Cdigo de error o nmero de versin principal


21
BX AA55h
CX Mscara de bits de soporte de interfaz:
1 - Acceso al dispositivo utilizando la estructura del paquete
2 - Bloqueo Drive y extraccin de
4 - Apoyo a la unidad de disco mejorada (EDD)
INT 13h AH = 42h: extensin Sectores leer desde la unidad




Parmetros:
Registros
AH 42h = nmero de funcin para la lectura prolongada
DL ndice de activacin (por ejemplo, primero HDD = 80h)
DS: SI segmento: offset puntero a la DAP, ver ms abajo
DAP: Disco Direccin Packet
compensar
gama
tamao Descripcin
00h 1 byte tamao de DAP = 16 = 10h
01h 1 byte sin usar, debe ser cero


22
02h 03h .. 2 bytes nmero de sectores para ser ledo, (algunas BIOS Phoenix estn
limitados a un mximo de 127 sectores)
04h 07h .. 4 bytes segmento: offset puntero al bfer de memoria a la que se transferirn
los sectores (tenga en cuenta que 86 es little-endian : si se declara el
segmento y el desplazamiento por separado, el desplazamiento debe
ser declarado antes del segmento)
08h .. 0Fh 8 bytes nmero absoluto del inicio de los sectores que se deben leer (primera
sector del disco tiene el nmero 0)





Resultados:
CF Set On Error, Borrar Si No Error
AH Vuelva Cdigo
INT 13h AH = 43h: Sectores Escriba ampliado para conducir
Parmetros:
Registros
AH 43h = nmero de funcin para escribir largos
Alabama bit 0 = 0: control de cerca de escritura,
bit 0 = 1: Comprobacin de escritura abierto,
bits 1-7: reservado, establece en 0
DL ndice de activacin (por ejemplo, primero HDD = 80h)
DS: SI segmento: indicador hacia el DAP


23

Resultados:
CF Set On Error, Borrar Si No Error
AH Vuelva Cdigo

INT 13h AH = 48h: Extended Leer parmetros del variador


Parmetros:
Registros
AH 48h = nmero de funcin para extended_read_drive_parameters
DL ndice de activacin (por ejemplo, primero HDD = 80h)
DS: SI segmento: indicador hacia Resultado Buffer, ver ms abajo
Buffer Resultado
compensar
gama
tamao descripcin
00h 01h .. 2 bytes tamao de bfer Resultado = 30 = 1Eh
02h 03h .. 2 bytes banderas informacin
04h 07h .. 4 bytes nmero fsico de cilindros = ltimo ndice + 1 (porque el ndice
comienza en 0)


24
08h .. 0Bh 4 bytes nmero fsico de los jefes = ltimo ndice + 1 (porque el ndice
comienza en 0)
0Ch .. 0Fh 4 bytes nmero fsico de sectores por pista = ltimo ndice (porque el ndice
comienza con 1)
10h 17h .. 8 bytes nmero absoluto de sectores = ltimo ndice + 1 (porque el ndice
comienza en 0)
18h 19h .. 2 bytes bytes por sector
1Ah .. 1Dh 4 bytes puntero opcional a Unidad de disco mejorada (EDD) los parmetros de
configuracin
que puede ser utilizado para posteriores llamadas Extensin 13h de
interrupcin (si es compatible)


Resultados:

CF Set On Error, Borrar Si No Error
AH Vuelva Cdigo



4.3. PROGRAMACIN DEL PUERTO SERIAL.







Comunicacin serial en lenguaje ensamblador.
En lenguaje ensamblador, se puede acudir a la interrupcin 14H de la
ROM-BIOS para configurar, leer, escribir o simplemente para conocer


25









el estado del puerto; cada una de estas cuatro opciones es un servicio
de la interrupcin, y se seleccionan a travs del registro AH. La figura
1 muestra los valores que debe contener el registro AH para invocar
cada uno de los servicios. En todos los casos, el registro DX debe
contener el nmero del puerto serie; el primero de ellos, COM1 se
especifica como 00h.

Servicio Descripcin
00 Inicializar puerto serie
01 Enviar un dato
02 Recibir un dato
03 Obtener el estado del puerto

figura 1.Servicios para el puerto serial disponibles a travs de la
interrupcin 14H

Para configurar o inicializar el puerto serie, bastar con utilizar el
servicio 00 de la interrupcin, colocando en el registro AL los valores
equivalentes a los parmetros, como se puede observar en la figura 2.
Con ste mtodo es posible obtener frecuencias de transmisin que van
desde los 110 hasta los 9600 baudios.


26

figura 2
Para enviar un dato por el puerto serial, bastar con colocar en el
registro AH el valor 01 correspondiente a este servicio y en el registro
AL el dato a ser enviado, invocando de nuevo la interrupcin 14H. La
lectura de un dato que ha llegado al puerto se logra con el servicio 02,
el cual devuelve en el registro AL el dato. La lectura del estado del
puerto se consigue a travs del servicio 03 de esta misma interrupcin,
y retorna en el registro AX el estado del puerto, el cual contendr los
bits que se muestran en la figura 3.



27

figura 3
Por ejemplo, podemos utilizar el lenguaje ensamblador para configurar
el puerto serial para 1200 baudios, sin bit de paridad, sin bit de parada
y 8 bits, realizando el siguiente programa:
mov ah,0 ;servicio 00 de INT 14h: inicializar puerto
mov a1,83 ;configuracin: 1200 baudios, no paridad,
;un bit de parada, 8 bits de datos
mov dx,00 ;Seleccionar puerto COM1
int 14 ;interrupcin del BIOS
mov ah,4c ;servicio 4ch de INT 21h: terminar
int 21 ;interrupcin servicio del DOS
Este programa (en donde todos las cantidades estn expresadas en
hexadecimal) se puede tornar ejecutable utilizando algunos de los
ensambladores para PC, o utilizando el comando DEBUG del DOS.
Otra forma de seleccionar los parmetros de la comunicacin y lograr
sta, es mediante la modificacin y consulta de los registros
correspondientes al circuito integrado que maneja la comunicacin
serial: el UART 8250 o similar. Como se sabe, este circuito integrado
puede ser manejado como un puerto, en el cual es posible la escritura
o lectura de sus estados.
Comunicacin con el puerto paralelo en lenguaje ensamblador.
En lenguaje ensamblador, se puede leer un dato del puerto mediante la
instruccin IN escribir un dato en el puerto con la instruccin OUT


28
, en ambos casos el registro AL debe participar activamente en la
instruccin, bien sea como fuente (en operaciones de escritura) o
destino (en operaciones de lectura) del dato, como en los siguientes
casos:

out DX, AL ;lleva al puerto DX el contenido del registro AL
in AL,DX ;lleva al registro AL, el contenido del puerto DX
Otra, exigencia, es que el nmero del puerto sobre el que se va a
realizar la transferencia de datos debe estar sealado por le registro
DX, a excepcin de los casos en los cuales el nmero del puerto es
inferior a 255 (FFh), en cuyo caso la instruccin que lee o escribe puede
sealar directamente el puerto.
Como vern la utilizacin del puerto paralelo en lenguaje ensamblador
es muy sencilla.

4.4. PROGRAMACIN DEL PUERTO PARALELO.

EL PUERTO DE IMPRESORA
Los ordenadores PC han estandarizado un tipo de interfaz para la
comunicacin con la impresora, conocida normalmente como
CENTRONICS. Esta interfaz es capaz de enviar caracteres a la impresora
de forma paralelo. Cada carcter est codificado en un byte, del cual
cada bit se transmite por un terminal diferente. Existen otros terminales
que conectan ordenador e impresora, que sirven para intercambiar
informacin de control y de estado, a fin de implementar un sencillo
protocolo.
Para realizar esta interfaz, los PCs disponen de unos elementos
hardware especficos, denominados puertos de impresora o tambin
puertos paralelos.
En un PC pueden instalarse varios de estos puertos que se distinguen
entre s con los nombres LPT1, LPT2 y LPT3 (en algunos casos tambin
LPT4). Todos ellos son idnticos, salvo que tienen asignadas diferentes
direcciones en el mapa de entrada/salida.
Cada uno de estos puertos ocupa tres direcciones del mapa de E/S:


29
Puerto de Datos: De 8 bits, es donde la CPU escribe los datos que
se envan a la impresora (caracteres).
Puerto de Estado: Registro de 8 bits de donde la CPU puede
conocer diversos aspectos del estado de la impresora (apagada,
sin papel, etc). Se usan slo 5 de los 8 bits.
Puerto de Control: Registro de 8 bits donde la CPU puede escribir
diversas seales que reconoce la impresora (validacin de datos,
inicializacin, etc). Se usan 4 bits.
Estos tres registros ocupan posiciones consecutivas, por lo que basta
con especificar la primera de ellas. El puerto de datos ser el puerto
base.La ROM-BIOS de los PCs contiene programas elementales para el
manejo de estos puertos. En primer lugar, durante el proceso de
arranque del ordenador, se detecta su presencia y se almacenan sus
direcciones base en una zona de variables situada en el segmento
0040H (zona de variables del BIOS). En esta zona se pueden encontrar
los siguientes datos:
Printer_Base: En los offsets 0008H, 000AH, 000CH y 000EH, con
2 bytes cada uno de ellos, estn las direcciones de E/S en las que
se encuentran los puertos base de LPT1, LPT2, LPT3 y LPT4
respectivamente.
Lista de equipamiento: En el offset 0010H se encuentra una
palabra que muestra de forma rudimentaria los dispositivos que
se han encontrado en el arranque. Los bits 15 y 14 indican el
nmero de puertos de impresora instalados.
Print_Tim_Out: En los offsets 0078H, 0079H, 007AH y 007BH se
encuentran los valores de TIME_OUT asociados a cada puerto. Se
trata de valores que se van a utilizar para establecer cunto
tiempo se va a esperar para determinar que la impresora no est
disponible (est apagada, no tiene papel, etc).
Las direcciones del mapa de memoria de E/S en las que
se suelen colocar los puertos de impresora son:

Impresora Puerto de
Datos
Puerto de
Estado
Puerto de
Control
LPT1 03BCh 03BDh 03BEh
LPT2 0378h 0379h 037Ah
LPT3 0278h 0279h 027Ah
Tabla 1


30
SEALES DE LA INTERFAZ CENTRONICS.
El puerto paralelo, utilizado en general para el control de la impresin,
maneja las seales que se muestran en la tabla siguiente. De todas
ellas, las que normalmente intervienen en el protocolo de comunicacin
entre el PC y la impresora son BUSY y STROBE#. Algunas impresoras
pueden no utilizar alguna de las seales descritas en la tabla.

PUERTO NOMBRE Dir Pin
DB25
DESCRIPCIN
DATOS D0..D7 S 2-9 8 terminales de datos. Desde D0 a D7.
ESTADO BUSY E 11 Un nivel alto indica que la impresora
est ocupada y no puede recibir datos
nuevos. Tambin se pone a 1 en
situaciones de error.
ACK# E 10 Un nivel bajo indica que la impresora
ha recibido un dato y est disponible
para recibir uno nuevo.
PE E 12 Un nivel alto indica que la impresora no
tiene papel.
SLCT IN E 13 Un nivel alto indica que la impresora
est on-line.
ERROR# E 15 Un nivel bajo indica que se ha
producido un error en la impresora. No
hay papel, mal funcionamiento, etc.
CONTROL IRQEN - -- Flag que habilita o inhibe la generacin
de la interrupcin IRQ7 cuando se
activa la seal ACK#.
SELECT# S 17 Activa a nivel bajo. Indica a la
impresora que se ha seleccionado la
impresora.
INIT# S 16 A nivel bajo, enva un RESET a la
impresora.
AUTOFD# S 14 A nivel bajo, la impresora se encarga
de hacer un salto de lnea al recibir el
carcter "retorno de carro".
STROBE# S 1 Validacin de datos. Cuando la
impresora detecta un nivel bajo, acepta
el dato.
El carcter # indica que la seal es activa a nivel bajo


31
EL PUERTO DE DATOS.
Generalmente es slo de salida, pues se dise para enviar caracteres
a la impresora. Actualmente este puerto es bidireccional. La
correspondencia entre los bits del registro de datos y las seales
presentes en el conector DB25 del exterior es:

BIT 7 6 5 4 3 2 1 0
FUNCIN D7 D6 D5 D4 D3 D2 D1 D0
Tabla 3
EL PUERTO DE ESTADO.
Es un puerto de entrada. Est destinado a la lectura del estado de las
lneas de interfaz con la impresora. La seal BUSY es invertida antes de
llegar al registro. La correspondencia entre los bits del registro de
estado y las seales presentes en el conector DB25 del exterior es:

BIT 7 6 5 4 3 2 1 0
FUNCIN BUSY
(inv.)
ACK# PE SLCT
IN
ERROR# -- -- --
Tabla 4

EL PUERTO DE CONTROL.
Es un puerto de salida destinado a la escritura de comandos sobre la
impresora. Las seales SLCT#, AUTOFD# y STROB# son invertidas
antes de llegar a los correspondientes terminales de conector externo.
El bit 4 (IRQEN) no es una seal que corresponda a alguno de los
terminales de la interfaz Centronics. Se trata de un flag que habilita o
prohbe la generacin de la interrupcin IRQ7 cuando se activa la seal
ACK#. Las rutinas del BIOS que se ocupan de la impresora no utilizan
esta interrupcin. La correspondencia entre los bits del registro de
control y las seales presentes en el conector DB25 del exterior es:



32


BIT 7 6 5 4 3 2 1 0
FUNCIN -- -- -- IRQEN SELECT#
(inv.)
INIT# AUTOFD#
(inv.)
STROBE#
(inv.)
Tabla 5
EL PUERTO DE IMPRESORA COMO CONTROL Y ADQUISICIN
DE DATOS.
Un puerto es un mecanismo que conecta a un procesador con el mundo
exterior. Por medio de un puerto, el procesador recibe una seal desde
un dispositivo de entrada y enva una seal a un dispositivo de salida.
Los puertos son identificados por sus direcciones en el intervalo 0000h-
03FFh, lo que permite el uso de 1024 puertos en total. Las direcciones
no son de memoria, estn situadas en un mapa diferente de
entrada/salida.
Todo lo descrito en el apartado anterior define el funcionamiento del
manejo de la impresora, a travs de unos puertos. Pero estos mismos
puertos se pueden ver de otra forma, sencillamente como tres puertos
consecutivos de E/S un poco particulares.
Para la comunicacin con los puertos se utilizan las instrucciones IN y
OUT de ensamblador.
IN transfiere informacin desde un puerto de entrada al registro AL si
es un byte, y al AX si es una palabra. El formato es:
IN reg_acum, puerto
OUT transfiere informacin a un puerto de salida desde el registro AL
(byte) o el AX (palabra). El formato es:
OUT puerto, reg_acum
Si consideramos los puertos de datos, estado y control vistos
anteriormente, los podemos ver de la siguiente manera:



33


D7 Dato 7 S7 Busy (inv) C7 -- --
D6 Dato 6 S6 ACK# C6 -- --
D5 Dato 5 S5 PE C5 -- --
D4 Dato 4 S4 SLCT IN C4 -- --
D3 Dato 3 S3 ERROR# C3 SELECT (inv)
D2 Dato 2 S2 -- -- C2 INIT#
D1 Dato 1 S1 -- -- C1 AUTOFD#
(inv)
D0 Dato 0 S0 -- -- C0 STROBE#
(inv)
Tabla 6
Es decir, disponemos de dos puertos de salida, uno de 8 bits y otro de
4 bits y un puerto de entrada de 5 bits para el propsito que nosotros
decidamos, conociendo las direcciones que ocupan.
Recordar el significado de las seales marcadas con "(inv)". Esto quiere
decir que estn invertida por hardware. Es decir, si se ejecuta la
instruccin
OUT 037AH, 0FFh
se estn poniendo a 1 todos los bits del registro del puerto de control,
pero en el conector externo del puerto, el DB25, aparecera un 1 slo
en el pin 16 (INIT#), en los pines 1, 14 y 17 aparecera un cero
(STROBE#, AUTOFD# y SELECT respectivamente).
La distribucin de seales en los pines del conector de salida del PC
(hembra) se muestran a continuacin:


34

Figura 1. Los pines del 18 al 25 estn conectados a GND.
Ejemplo de control de hardware externo a travs del puerto
paralelo: control de encendido de diodos LED y lectura de pulsadores
externos.
En la siguiente figura se puede ver el montaje correspondiente a un
grupo de 8 diodos LED conectados al puerto de datos, 4 al puerto de
control y 5 pulsadores al puerto de estado. Las resistencias en serie con
los LEDs sirven para limitar la corriente que circula por el puerto, que
no debe ser elevada para no daarlo (del orden de 3-4 mA de salida y
12-15 mA de entrada). Las que estn conectadas a los pulsadores se
denominan de pull-up y sirven para fijar un nivel lgico en ausencia de
pulsacin. Los LEDs se encendrn cuando haya un cero lgico a la salida
del pin correspondiente del puerto.



35
Figura 2
Nota: el bit 7 del puerto de estado y los bits 1, 14 y 17 del de control
estn invertidos. Para trabajar con ellos se recomienda el uso de la
instruccin OR-Exclusiva (XOR) que, a travs de una mscara, corrija
lo anterior despus de leer del puerto de estado o antes de escribir en
el de control.
Las instrucciones siguientes encenderan los LEDs a modo de un
contador binario:
mov cx,0FFh ; la cuenta se repetir 256 veces
mov ax,0FFh ; primer nmero de la cuenta. Recordar que con un 1
estn apagados
mov dx, puerto ; se supone definida puerto=03BCh, por ejemplo
cont: out dx, al ; saca al puerto de datos el contenido de al
dec ax ; actualiza la cuenta
loop cont ; se repite 256 veces
out dx,0FFh ; apaga todos los leds


MANEJO DE LA INTERRUPCIN DEL PUERTO PARALELO.
El bit 4 del puerto de control, segn la tabla 5, se denomina IRQEN.
Este bit habilita o permite que se produzca la interrupcin asociada a la
entrada ACK#. Cuando este bit est a 1 y la seal ACK# pasa del nivel
lgico 1 al nivel 0 se produce una peticin de interrupcin, que es la
IRQ7.
En el diseo original del PC, IBM reserv 8 interrupciones hardware,
comenzando por la interrupcin 08h, para expansin de interrupciones,
que son comnmente conocidas como IRQ0 a IRQ7. As la IRQ0 se
corresponde con la interrupcin 08h, la IRQ1 con la 09h, etc. La IRQ7
se corresponde pues con la 0Fh, estando sus vectores a partir de la
direccin 0000:003Ch.
Para que una peticin de una IRQ llegue a la CPU, sta debe estar
permitida, no enmascarada. El puerto 021h est asociado con la


36
mscara de interrupciones de las IRQ. Para habilitar una determinada
interrupcin se deber escribir un cero en la posicin
correspondiente, sin modificar el resto. As, si lo que se quiere es
permitir la IRQ7 habr que poner a cero el bit ms significativo del
puerto 021h, como muestra el cdigo siguiente:
in al,021h ; lee la mscara de las IRQ
and al, 01111111b ; impone un 0 en el bit ms significativo, IRQ7. No
modifica el resto
out 021h, al ; escribe la mscara
Con estas operaciones quedar habilitada la IRQ7. Una vez atendida de
la forma que se haya previsto, el programa debe indicar a la CPU que
la interrupcin ya ha sido procesada, para ello debe escribir un 1 en el
bit 5 del puerto 020h, es decir:
mov al, 020h ; carga en al 0010 0000 b
out 020h, al ; lo escribe en al puerto 020h
Finalmente, tan slo queda por activar el bit que permite que la seal
ACK# genere una peticin de IRQ7. Para ello se deber poner a 1 el bit
4 del puerto de control , sin modificar el resto. Cuando no se quiera que
se produzca una IRQ7, basta con poner a cero este bit.
Al finalizar el programa, no slo se deben restablecer los vectores de
interrupcin modificados, sino que tambin se debe inhibir la IRQ7,
dejando la mscara del puerto 021h como estaba.
Un programa que utilice la interrupcin del puerto paralelo puede tener
esta estructura, en lo que se refiere al manejo de dicha interrupcin:
Al comienzo:
modificar vectores de la interrupcin 0Fh (IRQ7)
permitir la interrupcin IRQ7, poner a 0 el bit 7 del puerto 021h
Durante la ejecucin, siempre que haga falta:
habilitar la interrupcin en el puerto de control, bit 4


37
repetir
procesar la interrupcin
escribir 020h en el puerto 020h
hasta que se deba inhibir
inhibir la interrupcin, poniendo un cero en el bit 4 del puerto de control
Al terminar
inhabilitar la IRQ7, poner a 1 el bit 7 del puerto 021h
recuperar los vectores de interrupcin anteriores

4.5. PROGRAMACIN HBRIDA.

PROGRAMACION HIBRIDA LENGUAJE DE PROGRAMACION.
La programacin hbrida proporciona un mecanismo por medio del cual
podemos aprovechar las ventajas del lenguaje ensamblador y los
lenguajes de alto nivel, todo esto con el fin de escribir programas ms
rpidos y eficientes. Turbo Pascal permite escribir procedimientos y
funciones en cdigo ensamblador e incluirlas como parte de los
programas en lenguaje Pascal; para esto, Turbo Pascal cuenta con dos
palabras reservadas: Assembler y Asm. Assembler permite indicarle a
Turbo Pascal que la rutina o procedimiento que se est escribiendo est
totalmente escrita en cdigo ensamblador. Por otro lado, Asm nos
permite incluir bloques de instrucciones en lenguaje ensamblador en
cualquier parte del programa sin necesidad de escribir procedimientos
completos en ensamblador. En la programacin software, sistemas
hbridos inteligentes denotan a los sistemas software que emplean, en
paralelo, una combinacin de modelos de inteligencia artificial, mtodos
y tcnicas de stos subcampos , cada sistema inteligente natural es un
hbrido porque stos desarrollan operaciones mentales tanto en niveles
simblicos como sub-simblicos. Desde hace pocos aos se ha ido
desarrollando una discusin sobre la importancia en la inteligencia
artificial de la integracin de todos stos sistemas. Basados en las
nociones de que se haban ya creado simples y especficos sistemas de
inteligencia artificial (como sistemas para la visin de computadores, sntesis


38
del habla, etc., o software que emplean alguno de los modelos mencionados
arriba) algunos autores proponen a que es ahora el momento de la integracin
para crear complejos, grandes sistemas de inteligencia artificial. Investigadores
destacados sobre estas ideas son Marvin Minsky, Aaron Sloman, Deb Roy,
Kristinn R.Thrisson y Michel Arbib. La metodologa de diseo Creacionista
(CDM, por sus siglas en ingls) (ntese en su nombre referencias al deseo
humano de ser el Arquitecto) es una filosofa de desarrollo software diseado
especficamente para la creacin de grandes sistemas A.I. CDM est basado en
pasos de diseo iterativos que guen hacia la creacin de una red de llamados
mdulos interactivos, que se comunican por flujos tapados explcitos y mensajes
discretos. La organizacin Mindmakers es un portal online para la gente que
trabaja en la integracin e incremento de la colaboracin en el campo de la
Inteligencia Artificial

4.6. PROGRAMACIN DE PUERTO USB.

Qu es un puerto USB y para qu sirven?

USB proviene de el ingles Universal Serial Bus que significa Bus de
Serie Universal. Un puerto USB permite conectar hasta 127
dispositivos. Actualmente es un estndar en toda computadora. Incluso
se incluyen al menos dos puertos USB 1.1, o puertos USB 2.0 en los
ms modernos.
Un puerto USB es una entrada o acceso para que el usuario pueda
compartir informacin almacenada en diferentes dispositivos como una
cmara de fotos, un pendrive, entre otros, con un computador.
Los puertos USB estn diseados para transmitir energa elctrica al
dispositivo que se encuentra conectado, de esta manera no se necesita
de un cable adicional para conectarse a una toma de corriente.
El puerto USB pertenece a un controlador fsico que puede ser parte de
la placa base o en una tarjeta de expansin, a este conector se le
denomina concentrador raz.

Que es un puerto USB.
> Inicio > Computadoras e Internet
Un puerto USB es una entrada o acceso para que el usuario pueda
compartir informacin almacenada en diferentes dispositivos como una


39
cmara de fotos, un pendrive, entre otros, con un computador. Las
siglas USB quieren decir Bus de Serie Universal en ingls.
En 1996, IBM, Intel, Northern Telecom, Compaq, Microsoft, Digital
Equipment Corporation y NEC, siete empresas relacionadas al mundo
de la tecnologa y las comunicaciones crearon esta nueva forma de
conectar diversos dispositivos a un solo servidor. De esta manera se
fue dejando atrs los antiguos puertos en paralelo y serial y se
aument la velocidad de trabajo de los dispositivos a 12 mbps en
promedio. Los equipos de Windows se adaptaron rpidamente a esta
nueva tecnologa, a lo que ms tarde se sumaron los aparatos
Macintosh.
Los aparatos conectados a un puerto USB estndar no necesitan estar
enchufados a la corriente o disponer de bateras para funcionar. El
propio puerto est diseado para transmitir energa elctrica al
dispositivo conectado. Incluso puede haber varios aparatos conectados
simultneamente, sin necesidad de recurrir a una fuente de
alimentacin externa.
Una de sus principales caractersticas es su capacidad plug & play. Este
concepto se refiere a la cualidad de que con slo conectar el dispositivo
al servidor central, ste sea capaz de interpretar la informacin
almacenada y reproducirla inmediatamente. Es decir, que el
computador y el aparato hablen el mismo idioma y se entiendan entre
s. Adems, este sistema permite conectar y desconectar los diferentes
dispositivos sin necesidad de reiniciar el equipo.
Esta forma de conexin tambin ha ido evolucionando en el tiempo.
Desde 1996 ha mejorado su velocidad de transferencia de los datos de
12 mbps a 480 mbps. Lo ltimo en esta tecnologa es una extensin
llamada USB on the go que consiste en un puerto que puede actuar
tanto de servidor como de dispositivo. Esto depender de la manera
en que se conecta el cable.
La masificacin de los puertos USB es cada da mayor. Adems de la
mejora en la velocidad de transferencia y su cualidad plug & play, su
capacidad de conectar los aparatos es muy simple y no requiere de
instalaciones complejas ni de intervenir en el hardware de los
computadores. Hoy en da, es comn que los discos duros traigan
incorporados varios puertos USB para facilitar la conectividad de los
aparatos.


40









CULES SON LAS DIFERENCIAS ENTRE USB 1.0, 1.1, 2.0, 3.0 Y
THUNDERBOLT?






Algunas tecnologas cambian nuestra forma de trabajar con el PC. Esto
es lo que ha ocurrido con el estndar USB. Gracias a l, podemos tener
un cable que puede ser usado tanto para copiar pelculas o documentos
a un disco duro externo como para conectar cmaras, escneres o
impresoras.
El estndar USB ha experimentado una gran evolucin en sus
caractersticas. Lo cual ha llevado a que surjan varios estndares a lo
largo de los aos:
USB 1.0. El primero en aparecer. Pensado para funcionar con teclados,
ratones y dispositivos que en principio necesitan de un ancho de banda
pequeo. Permite trabajar a una velocidad aproximada de 1.5 Megabits
por segundo. Tardara aproximadamente 6 horas en copiar una pelcula
en MKV de 4 Gigas. Aparece en el ao 1996.


41
USB 1.1. Como no podra ser de otra forma no tarda mucho en
disearse otro estndar que supera al anterior. En este caso su
velocidad se multiplica por 8 hasta los 12 Megabits por segundo.
Tardarias 45 minutos en conseguir copiar esa misma pelcula. Estamos
ya en 1998.
USB 2.0. Es en este en el que tenemos el mayor salto cuantitativo.
Vamos a mejorar la velocidad en 40 veces y llegar a los 480 Megabits
por segundo. La misma pelcula del ejemplo anterior tardara poco ms
de 1 minuto en copiarse. Estamos ya en el ao 2000. Es muy comn
encontrarte PCs que incorporan ambos puertos USB 1.x y 2.0 luego es
muy importante conocer a cual estas conectando tus dispositivos sobre
todo si vas a realizar copias de archivos muy grandes.
USB 3.0. Aparece en 2008. Multiplica la velocidad hasta 4.8 Gigabits,
es decir multiplicamos ahora por 10. La misma pelcula tardara apenas
unos 10 o 15 segundos en copiarse. Ahora el problema, por primera
vez, no es el cable si no que el disco duro o dispositivo que conectes
sea tan rpido para poder funcionar a esa velocidad.
Adems, como el cable USB cada vez es usado con ms asiduidad para
la carga de dispositivos se aumenta la cantidad de energa que este es
capaz de proporcionar.
Al USB 3.0 y en el mbito de los discos duros externos le aparece un
competidor, el estndarSATA 3.0. En este caso lo que se hace es poner
un conector en el gabinete o caja de tu PC que conecta directamente a
la placa base. La diferencia en velocidad entre un disco duro externo e
interno se diluye. La interfaz SATA 3.0 es capaz de funcionar a 6
Gigabits por segundo.
Thunderbolt. El estndar USB ha conseguido lo que su propio nombre
indica convertirse en universal para casi cualquier tipo de dispositivo
que se conecte al PC. Pero hay uno que definitivamente se resiste a
esto y es el monitor. Thunderbolt es la creacin de Intel y Apple para
dar respuesta a esto.
Entre sus caractersticas esta la posibilidad de conectar varios
monitores al mismo cable. Otro de sus avances es su capacidad de
llevar internamente una lnea PCI Express. Esto te permite, entre otras
cosas, que tengas una tarjeta grfica externa a tu equipo que funcione
como si estuviera conectada internamente, muy til si quieres tener
un laptop que utilices para jugar en tu casa y quieres la mayor
autonoma posible cuando viajas con l.


42
En este caso estaramos hablando de velocidades aproximadas de 20
Gigabits por segundo.

CONCLUSION.
La programacin de dispositivos es de gran importancia hoy en da para
las diversas tecnologas que existen dentro de los ltimos aos los
dispositivos mviles se han establecido como una parte importante del
acceso a la informacin y aplicaciones estos dispositivos han dejado de
ser simples agendas electrnicas o telfonos celulares para convertirse en
pequeas computadoras. Se deben de tomar en cuenta las diversas
interrupciones que hay con sus parmetros correspondientes. Es
indispensable usar las herramientas de desarrollo y emuladores.

BIBLIOGRAFAS.
http://en.wikipedia.org/wiki/INT_13H
http://hgr.tripod.com/puertos_ensamblador.html
http://arantxa.ii.uam.es/~gdrivera/varios/notas_lpt.htm
http://es.scribd.com/doc/44098211/programacion-hibrida
http://www.slideshare.net/gabohp12/equipo-6-programacion-hibrida
http://www.cavsi.com/preguntasrespuestas/que-es-un-puerto-usb-y-
para-que-sirven/
http://www.misrespuestas.com/que-es-un-puerto-usb.html
http://www.itescam.edu.mx/principal/webalumnos/sylabus/asignatura.p
hp?clave_asig=SCC-1014&carrera=ISIC-2010-224&id_d=170