Está en la página 1de 33

INSTITUTO

TECNOLOGICO SUPERIOR
DE LAS CHOAPAS

Alumno: Eduardo Cadena Mndez

Semestre: 6 Grupo: B

Materia: Lenguajes de interfaz

Docente: Ing. Antonio Hernndez lvarez

11 DE MAYO DE 2017
INDICE
4.1 El Buffer de video en modo texto ...................................................................... 2
4.1.1 Escritura directa en el buffer de video ......................................................... 4
4.1.2 Ejemplos en modo texto .............................................................................. 4
4.2 Acceso a disco en lenguaje ensamblador ......................................................... 5
4.2.1 Particiones del DOS .................................................................................... 6
4.2.2 Parmetros absolutos de un disco duro ...................................................... 6
4.2.3 Acceso a dispositivos de almacenamiento .................................................. 7
4.2.3 Acceso a disco usando lenguaje ensamblador ........................................... 7
4.3 Puerto ................................................................................................................ 9
4.3.1 Puerto Fsico ............................................................................................... 9
4.3.2 Puerto Lgico ............................................................................................ 11
4.4 Programacin del puerto serial ........................................................................ 11
4.4.1 Estndar RS 232 ....................................................................................... 13
4.4.2 Tipos de conectores y cables .................................................................... 14
4.4.3 Explicacin de los registros ....................................................................... 15
4.4.4 Abrir un canal asociado a un puerto serie ................................................. 16
4.4.5 Modificar los parmetros de transmisin ................................................... 17
4.4.6 Monitorizacin de eventos ........................................................................ 19
4.4.7 Escribir en el puerto serie ......................................................................... 19
4.4.8 Esperar a que haya algo que leer ............................................................. 20
4.4.9 Leer desde el puerto serie ........................................................................ 21
4.5 Programacin del puerto paralelo ................................................................... 22
4.5.1 Conector del puerto paralelo ..................................................................... 26
4.6 Programacin hibrida ...................................................................................... 27
4.6.1 Operadores ............................................................................................... 28
4.7 Programacin del puerto USB ......................................................................... 30
CONCLUSIONES.................................................................................................. 31
BIBLIOGRAFIA ..................................................................................................... 32
PROGRAMACION DE DISPOSITIVOS
4.1 El Buffer de video en modo texto
Se llama modo texto a cualquier modo de vdeo de un ordenador en el que el
contenido de la pantalla se representa internamente en trminos de caracteres
textuales en lugar de pxeles individuales.

Las aplicaciones en modo texto se comunican con el usuario mediante lneas de


comandos (CLIs) e interfaces textuales de usuario (TUIs). Muchos juegos de
caracteres usados en aplicaciones en modo texto tambin incluyen un conjunto
limitado de caracteres semi -grficos predefinidos que pueden usarse para dibujar
cajas y otros grficos rudimentarios usados para destacar el contenido o simular
widgets u controles como los presentes en las aplicaciones escritas para interfaces
grficas (GUIs).

Las ventajas de los modos de texto respecto a los grficos incluyen el menor
consumo de memoria y la ms rpida manipulacin de pantalla. Adems, las
aplicaciones en modo texto tienen unos requisitos de ancho de banda relativamente
bajos en uso remoto. Una desventaja obvia del modo texto es la restriccin del
contenido de pantalla, que lo hace inviable para muchos tipos de aplicaciones.
Una caracterstica importante de los programas en modo texto es que asumen un
ancho constante de las fuentes, donde cada carcter tiene la misma anchura en
pantalla, lo que permite mantener fcilmente la alineacin vertical cuando se
muestran caracteres semi-grficos.

Segn el entorno, el buffer de pantalla puede ser directamente accesible, como


memoria convencional, para los programas locales. Los programas que muestran
salidas en una terminal remota deben enviar secuencias de control especiales para
manipular el buffer de pantalla. Los estndares ms populares de dichas secuencias
de control son ANSI y VT100. Los programas que acceder al buffer de pantalla
mediante secuencias de control pueden perder la sincronizacin con la pantalla real,
por lo que muchos programas en modo texto tienen un comando para refrescar
toda la pantalla, a menudo asociado con la combinacin de teclas Ctrl+L.

La distincin entre los programas en modo texto y grfico puede a veces ser difusa,
especialmente en ordenadores con tarjetas VGA, debido a que muchos programas
en modo texto recientes llevaron al extremo las posibilidades de dicho hardware
manipulando la controladora de vdeo. Por ejemplo, redefinan el juego de
caracteres para crear caracteres semi-grficos a medida, e incluso simulaban un
curso de ratn grfico redefiniendo la apariencia de los caracteres sobre los que
dicho cursor quedaba en cada momento. Tambin pueden usarse estas tcnicas
para videojuegos 2D que necesiten aprovechar la mayor velocidad de manipulacin
de los modos de texto respecto a los grficos. Muchos programas modernos con
interfaz grfica simulan el estilo de los programas en modo texto, especialmente
cuando es importante preservar la alineacin vertical del texto, por ejemplo, durante
la programacin. Existen tambin componentes software que emulan modos de
texto, tales como los emuladores de terminal o la consola de Windows.
Bfer de vdeo. Fsicamente se encuentra ubicada en la tarjeta de vdeo, pero forma
parte de la memoria RAM del PC, aunque su acceso es mucho ms lento que sta.
Aqu se almacenan los datos que posteriormente sern visualizados en el monitor.

En la memoria RAM de vdeo en modo texto, dada una pgina determinada, la


primera posicin la ocupa el primer carcter de la primera posicin de la pantalla
(esquina superior izquierda: fila 0, columna 0), a continuacin, viene el byte del
atributo, luego el siguiente carcter de la lnea seguido de su byte de atributo y as
sucesivamente. Cuando termina la primera lnea el siguiente carcter se
corresponde con la primera posicin a la izquierda de la siguiente fila y as
sucesivamente. Podramos calcular la posicin en memoria de vdeo RAM de
cualquier posicin de la pantalla mediante la siguiente frmula:
Posicin en memoria = Lnea * 160 + Columna * 2.
En el modo de texto slo se puede trabajar con los 256 (de 0 a 255) caracteres
ASCII que podemos ver en el Apndice A, cada carcter ocupa una columna de las
80 que caben en cada una de las 25 filas posibles. Un pixel en modo grfico es el
menor puntito que podemos iluminar en la pantalla, en el modo 13h es de 320
puntitos por cada una de las 200 lneas posibles. En ambos casos empezamos a
contar desde la esquina superior izquierda, avanzando hacia la derecha y cuando
llegamos al extremo derecho bajamos a la fila inmediatamente inferior en su
extremo izquierdo.
4.1.1 Escritura directa en el buffer de video
El bfer de vdeo se encuentra localizado en la posicin de memoria B800:0000
para tarjetas en color y en B000:0000 para tarjetas monocromo. De tal modo que
podemos escribir directamente aqu sin usar las interrupciones BIOS o DOS para
conseguir su salida a pantalla.

La ventaja que obtenemos escribiendo directamente en la memoria de vdeo es


