Вы находитесь на странице: 1из 24

S.E.P. S.N.E.S.T. D.G.E.S.T.

INSTITUTO TECNOLOGICO del istmo

TEMA:
UNIDAD 2:PROGRAMACION BASICA

MAESTRO:
CASTILLEJOS GONZALEZ JOSE MANUEL

PRESENTA:
EDGAR SANTIAGO GUTIERREZ

Heroica Cd. de Juchitán de Zaragoza, Oax,


Año 2009
ÍNDICE

Ensamblador y ligador a utilizar……………………………………2

Ciclos numéricos………………………………………………………..4

Captura básica de cadenas…………………………….…………….5

Comparación y prueba………………………………………….........5

Saltos……………………………………………………………………..5

Ciclos condicionales…………………………………..………………..6

Incremento y decremento……………………………..……………….7

Captura de cadenas con formato ……………………………………8

Instrucciones aritméticas………………………………………………9

Manipulación de la pila …………………………………..…………….10

Obtención de una cadena con la representación hexadecimal…10

Instrucciones lógicas……………………………………………………15

Desplazamiento y rotación…………………………………………..….15

Obtención de una cadena con la representación decimal………..18

Captura y almacenamiento de datos numéricos……………………..19

Operaciones básicas sobre archivos de disco…………………...….22


ENSAMBLADOR Y LIGADOR A UTILIZAR

Ensamblado

Un ensamblador es el programa que convierte un listado de código


fuente, escrito en un fichero de texto, en código objeto, es decir,
lenguaje máquina (el que finalmente interpretará el procesador) en el
que sólo le faltan las referencias a rutinas externas. El código fuente
es un fichero que contiene la secuencia de instrucciones en lenguaje
ensamblador que forma el programa, así como ciertas directivas o
comandos para el propio ensamblador, que ha sido creado utilizando
un editor de texto. El código objeto consta del código en lenguaje
máquina y de la información necesaria para enlazarlo con otros
módulos objeto. Con TASM el proceso de ensamblado se realiza
escribiendo lo siguiente en la ventana de comandos:

tasm /zi /l nombre donde nombre es el nombre del fichero .asm con
el código fuente. La extensión no es necesaria ponerla y los
parámetros /zi y /l sólo son útiles si queremos hacer un proceso de
depuración (debug) con el Turbo Debugger. Tras la ejecución de esta
línea se nos creará un fichero “nombre.obj

Linkado y montado

Al construir un programa algunos de sus módulos pueden colocarse


en el mismo módulo fuente y ensamblarse juntos, otros pueden estar
en módulos diferentes y ser ensamblados separadamente. En
cualquier caso, los módulos objeto resultantes, algunos de los cuales
pueden estar agrupados en librerías, deben ser enlazados para
formar el módulo de carga, antes de que se pueda ejecutar el
programa. Además de dar como salida el módulo de carga, el linker o
enlazador imprime un mapa de memoria que indica donde serán
cargados los módulos objeto en la memoria.

Después de crearse el módulo de carga, éste es cargado por el


cargador en la memoria del ordenador y comienza la ejecución. Para
linkar con TASM escribimos:

tlink /v nombre Tras esto se nos creará el fichero ejecutable (.exe o


.com) que el sistema operativo se encargará de cargar en memoria
cuando lo ejecutemos. De nuevo, la extensión no es necesaria
ponerla y el parámetro /v sólo es útil para el Turbo Debugger.

CICLOS NUMERICOS

Un bucle es un grupo de instrucciones que se ejecutan cíclicamente un


número concreto de veces. Para construir bucles disponemos de las

siguientes instrucciones:

Éstas posibilitan el grupo de control más elemental de nuestros


programas. Un bucle es un bloque de código que se ejecuta varias
veces. Hay 4 tipos de bucles básicos: o Bucles sin fin o Bucles por
conteo, Bucles hasta o Bucles mientras. Las instrucciones de control
de bucles son las siguientes:
• INC incrementar
• DEC decrementar
• LOOP realizar un bucle
• LOOPZ,LOOPE realizar un bucle si es cero
• LOOPNZ,LOOPNE realizar un bucle si no es cero
• JCXZ salta si CX es cero