mucha mayor rapidez, puesto que las interrupciones son muy lentas, en cuanto a
un programa crtico en tiempo, como puede ser un juego.
Por contra saltarse el mtodo estndar, como son las interrupciones, supone un
riesgo de encontrarse un hardware que no soporte nuestro mtodo de acceso a la
memoria de vdeo, en este caso los resultados pueden ser impredecibles.
4.1.2 Ejemplos en modo texto
Copper bars: Son unas barras que se mueven por la pantalla, incluso sobre el texto.
Para ello modificaremos el color 0 (negro) desde que termina un barrido horizontal
y antes de empezar el siguiente, de esta forma no notaremos ninguna interferencia
en la pantalla. Este efecto no funciona bien en modo texto en la ventana MSDOS
de mi Windows XP, pero s en el del Windows 98, por ejemplo (podremos verlo en
Windows XP cambiando a modo grfico con MOV AH, 13h Int 10h). Para poderlos
ver de forma correcta es necesario ejecutarlos a pantalla completa (Alt+Intro) sobre
la ventana del MS-DOS.
Existen dos formas bsicas de mover las barras: mediante un contador o siguiendo
una matriz de datos correspondiente a la funcin seno, ello es debido a la que la
funcin seno es cclica "sube y baja". (Abre los ojos al ensamblador, s.f.)
4.2 Acceso a disco en lenguaje ensamblador
En un ordenador slo es posible trabajar directamente con los datos de la memoria
RAM. Pero la memoria RAM es voltil, es decir, pierde su contenido cuando se
apaga el ordenador. Por este motivo, para conservar datos de manera permanente
se utilizan dispositivos de almacenamiento tales como disquetes o discos duros. En
cualquier caso, cabe distinguir tres elementos:
Unidad de Disco. Dispositivo mecnico formado por una pila de uno o ms
discos (plato), que rotan sobre un eje, y dos o ms cabezas de
lectura/escritura cuya misin es leer y escribir la informacin en el disco. En
las unidades de disquetes el plato comienza a girar cada vez que se accede
al disquete, mientras que en las unidades de disco duro el movimiento
giratorio es constante durante todo el tiempo que est encendido el
ordenador. El plato de un disco duro gira a una velocidad de entre 3.600 y
5.400 r.p.m.

Controlador de Disco. Dispositivo electrnico que establece la conexin entre


el procesador y el disco. Por una parte, enlaza fsicamente la unidad de disco
con el bus de datos (camino por el que fluyen los datos dentro del ordenador).
Y, por otro lado, transforma las peticiones del sistema operativo en
instrucciones especiales que actan directamente sobre la unidad de disco.

Disco. Dispositivo magntico que almacena la informacin. Normalmente, los


discos se componen de una superficie circular plana de plstico (disquete) o
metal (disco duro) recubierta de algn xido magnetizable. La informacin se
graba sobre el disco mediante alteraciones de su superficie con un campo
magntico.
4.2.1 Particiones del DOS
Para usar un disco duro primero hay que hacer una particin (FDISK) y a
continuacin dar formato a cada una de las particiones (FORMAT). Bajo DOS, un
disco duro puede tener dos particiones, una particin primaria y una particin
extendida.
La particin primaria es imprescindible y designa la particin en la cual se
almacenan los ficheros de arranque del sistema. La particin primaria es la
particin activa.
La particin extendida puede dividirse a su vez en varias unidades lgicas.
Una particin extendida slo puede crearse cuando ya existe una particin
primaria. (wikipedia, s.f.)
4.2.2 Parmetros absolutos de un disco duro
Para acceder a los parmetros del disco duro, independientemente del nmero de
las particiones, hay que obtener el contenido de la palabra doble de memoria situada
en la direccin 0000:0104 que contiene la direccin donde se guarda una tabla de
16 bytes con los parmetros absolutos de la primera unidad de disco duro.

Si se trata de una particin extendida, los datos de la entrada corresponden al total


de las unidades lgicas que almacena. La particin extendida posee su propia tabla
de particiones, pero slo se usan las dos primeras entradas. La primera entrada
corresponde a la primera unidad lgica de la particin extendida, y la segunda indica
si hay otra unidad lgica. En caso afirmativo, sta contiene de nuevo una tabla de
particiones.
Con ello se crea una especie de lista enlazada que permite acceder a la informacin
de las diferentes particiones. (Prezi, s.f.)
4.2.3 Acceso a dispositivos de almacenamiento
Un dispositivo de almacenamiento de acceso directo, es cualquier tipo de
dispositivos de almacenamiento secundario que tiene un tiempo de acceso bajo en
proporcin a su capacidad.
Un disco es una superficie plana, magntica dividida en crculos concntricos a los
cuales se les llama Tracks (pistas), adems de tener 2 lados, cabe mencionar que
los primeros discos nicamente tenan 1 sola cara. Cada track est dividido en
sectores, los cuales almacenan un determinado nmero de bytes.
Las unidades de disco, son dispositivos capaces de leer o escribir en un disco para
eso tiene una cabeza lectora quien realiza una operacin de moverse al track
deseado (Seek Time), y luego espera por el sector seleccionado (Latency Time).
(Blogspot, s.f.)
4.2.3 Acceso a disco usando lenguaje ensamblador
Para leer o escribir en un disco, no se realiza byte a byte, sino ms bien en bloque
de bytes, debido a que el acceso a disco implica movimientos mecnicos adems
de que el acceso se da por sectores; en este proceso no intervienen el CPU, puesto
que solo enva los comandos a la interface que maneja la unidad de disco y est es
la que se encarga de leer o escribir informacin de un rea en especial de memoria,
llamada DMA; en este proceso es conocido acceso directo a memoria.
Rutinas que permiten lectura y escritura absoluta de sectores, as como la
determinacin del espacio libre disponible en un disco.
Rutina_AbsolutedRead: Transfiere el
contenido de uno o ms sectores del disco al
buffer especificado, teniendo acceso
directamente a los sectores lgicos. En caso
de error, se enciende el bit de acarreo y AX
contiene el cdigo del error.
Rutina_AbsoluteWrite: Transfiere el contenido del buffer especificado a uno o ms
sectores de disco, teniendo acceso directamente a los sectores lgicos. En caso de
error, se enciende el bit de acarreo y AX contiene el cdigo del error.

Rutina_FreeDiskSpace: Devuelven
en DX:AX el espacio libre en disco (en
Kb). En caso de error, se enciende el
bit de acarreo. (Scribd, s.f.)
4.3 Puerto
Es una interfaz a travs de la cual se pueden enviar y recibir los diferentes tipos de
datos.
La interfaz puede ser de tipo fsica (hardware) o puede ser a nivel lgico o de
software, en cuyo caso se usa frecuentemente el trmino puerto lgico (por ejemplo,
los puertos de redes que permiten la transmisin de datos entre diferentes
computadoras).
Se denomina puerto lgico a una zona o localizacin de la memoria de acceso
aleatorio (RAM) de la computadora que se asocia con un puerto fsico o un canal de
comunicacin, y que proporciona un espacio para el almacenamiento temporal de
la informacin que se va a transferir entre la localizacin de memoria y el canal de
comunicacin. (wikipedia, s.f.)

4.3.1 Puerto Fsico


Un puerto Fsico es una conexin o un enchufe -los fsicos- el cual es utilizado para
conectar dispositivo de Hardware como impresoras o Mouse, permitiendo el
intercambio de datos con otro dispositivo.

Los puertos fsicos ms comunes, utilizados o conocidos son:


1. Puertos Serie: Slo pueden transmitir un dato a la vez, por lo que son lentos
y se utilizan para mdems externos, ratones etc.;
2. Puertos Paralelo: Son ms rpidos que el puerto serie (donde 8 bits de
datos, forman un byte, y se envan simultneamente sobre ocho lneas
individuales en un solo cable.) Suelen utilizarse para conectar escner e
impresora;
3. Puertos USB (Universal Serial Bus): Creado a principio de 1996. La
velocidad de transferencia muy alta, y adems permiten conectar y
desconectarlos sin necesidad de apagar el ordenador. Hay dos tipos
diferenciados por la velocidad: USB 1 y USB 2;
4. Puertos Firewire: Similares a los USB 2, un poco ms rpidos. Suelen
utilizarse en videocmaras digitales;
5. Puerto RCA es un tipo de conector elctrico comn en el mercado
audiovisual;
6. Conector de Video VGA: El equipo utiliza un conector D sub-miniatura de
alta densidad de 15 patas en el panel posterior para conectar al equipo un
monitor compatible con el estndar VGA (Video Graphics Arry);
7. Puertos RJ-11: Es un conector utilizado por lo general en los sistemas
telefnicos y es el que se utiliza para conectar el MODEM a la lnea telefnica
de manera que las computadoras puedan tener acceso a Internet;
8. Puertos RJ-45: Es una interfaz fsica utilizada comnmente en las redes de
computadoras, sus siglas corresponden a "Registered Jack" o "Clavija
Registrada";
9. PCI (Peripheral Component Interconnect) son ranuras de expansin de la
placa madre de un ordenador en las que se pueden conectar tarjetas de
sonido, de vdeo, de red, etc;
10. PCI-Express: Nuevas mejoras para la especificacin PCIe 3.0 que incluye
una cantidad de optimizaciones para aumentar la seal y la integridad de los
datos, incluyendo control de transmisin y recepcin de archivos;
11. Puertos de Memoria: A estos puertos se conectan las tarjetas de memoria
RAM. Los puertos de memoria son aquellos puertos, o bahas, donde se
pueden insertar nuevas tarjetas de memoria, con la finalidad de extender la
capacidad de la misma;
12. Puertos Inalmbricos: Las conexiones en este tipo de puertos se hacen, sin
necesidad de cables, a travs de la conexin entre un emisor y un receptor
utilizando ondas electromagnticas (infrarrojos, bluetooth).
4.3.2 Puerto Lgico
El Puerto Lgico es una zona, o localizacin, de la memoria de un ordenador que
se asocia con un puerto fsico o con un canal de comunicacin, y que proporciona
un espacio para el almacenamiento temporal de la informacin que se va a transferir
entre la localizacin de memoria y el canal de comunicacin. Un puerto lgico es
una salida de bits, que pueden ser 1 o 0, o sea, un puerto es el valor que se usa en
el modelo de la capa de transporte para distinguir entre las mltiples aplicaciones
que se pueden conectar al mismo host, o puesto. Entonces un puerto lgico de
internet es una interface de software que permitir el ingreso y salida de data por
aplicaciones que usan Internet. Los puertos se identifican por nmeros desde 1
hasta 65.000 pudiendo llegar a mas, siendo conocidos los puertos de 1 a 1024
como:
HTTP puerto 80 transferencia de hipertexto por internet
FTP puerto 20 transferencia de data (mp3, documentos, etc.)
HTTPS puerto 443 transferencia segura
SMTP puerto 25 correo electrnico
Del 1025 para arriba son desconocidos, algunos TROYANOS y otras
aplicaciones inocuas.
Los puertos lgicos son, al igual que los puertos fsicos, necesarios para que
nuestros programas puedan comunicarse con el exterior. La diferencia es que se
enlazan virtualmente en nuestra conexin TCP con los programas, para tener una
referencia, y que los otros programas puedan conectarse a los nuestros y traspasar
informacin. Por ejemplo, podemos decir que el servidor web suele estar enlazado
(escuchando) en el puerto 80, o que nuestro navegador, sale por el puerto 4000
para conectarse a este servidor. El servicio RPC (remote procedure call) escucha
en los sistemas XP por el puerto 135, pero resulta que a ese puerto se conectaba
el virus Blaster para infectar todo el Windows que encontraba a su paso. (cruz, 2012)

4.4 Programacin del puerto serial


Puerto: Es un conjunto de lneas (interfaz) que puede utilizar el CPU para
intercambiar informacin con otros dispositivos.

Puerto Serie: Transmite un bit a la vez, e.g. RS-232. Un puerto serie o puerto serial
es una interfaz de comunicaciones de datos digitales, frecuentemente utilizado por
computadoras y perifricos, donde la informacin es transmitida bit a bit enviando
un solo bit a la vez, en contraste con el puerto paralelo que enva varios bits
simultneamente.

El canal serie del PC es uno de los recursos ms comunes para la conexin de


perifricos como pueden ser dispositivos de puntero (mouse) o de comunicacin
(modem, cables de conexin entre PCs).
Configuracin del puerto serie.

Cada uno de los puertos COM tiene 7 registros a comentar:

Registro base+0: tiene 3 funciones

Transmitter Hlding Register (THR); Su funcin es la de transmitir un dato


(palabra) por el Puerto.
Reciver Data Register (RDR): Su funcin es la de recibir un dato (palabra)
del puerto.
Baud Rate Divisor Low (BRDL): Velocidad del canal, parte baja.

Registro base+1: Tiene 2 funciones

Baud Rate Divisor High (BRDH): Velocidad del canal, parte alta.
Interrupt Enable Register (IER): Activar o desactivar las interrupciones para
el puerto COM.

Registro base+2:

Interrupt ID Register (IIR): Controla la prioridad de las interrupciones.


Registro Base+3:
Line Control Register (LCR): Controla los parmetros de configuracin del
canal serie (velocidad).

Registro base+4:

Modem Control Register (MCR): Activa las seales del MODEM.

Registro base+5:

Line Status Register (MSR): Muestra el estado del modem.

Registro base+6:
Modem Status Register (MSR): Muestra el estado del Modem.

Debemos configurar correctamente el puerto serial antes de trabajar con l. Y para