CAPTURA BÁSICA DE CADENAS

Una cadena es una secuencia de bytes contiguos. Las operaciones que


se pueden realizar sobre las cadenas son las siguientes:

COMPARACION Y PRUEBA

Este grupo es una continuación del anterior, incluye las siguientes


instrucciones:

• TEST verifica

• CMP compara

SALTOS

• JMP salta

• JE, JZ salta si es igual a cero

• JNE, JNZ salta si no igual a cero

• JS salta si signo negativo

• JNS salta si signo no negativo


• JP, JPE salta si paridad par

• JNP, JOP salta si paridad impar

• JO salta si hay capacidad excedida

• JNO salta si no hay capacidad excedida

• JB, JNAE salta si por abajo (no encima o igual)

• JNB, JAE salta si no está por abajo (encima o igual)

• JBE, JNA salta si por abajo o igual (no encima)

• JNBE, JA salta si no por abajo o igual (encima)

• JL, JNGE salta si menor que (no mayor o igual)

• JNL, JGE salta si no menor que (mayor o igual)

• JLE, JNG salta si menor que o igual (no mayor)

• JNLE, JG salta si no menor que o igual (mayor)

CICLOS DE CONDICIONALES

Ciclo For
La Sintaxis empleada por el ciclo for es la siguiente:
for (valores de entrada ; condición de terminación ; iteración
por ciclo)
 Las tres partes del ciclo se encuentran separadas por ; (punto y
coma)
 La primer parte del ciclo especifica valores previos a su inicio.
 La segunda parte indica la condición de terminación para el ciclo,
la cual está directamente relacionada con los valores iniciales.
 Finalmente, la última parte especifica cómo serán manipulados los
valores iniciales en cada iteración del ciclo.
Ciclo IF
Una característica del ciclo if/else es el uso de llaves { }, en el
ejemplo anterior pudo notar que no fueron utilizadas llaves { } para
delimitar las condicionales, al no emplearse este mecanismo, se
asume que el ciclo o condicional tendrá efecto únicamente en la linea
contigua a su inicio. Aunque es recomendable utilizar llaves ({ } )
para incrementar la legibilidad del código, es importante señalar que
esta sintaxis de no utilizar llaves ({ } ) es válida y muy común
(Lamentablemente) .
Existe otra variación de if/else que agrupa las condicionales en una
sola expresión:

if (expresion Boolean ? operación verdadera :


operación falsa)

Ciclo While

En este ciclo el cuerpo de instrucciones se ejecuta mientras una


condición permanezca como verdadera, en el momento en que la
condición se convierte en falsa el ciclo termina.

Su formato general es:

Cargar o inicializar variable de condición;

While (condición)

Grupo cierto de instrucciones;

Instrucción(es) para salir del ciclo; };

INCREMENTO Y DECREMENTO

Las instrucciones del ensamblador


Instrucciones de transferencia Son utilizadas para mover los contenidos
de los operandos. Cada instrucción se puede usar con diferentes modos
de direccionamiento.
MOV
MOVS (MOVSB) (MOVSW)
Instrucción MOV
Propósito: Transferencia de datos entre celdas de memoria, registros y
acumulador.
Sintaxis:
MOV Destino, Fuente
Donde Destino es el lugar a donde se moverán los datos y fuente es el
lugar donde se encuentran dichos datos.
Los diferentes movimientos de datos permitidos para esta instrucción
son:
 Destino: memoria. Fuente: acumulador
 Destino: acumulador. Fuente: memoria
 Destino: registro de segmento. Fuente: memoria/registro
 Destino: memoria/registro. Fuente: registro de segmento
 Destino: registro. Fuente: registro
 Destino: registro. Fuente: memoria
 Destino: memoria. Fuente: registro
 Destino: registro. Fuente: dato inmediato
 Destino: memoria. Fuente: dato inmediato