configurarlo hacemos lo siguiente:
Primero configuramos el LCR, pero poniendo el bit DLAB a 1. Luego configuro el
DRDL, seguidamente el BRDH y finalmente vuelvo a configurar el LCR con los
mismos bits que antes, pero esta vez el bit DLAB a 0.
4.4.1 Estndar RS 232
El puerto serie RS-232C, presente en todos los ordenadores actuales, es la forma
ms comnmente usada para realizar transmisiones de datos entre ordenadores.
El RS-232C es un estndar que constituye la tercera revisin de la antigua norma
RS-232, propuesta por la EIA (Asociacin de Industrias Electrnicas), realizndose
posteriormente una versin internacional por el CCITT, conocida como V.24. Las
diferencias entre ambas son mnimas, por lo que a veces se habla indistintamente
de V.24 y de RS-232C (incluso sin el sufijo "C"), refirindose siempre al mismo
estndar.
El RS-232C consiste en un conector tipo DB-25 de 25 pines, aunque es normal
encontrar la versin de 9 pines DB-9, ms barato e incluso ms extendido para
cierto tipo de perifricos (como el ratn serie del PC). En cualquier caso, los PCs no
suelen emplear ms de 9 pines en el conector DB-25. Las seales con las que
trabaja este puerto serie son digitales, de +12V (0 lgico) y -12V (1 lgico), para la
entrada y salida de datos, y a la inversa en las seales de control. El estado de
reposo en la entrada y salida de datos es -12V. Dependiendo de la velocidad de
transmisin empleada, es posible tener cables de hasta 15 metros.
Cada pin puede ser de entrada o de salida, teniendo una funcin especfica cada
uno de ellos. Las ms importantes son:

Pin Funcin
TXD (Transmitir Datos)
RXD (Recibir Datos)
DTR (Terminal de Datos Listo)
DSR (Equipo de Datos Listo)
RTS (Solicitud de Envo)
CTS (Libre para Envo)
DCD (Deteccin de Portadora)

Las seales TXD, DTR y RTS son de salida, mientras que RXD, DSR, CTS y DCD
son de entrada. La masa de referencia para todas las seales es SG (Tierra de
Seal). Finalmente, existen otras seales como RI (Indicador de Llamada), y otras
poco comunes que no se explican en este artculo por rebasar el alcance del mismo.
Numero de Pin Seal Descripcin E/S
En DB-25 En DB-9
1 1 - Masa chasis -
2 3 TxD Transmit Data S
3 2 RxD Receive Data E
4 7 RTS Request To Send S
5 8 CTS Clear To Send E
6 6 DSR Data Set Ready E
7 5 SG Signal Ground -
8 1 CD/DCD (Data) Carrier Detect E
15 - TxC(*) Transmit Clock S
17 - RxC(*) Receive Clock E
20 4 DTR Data Terminal Ready S
22 9 RI Ring Indicator E
24 - RTxC(*) Transmit/Receive Clock S

4.4.2 Tipos de conectores y cables


Un cable serie es un cable utiliza para transferir informacin entre dos dispositivos
que utilizan un protocolo de comunicacin serie. La forma de conectores depende
del tipo de puerto serie usado en particular. Un cable de conexin para la conexin
de dos DTE conectados directamente se conoce como cable mdem nulo. Cada
extremo del cable se puede conectar a un solo dispositivo. Es un cable que es barato
de compra y fcil de instalar y conectar.
El puerto serial cuenta con 9 contactos tipo pin; se muestran las lneas elctricas y
su descripcin bsica.
Se pueden encontrar algunos dispositivos externos e incluso computadoras que
tienen un puerto serial diferente al comn de 9 pines. Este puerto serial consta de
25 pines, es tipo macho y se utiliza con frecuencia acompaado de un adaptador
para poder ser utilizado con conectores de 9 pines. (htt23)

4.4.3 Explicacin de los registros


LCR: Con este registro definimos (configuramos) los parmetros de la comunicacin
serie.
DLAB es el bit de ms peso y Num (1) el de menos peso.

Stop: Indica el nmero de bits de stop que enviar (o esperar) del puerto. Lo
normal es poner un 0 en este bit para conseguir un bit de stop. Pero si ponemos un
1, el canal usar 1.5 bits de stop si el nmero de bits de la palabra (configurada en
Nm.) es de 5. En caso de que sean ms de 5, se usaran 2 stop bits. Puede que en
determinados momentos nos sea de utilidad, pero yo lo nico que veo es que enva
10 bits en lugar de 9, cosa que implica ms tiempo en l envi, as que siempre
ponemos un 0 (1 stop bit).
Paridad: Indica si hay paridad en la comunicacin serial. Con un 0 le diremos que
nos queremos paridad, y con un 1 que s. La paridad es una manera de detectar
errores, pero debemos programar nuestro programa para que lo detecte. As que
de momento ponemos un 0.
Tipo: Este bit nos indicar el tipo de paridad que vamos a usar. Con un 0 le
indicaremos que vamos a mirar la paridad de modo impar, mientras que con 1
miraremos la paridad de modo par.
Stick: Indica el nivel que usaremos para la paridad, si ponemos un 0, contaremos
el nmero de 1 para la paridad. Y si ponemos un 1 contaremos el nmero de 0 para
la paridad.
Break: Fuerza un corte de la comunicacin. Si lo dejamos a 0 no pasar nada, pero
si lo ponemos a i cortamos la comunicacin y forzamos la salida a 0.
DLAB: Bit interno, de uso no es decisivo. Lo que hace es configurar una vez el
puerto poniendo a 1 este bit, configurar la velocidad (los 2 registros) y luego volver
a configurar el puerto poniendo un 0. (El oraculo, s.f.)

4.4.4 Abrir un canal asociado a un puerto serie


Lo primero que necesitamos es un fichero asociado a nuestro puerto serie. Para eso
usaremos la funcin del API CreateFile. CreateFile es una funcin con muchas
opciones y que sirve para muchas cosas, pero ahora nos centraremos en el puerto
serie.
Veremos ahora los valores posibles de los siete parmetros que necesita esta
funcin:
1. LPCTSTR lpFileName: Nombre del fichero. Se trata de una cadena que
contiene el nombre del puerto que queremos abrir. Los valores posibles son
"COM1", "COM2", "COM3" y "COM4".
2. DWORD dwDesiredAccess: Tipo de acceso. En general querremos leer y
escribir en el puerto, por lo tanto, especificaremos los valores
GENERIC_READ | GENERIC_WRITE.
3. DWORD dwShareMode: modo en que se comparte el fichero. En nuestro
caso, un puerto serie no puede ser compartido, de modo que usaremos 0
para este parmetro.
4. LPSECURITY_ATTRIBUTES lpSecurityAttributes: Atributos de seguridad,
especifican el modo en que el fichero se puede heredar por procesos hijos.
En nuestro caso no queremos que eso ocurra, de modo que usamos el valor
NULL.
5. DWORD dwCreationDistribution: modo de creacin. Los puertos serie son
dispositivos fsicos, por lo tanto, existen. El modo de creacin ser
OPEN_EXISTING.
6. DWORD dwFlagsAndAttributes: Atributos del fichero. Por ahora no nos
interesa ninguno de estos atributos, usaremos el valor 0.
7. HANDLE hTemplateFile: Plantilla de fichero. Se puede especificar un fichero
existente del cual se copirarn los atributos. En nuestro caso no usaremos
esta opcin, y usaremos el valor NULL para este parmetro.
idComDev = CreateFile("COM1", GENERIC_READ | GENERIC_WRITE,
0, NULL, OPEN_EXISTING, 0, NULL);
(Articulos con clase, s.f.)
4.4.5 Modificar los parmetros de transmisin
Empezaremos por definir el tamao de los buffers de entrada y salida para el
puerto serie. Para ello usaremos la funcin SetupComm, usando como primer
parmetro el manipulador del puerto obtenido de CreateFile, como segundo el
tamao del buffer de entrada y para el tercero, el tamao del buffer de salida:

// Iniciar parmetros de comunicacin


if(!SetupComm(idComDev, 1024, 1024)) {
return false;
}

En general, necesitaremos establecer los parmetros de la lnea serie que vamos a


usar. Tendremos que fijar la velocidad de transmisin, el nmero de bits de datos,
la paridad, y los bits de stop. Y a veces algunos parmetros ms.
Para hacer esto, primero recuperaremos los parmetros del canal que acabamos
de abrir, los modificaremos y actualizaremos la configuracin del canal.
Para recuperar los parmetros usaremos la funcin GetCommState. Esta funcin
nos devuelve una estructura DCB, que contiene la configuracin actual del puerto
serie.
fSuccess = GetCommState(idComDev, &dcb);

De todos los valores que incluye la estructura DCB, de momento slo nos
preocuparemos por unos pocos:
1. DWORD BaudRate: velocidad en baudios. Este parmetro puede tener
los siguientes valores: CBR_110, CBR_300, CBR_600, CBR_1200,
CBR_2400, CBR_4800, CBR_9600, CBR_14400, CBR_19200,
CBR_38400, CBR_56000, CBR_57600, CBR_115200, CBR_128000 y
CBR_256000.
2. BYTE ByteSize: tamao de los datos en bits. Tradicionalmente 7 u 8.
3. BYTE Parity: valor de paridad. Se admiten los valores EVENPARITY,
para paridad par; MARKPARITY; NOPARITY, para no paridad y
ODDPARITY, para paridad impar.
4. BYTE StopBits: Bits de stop. Admite los valores ONESTOPBIT, 1 bit de
stop; ONE5STOPBITS, 1.5 bits de stop y TWOSTOPBITS, 2 bits de stop.
5. DWORD fBinary:1 Una bandera, en un campo de bits, que indica el
modo de transmisin: binario o texto. 1 para modo binario, 0 para modo
texto. La diferencia es que en modo texto se verifica la recepcin del
carcter EOF, que detiene la transmisin.
6. DWORD fAbortOnError:1 Otra bandera que indica si interrumpe la
transmisin o recepcin en caso de error. 1 para interrumpir, 0 para no
interrumpir.
Una vez que hemos actualizado la estructura de datos podemos configurar el puerto
envindosela mediante la funcin SetCommState.
m_dcb.BaudRate = CBR_115200;
m_dcb.ByteSize = 8;
m_dcb.Parity = NOPARITY;
m_dcb.StopBits = ONESTOPBIT;
m_dcb.fBinary = FALSE;
m_dcb.fAbortOnError = TRUE;

SetCommState(idComDev, &dcb);

Por ltimo, podemos modificar los timeouts. Se trata de unos intervalos de tiempo
definidos para que las rutinas de lectura y escritura distingan entre diferentes
paquetes de datos.
Generalmente, las comunicaciones por el puerto serie se harn por bloques, de los
que no siempre conoceremos el tamao. Estos tiempos nos permiten detectar
divisiones entre bloques, de modo que el API las detecta y pone a nuestra
disposicin la informacin leda.
El sistema calcula dos tiempos, uno para lectura y otro para escritura, en funcin de
ciertos parmetros (que veremos ahora como fijar), y de los caracteres requeridos
o escritos.
Estos tiempos se definen en una estructura COMMTIMEOUTS, y se puede ver el
uso de cada campo en la descripcin de ella.
La eleccin de los tiempos y la necesidad de modificarlos depender del tipo de
comunicacin serie que necesitemos para nuestra aplicacin. Estos tiempos harn
que las operaciones de lectura y escritura puedan terminar antes de que se haya
completado las funciones de lectura o escritura, para los datos indicados. Su uso
es, de todos modos, opcional.
Para modificarlos usaremos la funcin GetCommTimeouts para obtener los
timeouts actuales en una estructura COMMTIMEOUTS. Modificaremos esos
tiempos a nuestro criterior, y los activaremos usando la funcin SetCommTimeouts.
// Leer time-outs actuales:
GetCommTimeouts (hComm, &m_CommTimeouts));

// Nuevos valores de timeout:


m_CommTimeouts.ReadIntervalTimeout = 50;
m_CommTimeouts.ReadTotalTimeoutConstant = 50;
m_CommTimeouts.ReadTotalTimeoutMultiplier = 10;
m_CommTimeouts.WriteTotalTimeoutConstant = 50;
m_CommTimeouts.WriteTotalTimeoutMultiplier = 10;

// Establecer timeouts:
SetCommTimeouts (hComm, &m_CommTimeouts));
(Articulos con clase, s.f.)
4.4.6 Monitorizacin de eventos
Podemos especificar qu eventos de los que se pueden producir en el puerto serie
nos interesa procesar o monitorizar. De este modo, el sistema operativo nos
avisar cada vez que se produzca uno de esos eventos.
El modo de especificar los eventos de inters es mediante una mscara, y para
hacerlo usaremos la funcin SetCommMask.
Se pueden especificar varios eventos, pero generalmente nos interesaran slo dos
de ellos, al menos en la aplicacin normal:
1. EV_RXCHAR: se ha recibido un carcter y se a colocado en el buffer de
entrada.
2. EV_TXEMPTY: de ha enviado el ltimo carcter del buffer de salida.
4.4.7 Escribir en el puerto serie
Para enviar caracteres al puerto serie se usa la funcin WriteFile.
Sin embargo, como ya hemos explicado, no basta con enviar los caracteres al
puerto serie, el destinatario puede interrumpir la transmisin si no es capaz de
procesar los datos a la misma velocidad que se los enviamos, de modo que los
datos que intentamos enviar pueden no ser enviados por completo.
Para estar seguros de que enviamos toda la informacin que queremos, usaremos
uno de los parmetros que devuelve la funcin, y que nos dice cuntos caracteres
se han enviado.
Colocando la funcin WriteFile en un bucle, podemos enviar los caracteres que an
estn pendientes hasta que todos hayan sido enviados.
WriteFile puede retornar con valor false si se ha producido un error. Sin embargo,
uno de los errores no es tal, el error ERROR_IO_PENDING en realidad slo nos
informa de que no se ha completado la operacin de escritura. En caso de recibir
ese error, debemos continuar enviado datos al puerto serie.
Si estamos seguros de que el receptor puede procesar los datos enviados, o si
hemos diseado un mecanismo para que el receptor nos informe de que los datos
no han llegado correctamente, podemos ignorar el valor de retorno y el
de iBytesWritten de la funcin WriteFile, y continuar asumiendo que los datos fueron
enviados.
void EscribirSerie(HANDLE idComDev, char *buf)
{
char oBuffer[256]; /* Buffer de salida */
DWORD iBytesWritten;

iBytesWritten = 0;
strcpy(oBuffer, buf);
WriteFile(idComDev, oBuffer, strlen(oBuffer), &iBytesWritten, NULL);
}