La instrucción MOV y los modos de direccionamiento.

He aquí nuestra primera instrucción:

MOV destino, origen

Efectivamente, sirve para mover. Lo que hace es copiar lo que haya en


"origen" en "destino". Lo de que primero vaya el destino y luego el
origen es común a todas las instrucciones del 8086 que tengan dos
operandos, lo cual creará más de un quebradero de cabeza al principio.

MOV AX,BL

MOV AX, BX sin embargo hace que el procesador coja el contenido de


BX y lo copiara en AX; lo que había anteriormente en AX se pierde
(puesto que un registro al fin y al cabo es un número, en este caso de
16 bits, y ahora le hemos asignado un nuevo valor), mientras que BX no
se ve afectado. Cuando decimos "mover" en realidad sería más
apropiado "copiar", porque no alteramos en absoluto el operando origen.

CAPTURA DE CADENAS CON FORMATO

Permiten el movimiento, comparación o búsqueda rápida en bloques de


datos:

• MOVC transferir carácter de una cadena

• MOVW transferir palabra de una cadena


• CMPC comparar carácter de una cadena

• CMPW comparar palabra de una cadena

• SCAC buscar carácter de una cadena

• SCAW buscar palabra de una cadena

• LODC cargar carácter de una cadena

• LODW cargar palabra de una cadena

• STOC guardar carácter de una cadena

• STOW guardar palabra de una cadena

• REP repetir

• CLD poner a 0 el indicador de dirección

• STD poner a 1 el indicador de dirección

INSTRUCCIONES ARITMÉTICAS

Instrucciones Aritméticas.

Estas instrucciones son las que realiza directamente el 8086/8088

a. Grupo de adición:

• ADD suma

• ADC suma con acarreo

• AAA ajuste ASCII para la suma

• DAA ajuste decimal para la suma

b. Grupo de sustracción:

• SUB resta

• SBB resta con acarreo negativo

• AAS ajuste ASCII para la resta


• DAS ajuste decimal para la resta

c. Grupo de multiplicación:

• MUL multiplicación

• IMUL multiplicación entera

• AAM ajuste ASCII para la multiplicación

d. Grupo de división:

• DIV división

• IDIV división entera

• AAD ajuste ASCII para la división

e. Conversiones:

• CBW pasar octeto a palabra

• CWD pasar palabra a doble palabra

• NEG negación

MANIPULACIÓN DE PILA

Una de las funciones de la pila del sistema es la de salvaguardar


(conservar) datos (la otra es la de salvaguardar las direcciones de
retorno de las llamadas a subrutinas):

• PUSH introducir

• POP extraer • POPF extraer indicadores

• PUSHF introducir indicadores

OBTENCION DE CADENA CON REPRESENTACION HEXADECIMAL

Procesos de Control

NOP (Operación nula).

Sintaxis:
NOP

Indicadores:

OF DF IF TF SF ZF AF PF CF
- - - - - - - - -
Realiza una operación nula, es decir, el microprocesador decodifica la
instrucción y pasa

a la siguiente. Realmente se trata de la instrucción XCHG AX,AX.

ESC (Salida a un coprocesador).

Sintaxis:

ESC código_operación, origen

Indicadores:

OF DF IF TF SF ZF AF PF CF
- - - - - - - - -

Se utiliza en combinación con procesadores externos, tales como los


coprocesadores de coma flotante o de E/S, y abre al dispositivo externo
el acceso a las direcciones y operandos requeridos. Al mnemónico ESC
le siguen los códigos de operación apropiados para el coprocesador así
como la instrucción y la dirección del operando necesario.

Ejemplo:

ESC 21,AX

HLT (Parada hasta interrupción o reset).

Sintaxis:

HLT

Indicadores:

OF DF IF TF SF ZF AF PF CF
- - - - - - - - -
El procesador se detiene hasta que se restaura el sistema o se recibe
una interrupción. Como en los PC se producen normalmente 18,2
interrupciones de tipo 8 por segundo (del temporizador) algunos
programadores utilizan HLT para hacer pausas y bucles de retardo. Sin
embargo, el método no es preciso y puede fallar con ciertos
controladores de memoria.