En la mayor parte de los casos, y sobre todo cuando somos los responsables de
programar los dos extremos de la comunicacin serie, este modo de trabajar puede
ser suficiente.
Si, por el contrario, el otro extremo de la comunicacin no es responsabilidad
nuestra, puede que debamos depurar algo ms esta funcin.
Podemos usar el valor del parmetro iBytesWriten posterior a la ejecucin para
actualizar el buffer de salida. Indicaremos algn valor de retorno
en EscribirSerie para indicar que la operacin de escritura no ha enviado todos los
caracteres del buffer, y el proceso que la ha invocado debe llamar de nuevo para
completar la transmisin. (Articulos con clase, s.f.)

4.4.8 Esperar a que haya algo que leer


Por la misma naturaleza de las transmisiones, y debido a que nuestro ordenador
normalmente ser muy rpido en comparacin con las velocidades de transmisin,
la mayor parte del tiempo no estaremos recibiendo nada por el puerto serie.

Ya hemos definido la mscara de eventos que queremos recibir del puerto serie.
Para saber si se ha producido uno de esos eventos tenemos que llamar a la funcin
WaitCommEvent.

Pero, tal como hemos configurado el puerto serie, esta funcin no regresa mientras
no se produzca uno de los eventos que hemos definido. Esto nos impide que nuestro
programa realice otras tareas, como, por ejemplo, enviar informacin al puerto.

Necesitamos un mecanismo que avise a nuestro programa cuando existan datos


para leer, pero no debemos bloquear el sistema preguntando constantemente si hay
algo preparado. Ni siquiera debemos bloquear nuestro programa, a menudo hay
otras cosas que hacer adems de esperar la llegada de nueva informacin.
La mejor forma es introducir la funcin WaitCommEvent en un hilo distinto del de
nuestro programa principal. Podemos hacer que ese hilo espere a que se produzca
un evento, y cuando eso ocurra, que lo procese.

En nuestro caso, slo se puede producir un evento, de modo que una funcin
posible para procesarlo es:

// Hilo de escucha del puerto serie:


DWORD Hilo(LPDWORD lpdwParam)
{
DWORD dwEvtMask;
do {
if(WaitCommEvent(idComDev, &dwEvtMask, NULL))
if(dwEvtMask & EV_RXCHAR) LeeSerie();
} while(true);
return 0;
}
Esta funcin coloca la funcin WaitCommEvent en un bucle infinito, y cuando
detecta el evento EV_RXCHAR, hace una llamada a la funcin LeeSerie(), que
procesa los datos recibidos.
Por supuesto, en algn lugar del programa, debemos lanzar el hilo, esto se hace
con la funcin CreateThread.
hHilo = CreateThread(NULL, 0, Hilo, &param, 0, &id);

4.4.9 Leer desde el puerto serie


Por la misma naturaleza de las transmisiones, y debido a que nuestro ordenador
normalmente ser muy rpido en comparacin con las velocidades de transmisin,
la mayor parte del tiempo no estaremos recibiendo nada por el puerto serie.
Necesitamos un mecanismo que avise a nuestro programa cuando existan datos
para leer, pero no debemos bloquear el sistema preguntando constantemente si hay
algo preparado. Ni siquiera debemos bloquear nuestro programa, a menudo hay
otras cosas que hacer adems de esperar la llegada de nueva informacin.
La mejor forma es introducir crear un hilo distinto del de nuestro programa principal.
Podemos hacer que ese hilo espere a que haya datos para leer, y cuando eso
ocurra, que lo procese.
Lo siguiente que necesitamos saber es cuantos caracteres hay en el buffer de
entrada. Para esas dos necesidades podemos usar la funcin ClearCommError.
Esta funcin nos actualiza una estructura COMSTAT, uno de cuyos miembros
es cbInQue, que nos dice cuntos caracteres hay en el buffer de entrada. Si no hay
ninguno, no hay nada que hacer, si hay caracteres en el buffer, los leemos y
procesamos.
Con ese dato podemos llamar a la funcin ReadFile, y leer todos los caracteres que
haya en el buffer.
// Creamos el hilo:
hHilo = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)Hilo,
(LPDWORD)&idComDev, 0, &id);
...

// Hilo de escucha del puerto serie:


DWORD Hilo(LPDWORD lpdwParam)
{
DWORD leidos;
COMSTAT cs;
char *cad;
HANDLE idComDev = *((HANDLE*)lpdwParam);

do {
ClearCommError(idComDev, &leidos, &cs);
leidos=0;
/* Leer buffer desde puerto serie */
if(cs.cbInQue) {
cad = new char[cs.cbInQue+3]; // Caracteres en buffer, ms retorno de
lnea, ms nulo
ReadFile(idComDev, cad, cs.cbInQue, &leidos, NULL);
ProcesarDatos(cad);
delete[] cad;
}
Sleep(100); // Esperar entre una lectura y otra.
} while(true);
return 0;
}
El tiempo de espera en la funcin Sleep est elegido arbitrariamente, se puede
indicar un tiempo menor, si se necesita una respuesta ms rpida por parte del
programa. Sin embargo, siempre es necesario dejar algn tiempo, para no
sobrecargar la CPU excesivamente.

4.5 Programacin del puerto paralelo


Puerto Paralelo: Transmite ms de un bit a la vez, e.g. 8-bits.
Originalmente, el puerto paralelo de la PC, fue pensado para conectar impresoras,
pero puede ser usado para manejar dispositivos en general. Las 12 salidas TTL (0-
5v) usan latches internos y pueden programarse va instrucciones IN/OUT del CPU.
El puerto paralelo de una PC es ideal para ser usado como herramienta de control
de motores, LED's, etc. El mismo posee un bus de datos de 8 bits (Pin 2 a 9) y
muchas seales de control, algunas de salida y otras de entrada que tambin
pueden ser usadas fcilmente.
Las PC's generalmente poseen solo uno de estos puertos (LPT1) pero se le puede
adicionar una tarjeta con un segundo puerto paralelo (LPT2). En reglas generales
la direccin hexadecimal del puerto LPT1 es igual a 0x378 (888 en decimal) y 0x278
(632 en decimal) para el LPT2. Esto se puede verificar fcilmente en el setup de la
PC.
Las 5 entradas son "steady-state input points" y pueden programarse va
instrucciones IN del CPU, las 3 direcciones del puerto (DATA, STATUS, CONTROL)
inician comnmente en la 378H (otras direcciones comunes son la 278H y 3BCH);
una de las lneas de entrada es adems una interrupcin (que puede habilitarse va
programa) y adems hay una lnea tipo "power-on reset"Buscando Direcciones del
Puerto Paralelo.
Normalmente la PC tiene definidos tres puertos paralelos de impresin: LPT1, LPT2
y LPT3:
LPT: En las localidades 0000:0408H a 0000:040DH de la PC se encuentran las
direcciones de cada puerto [5]
EJEMPLO: Sean los siguientes valores de una PC hipottica
Tabla 1. LPT1 se localiza en 378H, LPT2 en 278H y LPT3 no est presente.