LOCK (Bloquea los buses).

Sintaxis:

LOCK

Indicadores:

OF DF IF TF SF ZF AF PF CF
- - - - - - - - -

Es una instrucción que se utiliza en aplicaciones de recursos


compartidos para asegurar que no accede simultáneamente a la
memoria más de un procesador. Cuando una instrucción va precedida
por LOCK, el procesador bloquea inmediatamente el bus, introduciendo
una señal por la patilla LOCK.

WAIT (Espera).

Sintaxis:

WAIT

Indicadores:

OF DF IF TF SF ZF AF PF CF
- - - - - - - - -

Provoca la espera del procesador hasta que se detecta una señal en la


patilla TEST. Ocurre, por ejemplo, cuando el coprocesador ha terminado
una operación e indica su finalización. Suele preceder a ESC para
sincronizar las acciones del procesador y coprocesador.

XLAT (traducción).

Sintaxis:

XLAT tabla
Indicadores:

OF DF IF TF SF ZF AF PF CF
- - - - - - - - -

La instrucción XLAT tabla carga en el registro AL el contenido de la


posición [BX][AL], en donde el registro BX ha de apuntar al comienzo de
una tabla. Dicho de otra manera, AL hace de índice de la tabla y de
almacén destino del contenido de la tabla.

Por ejemplo, el siguiente programa:

DATOS SEGMENT

TABLA DB 2, 3, 5, 8, 16, 23

DATOS ENDS

CODIGO SEGMENT

MOVE BX, OFFSET TABLA ;Inicializa BX con la dirección donde comienza


la tabla

MOVE AL, 5

XLAT TABLA

CODIGO ENDS

Hace que al final el contenido de AL sea 16 ya que es el quinto elemento


de la tabla y AL antes de XLAT TABLA contenía el valor 5.

Otro ejemplo:

MOV BX, OFFSET TABLA

MOV AL, 4

XLAT TABLA

Para finalizar con las instrucciones de transferencia veremos un grupo


de tres instrucciones:

LEA o cargar dirección efectiva


LDS o cargar el puntero en DS

LES o cargar el puntero en ES denominadas de transferencia de


direcciones.

LEA (carga dirección efectiva).

Sintaxis:

LEA destino, origen Indicadores:

OF DF IF TF SF ZF AF PF CF
- - - - - - - - -

Transfiere el desplazamiento del operando fuente al operando destino.


Otras instrucciones pueden a continuación utilizar el registro como
desplazamiento para acceder a los datos que constituyen el objetivo. El
operando destino no puede ser un registro de segmento. En general,
esta instrucción es equivalente a MOV destino, OFFSET fuentey de hecho
los buenos ensambladores (TASM) la codifican como MOV para
economizar un byte de memoria. Sin embargo, LEA es en algunos casos
más potente que MOV al permitir indicar registros de índice y
desplazamiento para calcular el offset:

En el ejemplo de arriba, el valor depositado en DX es el OFFSET de la


etiqueta DATOS más el registro SI. Esa sola instrucción es equivalente a
estas dos:

MOV DX, OFFSET DATOS

ADD DX, SI

LDS (carga un puntero utilizando DS).

Sintaxis:

LDS destino, origen

Indicadores:
OF DF IF TF SF ZF AF PF CF
- - - - - - - - -

Traslada un puntero de 32 bits (dirección completa de memoria


compuesta por segmento y desplazamiento), al destino indicado y a DS.
A partir de la dirección indicada por el operando origen, el procesador
toma 4 bytes de la memoria: con los dos primeros forma una palabra
que deposita en destino y, con los otros dos, otra en DS.

Ejemplo:

PUNT DD 12345678H

LDS SI, PUNT

Como resultado de esta instrucción, en DS: SI se hace referencia a la