Podemos localizar la direccin precisa de cada puerto paralelo en una PC de las


siguientes formas:
Desde DEBUG: Mediante el comando d 0:408 40d
Desde Windows: Inicio / Configuracin / Panel de Control / Sistema / Administrador
de Dispositivos / Puertos (COM y LPT) / Puerto de Impresora / Recursos.
Programando el Puerto Paralelo
Control de Impresora: Se envan datos comandos seguidos de una seal strobe
que ocasiona que la impresora lea el puerto y responda por las lneas de status
cuando est lista para recibir ms informacin (not bussy) en su defecto, indica si
hay algn error Opciones para Controlar el Puerto Paralelo [4]:
Acceso Directo: Usando ensamblador o un lenguaje de programacin, leyendo
variables del sistema, manipulando bits y leyendo/escribiendo puertos
Via BIOS: La INT 17H del BIOS provee 3 servicios: inicializar, imprimir y status (slo
trabajan para LPT1) Va DOS: La INT 21H servicio 05h escribe un carcter y el
servicio 40h que trabaja con archivos.
CODIGO

#include <stdio.h>

#include <unistd.h>

//asm/io.h es donde estn definidas las funciones ioperm() y


outb()

#include <asm/io.h>

/* Esta es la direccion ms frecuente para el puerto


paralelo*/

#define DATAPORT 0x378

int main()

//Obtenemos permiso de acceso para la direccion de DATAPORT


y

//las 2 siguientes

if (ioperm(DATAPORT, 3, 1)) {perror("ioperm"); return 1;}

//Entramos en un bucle infinito

while(1)

int input;
//Le pedimos al usuario que introduzca un nmero

printf("Introduce un nmero entre 0 y 255 (-1 para


salir)\n");

//Leemos el valor introducido y lo guardamos en "input"

scanf("%d", &amp;input);

//Si "input" vale "-1" salimos del bucle

if(input==-1) break;

//Si "input" no est entre "0" y "255" (y no era "-1" no


nos

//interesa, as que volvemos directamente al comienzo del


bucle

if(input < 0 || input > 255) continue;

//Si hemos llegado hasta aqui es que "input" vale entre


"0" y

//"255" y podemos sacarlo por el puerto paralelo

outb(input, DATAPORT);

//Antes de terminar el programa dejamos los permisos de


acceso

//a los puertos como estaban

if (ioperm(DATAPORT, 3, 0)) {perror("ioperm"); return 1;}

//El programa termina sin errores

return 0;}
La funcin ioperm() modifica los permisos de acceso a los puertos. Recibe tres
enteros: el primero le indica la direccin del primer puerto cuyos permisos queremos
modificar, el segundo es el nmero de puertos y el tercero debe ser 1 para conceder
el permiso y 0 para denegarlo. De esta manera, la sentencia ioperm(DATAPORT,
3, 1) asigna permiso a 3 puertos, esto es, al de datos, al de estado y al de control.
Al final del programa restablecemos el estado dejando todo como estaba con
ioperm(DATAPORT, 3, 0).

La funcin outb() se encarga de enviar un byte de datos a un determinado puerto.


Recibe dos enteros: el primero es el byte que se quiere enviar (debe estar entre 0 y
255) y el segundo es la direccin del puerto. La direccin del puerto de datos
paralelo, en la gran mayora de los ordenadores es, en hexadecimal, 0378. Esta
declaracin se encuentra al principio del listado en la variable DATAPORT con
#define DATAPORT 0x378. Para un segundo puerto paralelo sera 0x278 y para un
tercero 0x3BC. De todas maneras, se puede consultar la direccin de nuestro puerto
paralelo en la BIOS de la placa base. Ejecutando el programa podremos obtener
resultados como los de las dos imgenes siguientes. Por un lado (a la izquierda)
tenemos la salida del puerto de datos con el nmero 13 (00001101 en binario) y,
por otro (a la derecha), tenemos la salida del nmero 167 (10100111 en binario).
Como es el puerto de datos y los bits no estn invertidos, cada 1 se corresponder
con un led encendido y cada 0 un led apagado. (TeknoPLOF, s.f.)
4.5.1 Conector del puerto paralelo

El puerto paralelo de un PC posee un


conector de salida del tipo DB25 hembra cuyo
diagrama y seales utilizadas podemos ver
en la siguiente figura:
Caractersticas del puerto paralelo LPT
En el mbito de la electrnica comercial se le denomina como conector DB25 ("D-sub-
miniature type B, 25 pin"), esto es D-sub-miniatura tipo B, con 25 huecos para pines.
Se utilizaba principalmente para la conexin de impresoras, unidades de lectura para
discos ZIP y escneres.

Para conectar y desconectar los dispositivos, as como para que la computadora los
reconozca de manera correcta, es necesario apagar y reiniciar la computadora.

Modos del puerto paralelo LPT

a) Modo SPP: significa ("Standar Parallel Port") "puerto paralelo estndar". Es el


estndar con que se identific al puerto paralelo inicialmente, es el ms compatible y
actualmente este modo hay que activarlo desde el BIOS-SETUP de la computadora
para que el sistema reconozca impresoras antiguas. Permite una velocidad de
transferencia entre 150KiloBytes/segundo (KB/s) a 500 KB/s.

b) Modo EPP: significa ("Enhanced Parallel Port") su traduccin al espaol es puerto


paralelo mejorado. Se dise para leer y escribir a la velocidad del bus ISA alcanzando
velocidades de transferencia de hasta 1 MB/s. Permite la comunicacin bi-direccional
entre la computadora y el dispositivo (IEEE1284) y es compatible con SPP. Permite una
velocidad de transferencia entre 500 KiloBytes/segundo (KB/s) a 2 MegaBytes/segundo
(MB/s).

c) Modo ECP: significa ("Enhanced Capabilities Port") su traduccin al espaol es


puerto de capacidad mejorada. Posee capacidad DMA (Direct Memory Access)
capacidad directa para envo de datos hacia la memoria RAM, lo que reduce el tiempo
de respuesta; supera la transferencia de 1 MegaByte/segundo (MB/s) y permiten la
emulacin de otros modos cuando sea necesario. Permite la comunicacin bi-
direccional entre la computadora y el dispositivo (IEEE1284), adems es compatible
con SPP y EPP. (LPT)

4.6 Programacin hibrida


La programacin hibrida es utilizada en los casos en donde el cdigo en
ensamblador dificulta la estructuracin del programa. 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 escribir
programas ms rpidos y eficientes.
Las directivas de programacin hibrida son aquellas que nos permiten ejecutar los
comandos de ensamblador en un lenguaje de alto nivel.
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.
Directivas para compilacin hbrida: La compilacin hibrida es utilizada en lo que es
conocida como programacin hibrida (vlgase la redundancia). La programacin
hibrida es utilizada en los casos en donde el cdigo en ensamblador dificulta la
estructuracin del programa. 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 escribir programas ms rpidos y
eficientes. (hernandez, s.f.)

4.6.1 Operadores
Operadores Aritmticos: Pueden emplearse libremente (+), (-), (*) y (/). En este
ltimo caso la divisin es siempre entera. Tambin se admiten los operadores MOD
(resto de la divisin) y SHL/SHR (desplazar a la izquierda/derecha cierto nmero de
bits).

Operadores Lgicos:
Pueden ser el AND, OR, XOR y NOT. Realizan las operaciones lgicas en las
expresiones.

Operadores relacionales:

Devuelven condiciones de cierto (0FFFFh o 0FFh) o falso (0) evaluando una


expresin. Pueden ser: EQ (igual), NE (no igual), LT (menor que), GT (mayor que),
LE (menor o igual que), GE (mayor o igual que).

Operadores de retorno de valores:

Operador SEG: devuelve el valor del segmento de la variable o etiqueta, silo se


puede emplear en programas de tipo EXE:
Operador OFFSET: devuelve el desplazamiento de la variable o etiqueta en su
segmento:

Si se desea obtener el offset de una variable respecto al grupo (directiva GROUP)


de segmentos en que est definida y no respecto al segmento concreto en que est
definida:

Operador. TYPE: Devuelve el modo de la expresin indicada en un byte. El bit 0


indica modo relativo al cdigo y el 1 modo relativo a datos, si ambos bits estn
inactivos significa modo absoluto. El bit 5 indica si la expresin es local (0 si est
definida externamente o indefinida); el bit 7 indica si la expresin contiene una
referencia externa. El TASM utiliza tambin el bit 3 para indicar algo que
desconozco. Este operador es til sobre todo en las macros para determinar el tipo
de los parmetros:

Operador TYPE: devuelve el tamao (bytes) de la variable indicada. No valido en


variables DUP:

Operadores MASK y WIDTH: Informan de los campos de un registro de bits (base


RECORD).

Operadores de Atributos:

Operador PTR: redefine el atributo de tipo (BYTE, WORD, DWORD, QWORD,


TBYTE) o el de distancia
(NEAR o FAR) de un operando de memoria.
Por ejemplo, si se tiene una tabla definida de la siguiente manera:

Para colocar en AL byte de la misma, la instruccin MOV AL, tabla es incorrecta, ya


que tabla (una cadena 10 palabras) no cabe en el registro AL. Lo que desea el
programador es indicrselo en este caso explcitamente al ensamblador de la
siguiente manera:

Trabajando con varios segmentos, PTR puede redefinir una etiqueta NEAR de uno
de ellos para convertirla en FAR desde el otro, con objeto de poder llamarla.

Operadores CS:, DS:, ES: y SS:

El ensamblador genera un prefijo de un byte que indica al microprocesador el


segmento que debe emplear para acceder a los datos en memoria. Por defecto, se
supone DS para los registros BX, DI o SI (o sin registros de base o ndice) y SS para
SP y BP. Si al acceder a un dato este no se encuentra en el segmento por defecto,
el ensamblador aadir el byte adicional de manera automtica. Sin embargo, el
programador puede forzar tambin esta circunstancia:

(Ramirez, 2013)

4.7 Programacin del puerto USB


USB viene de frase en Ingles Universal Serial Bus que se utiliza para describir un
tipo de puerto en la computadora personal en donde se conectan distintos
perifricos tales como mquinas de imprimir, cmaras fotogrficas, teclados de
computadoras e infinidad de productos de uso generalizado.
Un puerto es una localizacin en la computadora en donde conectamos los
perifricos. Estos pueden enviar informacin a la computadora, recibir informacin
de la misma o hacer ambas cosas.
La computadora personal moderna tiene dos puertos tpicos de conexin:
a) El puerto USB descrito anteriormente
b) El puerto Ethernet usado para conectar la computadora personal a la Internet
Tambin incluye internamente otros puertos nombrados PCI etc. para usos en
aplicaciones que requieran mayores velocidades de transferencia de informacin
los cuales no fueron objeto de investigacin en este trabajo. Nos concentramos
especficamente en el puerto USB.

CONCLUSIONES
La computadora est compuesta por 2 tipos de puertos, el fsico que comprenden
los hardware que van directamente hacia la placa madre y que comnmente los
conocemos como entradas USB, conector de video VGA, conector de cable
Ethernet, conectores PCI y PCI Express, Conectores ADSL y los lgicos que estn
ubicadas en la memoria de la computadora, estn asociados con un puerto fsico o
un canal de comunicacin (antena para conexin inalmbrica o wifi), los puertos
lgicos ms conocidos son los que encontramos en la barra del URL de nuestro
navegador, HTTP, FTP, HTTPS, SMTP, todos estos tienen en comn el puerto fsico
de red ya que sin este no se podra trabajar con estos puertos. Dentro de los puertos
fsicos se desprenden 2 tipos, el puerto serian es mejor conocido como el VGA y los
mini-DIN que ya casi no son usados y los puertos paralelos que eran usados para
la conexin de impresoras y cables IDE de la placa madre.
BIBLIOGRAFIA
(s.f.). Obtenido de http://www.informaticamoderna.com/El_puerto_serial.htm
(s.f.). Obtenido de http://www.informaticamoderna.com/El_puerto_paralelo.htm
Abre los ojos al ensamblador. (s.f.). Obtenido de
http://www.abreojosensamblador.net/Productos/AOE/html/Pags/Cap08.html
Articulos con clase. (s.f.). Obtenido de
http://articulos.conclase.net/?tema=comunicacion&art=serie&pag=000
Blogspot. (s.f.). Obtenido de http://montoyavelgara-
lenguajes.blogspot.mx/2013/11/acceso-discos-en-lenguaje-
ensamblador.html
cruz, E. d. (08 de mayo de 2012). Scribd. Obtenido de
https://es.scribd.com/doc/92795344/Puertos-fisicos-y-logicos
El oraculo. (s.f.). Obtenido de http://elsoportec.blogspot.mx/2010/10/primer-
problema-configuracion-de-puerto.html
hernandez, P. a. (s.f.). Scribd. Obtenido de
https://es.scribd.com/document/75846730/Unidad-4-Programacion-hibrida-
Pablo-Adrian-Garcia-Hernandez
Prezi. (s.f.). Obtenido de https://prezi.com/8-0txbmqsyfn/copy-of-42-acceso-a-
discos-en-lenguaje-ensamblador/
Ramirez, D. M. (05 de noviembre de 2013). Scribd. Obtenido de
https://es.scribd.com/doc/181614836/Unidad-IV-docx
Scribd. (s.f.). Obtenido de https://es.scribd.com/doc/260040422/4-2-Acceso-a-
Discos-en-Lenguaje-Ensamblador
TeknoPLOF. (s.f.). Obtenido de
http://www.teknoplof.com/2009/11/25/programacion-del-puerto-paralelo/
wikipedia. (s.f.). Obtenido de
https://es.wikipedia.org/wiki/Partici%C3%B3n_de_disco
wikipedia. (s.f.). Obtenido de
https://es.wikipedia.org/wiki/Puerto_(inform%C3%A1tica)

También podría gustarte