posición de memoria 1234h: 5678h; 'DD' sirve para definir una variable
larga de 4 bytes (denominada PUNT en el ejemplo).

LES (carga un puntero utilizando ES).

Sintaxis:

LES destino, origen

Esta instrucción es análoga a LDS, pero utilizando ES en lugar de D

INSTRUCCIONES LÓGICAS

Son operaciones bit a bit que trabajan sobre octetos o palabras


completas:

• NOT negación

• AND producto lógico

• OR suma lógica

• XOR suma lógica exclusiva

DESPLAZAMIENTO Y ROTACIÓN

Instrucciones de Desplazamiento Circular

RCL (Rotación a la izquierda con acarreo).


Sintaxis:

RCL destino, contador

Indicadores:

OF DF IF TF SF ZF AF PF CF
x - - - - - - - x

Rotar a la izquierda los bits del operando destino junto con el indicador
de acarreo CF el número de bits especificado en el segundo operando. Si
el número de bits a desplazar es 1, se puede especificar directamente,
en caso contrario el valor debe cargarse en CL y especificar CL como
segundo operando. No es conveniente que CL sea mayor de 7, en bytes;
ó 15, en palabras.

Ejemplos:

RCL AX,1

RCL AL,CL

RCL DI,1

RCR (Rotación a la derecha con acarreo).

Sintaxis:

RCR destino, contador

Indicadores:

OF DF IF TF SF ZF AF PF CF
x - - - - - - - x

Rotar a la derecha los bits del operando destino junto con el indicador
de acarreo CF el número de bits especificado en el segundo operando. Si
el número de bits es 1 se puede especificar directamente; en caso
contrario su valor debe cargarse en CL y especificar CL como segundo
operando:

Ejemplos:
RCR BX,CL

RCR BX,

ROL (Rotación a la izquierda).

Sintaxis:

ROL destino, contador

Indicadores:

OF DF IF TF SF ZF AF PF CF
x - - - - - - - x

Rota a la izquierda los bits del operando destino el número de bits


especificado en el segundo operando, que puede ser 1 ó CL previamente
cargado con el valor del número de veces.

Ejemplos:

ROL DX,CL

ROL AH,1

ROR (Rotación a la derecha).

Sintaxis:

ROR destino, contador

Indicadores:

OF DF IF TF SF ZF AF PF CF
x - - - - - - - x

Rota a la derecha los bits del operando destino el número de bits


especificado en el segundo operando. Si el número de bits es 1 se puede
poner directamente, en caso contrario debe ponerse a través de CL.

Ejemplos:

ROR CL,1
ROR AX,CL

OBTENCIÓN DE REPRESENTACION DE CADENAS DECIMAL

Instrucciones de Desplazamiento Lineal

AL/SHL (Desplazamiento aritmético a la izquierda).

Sintaxis:

SAL/SHL destino, contador

Indicadores:

OF DF IF TF SF ZF AF PF CF
X - - - x x ? x X
Desplaza a la izquierda los bits del operando el número de bits
especificado en el segundo operando que debe ser CL si es mayor que 1
los bits desplazados.

SAR (Desplazamiento aritmético a la derecha).

Sintaxis:

SAR destino, contador

Indicadores:

OF DF IF TF SF ZF AF PF CF
X - - - x x ? x x

Desplaza a la derecha los bits del operando destino el número de bits


especificado en el segundo operando. Los bits de la izquierda se rellenan
con el bit de signo del primer operando. Si el número de bits a desplazar
es 1 se puede especificar directamente, si es mayor se especifica a
través de CL.

Ejemplos:

SAR AX, CL
SAR BP,1

SHR (Desplazamiento lógico a la derecha).

Sintaxis:

SHR destino, contador

Indicadores:

OF DF IF TF SF ZF AF PF CF
X - - - x x ? x x

Desplaza a la derecha los bits del operando destino el número de los bits
especificados en el segundo operando. Los bits de la izquierda se llena
con cero. Si el número de bits a desplazar es 1 se puede especificar
directamente en el caso en que no ocurra se pone el valor en CL:

Ejemplos:

SHR AX,CL

SHR CL,1

CAPTURA Y ALMACENAMIENTO DE DATOS NUMERICOS

Bloques en ensamblador

MODELOS DE MEMORIA.

Los modelos de memoria constituyen las diversas maneras de


acceder a la memoria por parte de los compiladores de C. En el caso del
Turbo C se pueden distinguir los siguientes:

TINY: Se emplea en los programas donde es preciso apurar el consumo


de memoria hasta el último byte. Los 4 registros de segmento (CS, DS,
ES, SS) están asignados a la misma dirección, por lo que existe un total
de 64 Kb donde se mezclan código, datos y pila. Los programas de este
tipo pueden convertirse a formato COM.
SMALL: Se utiliza en aplicaciones pequeñas. Los segmentos de código y
datos son diferentes y no se solapan. Por ello, hay 64 kb para código y
otros 64 Kb a repartir entre datos y pila.

Segmentos Punteros

Modelo Código Datos Pila Código Datos

Tiny 64 Kbnear near

Small 64 Kb64 Kbnear near

Medium 1 Mb 64 Kbfar near

Compact 64 Kb1 Mb near far

Large 1 Mb 1 Mb far far

Huge 1 Mb 1 Mb

(Bloques > 64 Kb) far far

MEDIUM: Este modelo es ideal para programas largos que no manejan


demasiados datos. Se utilizan punteros largos para el código (que puede
extenderse hasta 1 Mb) y cortos para los datos: la pila y los datos
juntos no pueden exceder de 64 Kb.

COMPACT: Al contrario que el anterior, este modelo es el apropiado para


los programas pequeños que emplean muchos datos. Por ello, el
programa no puede exceder de 64 Kb aunque los datos que controla
pueden alcanzar el Mb, ya que los punteros de datos son de tipo far por
defecto.

LARGE: Empleado en las aplicaciones grandes y también por los


programadores de sistemas que no tienen paciencia para andar forzando
continuamente el tipo de los punteros (para rebasar el límite de 64 Kb).
Tanto los datos como el código pueden alcanzar el Mb, aunque no se
admite que los datos estáticos ocupen más de 64 Kb. Este modo es el
que menos problemas da para manejar la memoria, no siendo quizá tan
lento y pesado como indica el fabricante.

HUGE: Similar al anterior, pero con algunas ventajas: por un lado, todos
los punteros son normalizados automáticamente y se admiten datos
estáticos de más de 64 Kb. Por otro, y gracias a esto último, es factible
manipular bloques de datos de más de 64 Kb cada uno, ya que los
segmentos de los punteros se actualizan correctamente. Sin embargo,
este modelo es el más costoso en tiempo de ejecución de los
programas.

Usando la pila

Una sección de la memoria del programa es reservado para el uso de


una pila. La Intel 80386 y procesadores superiores contienen un registro
llamado puntero a la pila, esp, el cual almacena la dirección del tope de
la pila, la figura 1 de abajo muestra 3 valores enteros, 49, 30 y 72,
almacenados en la pila(cada entero ocupando 4 bytes) con el registro
esp apuntando a la dirección del tope de la pila.

A diferencia de una pila creciendo hacia arriba, en las máquinas Intel


crecen hacia abajo. En la Figura 2 muestra las capas de la pila después
de la ejecución pushl $15.

El puntero de la pila es decrementado de cuatro en cuatro y el número


15 es almacenando como lugares de 4 bytes, 1988, 1989, 1990 y 1991
La instrucción popl %eax copia el valor del tope de la pila(4 bytes) a eax
e incrementa esp en 4. Qué sucede si no quieres copiar el valor del tope
de la pila a un registro?. Puedes ejecutar la instrucción addl $4, %esp el
cual simplemente incrementa el puntero de la pila.

#Listing 3
.globl main
main:
movl $10, %eax
call foo
ret
foo:
addl $5, %eax

ret

En Listing 3, la instrucción call foo pone la dirección de la instrucción


después de call en la llamada al programa sobre la pila y va hacia foo.
La subrutina termina con ret, el cual transfiere el control a la instrucción
cuya dirección se toma desde el tope de la pila. Obviamente el tope de
la pila debe contener una dirección válida

OPERACIONES BASICAS SOBRE ARCHIVOS DE DISCO

ENTRADA Y SALIDA

Funciones que realiza

Vamos a señalar las funciones que debe realizar un computador para


ejecutar trabajos de entrada/salida:
- Direccionamiento o selección del dispositivo que debe llevar a
cabo la operación de E/S.
- Transferencia de los datos entre el procesador y el dispositivo (en
uno u otro sentido).
- Sincronización y coordinación de las operaciones.

Esta última función es necesaria debido a la deferencia de velocidades


entre los dispositivos y la CPU y a la independencia que debe existir
entre los periféricos y la CPU (por ejemplo, suelen tener relojes
diferentes).
Se define una transferencia elemental de información como la
transmisión de una sola unidad de información (normalmente un byte)
entre el procesador y el periférico o viceversa. Para efectuar una
transferencia elemental de información son precisas las siguientes
funciones:
- Establecimiento de una comunicación física entre el procesador y
el periférico para la transmisión de la unidad de información.
- Control de los periféricos, en que se incluyen operaciones como
prueba y modificación del estado del periférico. Para realizar estas
funciones la CPU gestionará las líneas de control necesarias.

Definiremos una operación de E/S como el conjunto de acciones


necesarias para la transferencia de un conjunto de datos (es decir, una
transferencia completa de datos). Para la realización de una operación
de E/S se deben efectuar las siguientes funciones:
- Recuento de las unidades de información transferidas
(normalmente bytes) para reconocer el fin de operación.
- Sincronización de velocidad entre la CPU y el periférico.
- Detección de errores (e incluso corrección) mediante la utilización
de los códigos necesarios (bits de paridad, códigos de redundancia
cíclica, etc.)
- Almacenamiento temporal de la información. Es más eficiente
utilizar un buffer temporal específico para las operaciones de E/S que
utilizan el área de datos del programa.
- Conversión de códigos, conversión serie/paralelo, etc.

Dispositivos externos

Una de las funciones básicas del ordenador es comunicarse con los


dispositivos exteriores, es decir, el ordenador debe ser capaz de enviar y
recibir datos desde estos dispositivo. Sin esta función, el ordenador no
sería operativo porque sus cálculos no serían visibles desde el exterior.

Existe una gran variedad de dispositivos que pueden comunicarse con


un ordenador, desde los dispositivos clásicos (terminales, impresoras,
discos, cintas, etc.) hasta convertidores A/D y D/A para aplicaciones
de medida y control de procesos, De todos los posibles periféricos,
algunos son de lectura, otros de escritura y otros de lectura y escritura
(es importante resaltar que este hecho siempre se mira desde el punto
de vista del proceso). Por otra parte, existen periféricos de
almacenamiento también llamados memorias auxiliares o masivas.

La mayoría de los periféricos están compuestos por una parte mecánica


y otra parte electrónica. Estas partes suelen separarse claramente para
dar una mayor modularidad. A la componente electrónica del periférico
se le suele denominar controlador del dispositivo o, también, adaptador
del dispositivo. Si el dispositivo no tiene parte mecánica (como, por
ejemplo, la pantalla de un terminal), el controlador estará formado por
la parte digital del circuito. Frecuentemente los controladores de los
dispositivos están alojados en una placa de circuito impreso diferenciada
del resto del periférico. En este caso es bastante habitual que un mismo
controlador pueda dar servicio a dispositivos de características similares.

El principal problema planteado por los periféricos es su gran variedad


que también afecta a las velocidades de transmisión. Por tanto, el
mayor inconveniente que encontramos en los periféricos es la diferencia
entre sus velocidades de transmisión y la diferencia entre éstas y la
velocidad de operación del ordenador.

Вам также может понравиться