Vous êtes sur la page 1sur 78

Universidad Autnoma de Tamaulipas

Facultad de Ingeniera Arturo Narro Siller

Captulo I.
Organizacin de la
computadora digital.

1.1.- Introduccin.
La organizacin de una computadora digital y su arquitectura estn ntimamente
relacionadas; sin embargo, son dos conceptos diferentes que muchas veces se toman como
sinnimo.
La organizacin de una computadora digital se refiere a las unidades lgicas que la
componen (como la Unidad Central de Proceso, la Unidad de Memoria y la Unidad de
Entrada/ Salida), las funciones que realizan, su operacin y la forma en que se relacionan y
se comunican unas con otras.
La arquitectura de las computadoras se enfoca en la forma de construir cada una de
estas unidades lgicas para que realicen las funciones especificadas por su organizacin, as
como la manera en que estas unidades van a comunicarse para interactuar entre ellas.

1.2.- Arquitectura.
Una computadora digital, en su forma mas simple, consta de una Unidad Central de
Proceso, una Unidad de Memoria y una Unidad de Entrada/ Salida. Estas unidades estn
interconectadas mediante un conjunto de lneas de comunicacin que recibe el nombre de
BUS.
La Unidad Central de Proceso (CPU) internamente contiene la Unidad de Control
(CU), la Unidad Aritmtica/ Lgica (ALU) y varios registros. Estn arquitectura bsica se
muestra en forma esquemtica en la figura. 1.1.

Figura 1.1. Arquitectura Bsica.


Dentro del BUS existen lneas para direccin, datos y seales de control

1.2.1.- Unidad de Memoria.


La unidad de memoria esta organizada como un conjunto de celdas, conocidas
tambin como palabras, cada una de las cuales pueden almacenar un dato o una instruccin.
Las celdas de la memoria tienen asociada una direccin nica. Las direcciones de memoria
estn asignadas en forma secuencial empezando con la direccin 0.
Pueden realizarse dos tipos de operaciones sobre la unidad de memoria. Estas
operaciones son lectura de memoria y escritura a memoria. Para esto, la unidad de memoria
tiene varias lneas las cuales se conecta al BUS.
Un conjunto de lneas sirven para especificar la direccin de una celda, otro conjunto
sirve para transferir el dato que se desea leer o escribir en esa celda y otras lneas se usan
para indicar el tipo de operacin que se desea realizar. Existen, adems, otras lneas que se
utilizan para controlar y sincronizar la operacin de la memoria con el resto de la
computadora digital.
Una operacin de lectura de la unidad de memoria permite obtener el dato o cdigo de
instruccin que se encuentra almacenado en una celda particular de la memoria. Cuando se
desea leer un dato o una instruccin de una celda especifica, las lneas de direccin deben
tener la direccin de la celda de memoria cuyo contenido se desea obtener, la lnea de
lectura se activa (indicando este tipo de operacin) y las lneas de sincronizacin controlan
el inicio de la operacin.
Cuando la unidad de memoria termina de realizar la operacin de lectura, coloca en
las lneas de transferencia de datos una copia del contenido de la celda de memoria cuya
direccin se especific mediante la lnea de direccin. El contenido de la celda de memoria
no se modifica.
Una operacin de escritura a la unidad de memoria permite almacenar un dato o una
instruccin en una celda en particular de la unidad de memoria. El dato o instruccin que
contiene la celda de memoria antes de realizar la operacin de escritura ser reemplazado
con el dato o instruccin que se desea almacenar en dicha celda, perdindose el contenido
original.
Para realizar este tipo de operacin sobre la memoria, las lneas de direccin deben
tener la direccin de la celda en la cual se desea almacenar el dato o la instruccin, que se
desea guardar y las lneas de transferencia de datos deben tener el dato o instruccin que se
desea guardar y la lnea de escritura se activa. Cuando se inicia la operacin mediante las
lneas de sincronizacin, la unidad de memoria almacena el dato o la instruccin en la celda
de memoria especificada.

1.2.2.- Unidad Central de Proceso (CPU).


La funcin de la unidad central de proceso es ejecutar instrucciones para procesar
datos y controlar toda la operacin de la computadora digital. Para realizar las funciones de
control, la unidad central de proceso cuenta precisamente con una unidad de control (CU)
que es la que se encarga de coordinar la ejecucin de las instrucciones y la transferencia de
datos entre las diferentes unidades de la computadora.
Para realizar las operaciones aritmticas y lgicas, la unidad central de proceso
contiene la unidad aritmtica y lgica (ALU).
1.2.3.- Registros.
La unidad central de proceso tambin cuenta con una serie de registros utilizados para
ciertos propsitos. Un registro es una celda similar a una de las celdas de memoria y puede
almacenar un dato o una instruccin, dependiendo del registro de que se trate.
1.2.4.- Unidades de Entrada/ Salida.
Para que un usuario de una computadora digital pueda ver y analizar los resultados de
un programa, es necesario que se enven a algn dispositivo perifrico como una pantalla
de video o una impresora. Cada dispositivo perifrico debe tener asignada una direccin
nica para poder identificarlo.
La forma en que estos datos serian enviados al dispositivo es similar a la forma en que
se guardaran en la unidad de memoria.
Dentro del bus existen lneas que indican si la operacin de lectura o escritura debe
ser realizar por la unidad de memoria o por la unidad de entrada/ salida.

1.3.- Interconexin de BUS.


Un BUS es una va de comunicacin que conecta a dos o ms dispositivos. Una
caracterstica clave del bus es que es un medio de transmisin compartido. Mltiples
dispositivos se conectan al bus y estn disponible una seal transmitida por cualquier
dispositivo para la recepcin de todos los otros dispositivos conectados al bus. Si dos
dispositivos transmiten durante el mismo periodo de tiempo, sus seales se transplantan y
su informacin ser engaosa (basura). Por lo tanto, solo dispositivo puede transmitir con
xito a la vez.
1.3.1.- Estructura de Bus.
Aunque hay diferentes diseos de bus, las lneas de cualquier bus pueden clasificarse
en tres grupos de funcin (fig. 1.2): datos, direccin y lneas de control. Adems existen
lneas de distribucin de potencia que suministran energa a los mdulos conectados.

Figura 1.2. Buses principales de una computadora.

Las lneas de datos proporcionan un camino para mover los datos entre los mdulos
del sistema. Estas lneas se llaman en conjunto, el BUS DE DATOS. El bus de datos
consta de por ejemplo 8, 16, o 32 lneas separadas, a este nmero de lneas se hacen
referencia como la anchura del bus de datos.
Como cada lnea puede llevar slo un bit a la vez, el nmero de lneas determina el
nmero de bits que pueden transferir a un tiempo. La anchura del bus de datos es un factor
clave para determinar la ejecucin general del sistema.
Por ejemplo, si el bus de datos es de 8 bits de ancho y cada instruccin es de 16 bits
de longitud, entonces la CPU debe acceder dos veces el mdulo de memoria durante cada
ciclo de instruccin.
Las lneas de direccin se utilizan para designar el origen o el destino de los datos en
el bus de datos. Por ejemplo, si la CPU desea leer una palabra de datos (8,16,32 bits) de la
memoria, coloca la direccin de la palabra deseada en la lnea de direccin. Es claro que la
anchura del bus de direcciones determina la mxima capacidad posible de memoria del
sistema, aplicado la siguiente ecuacin:

Cantidad de memoria direccionable = 2N

Donde:
N= Nmero de lneas del bus de direccin.
Adems, por general las lneas de direccin son empleadas tambin para direccionar
los puertos de E/S.
Las lneas de control se utilizan para controlar el acceso y el uso de los datos y las
lneas de direccin. Puesto que los datos y las lneas de direccin se comparten por todos
los componentes, debe existir un medio para controlar su uso. Las seales de control
transmiten tanto el comando como la informacin de temporizacin entre mdulos del
sistema. Las seales de temporizacin indican la validez de los datos y de la informacin de
direccin. Las seales de comando especifican las operaciones a efectuarse. Es comn que
las lneas de control incluyan:

Lectura de memoria: Causa que se coloquen en el bus los datos de la localidad


direccionada.

Escritura a E/S: Causa que los datos que estn en el bus salgan hacia el puerto de
E/S direccionando.

Lectura de E/S: Causa que se coloquen en el bus los datos del puerto de E/S
direccionar.

Solicitud de interrupcin: Indica que una interrupcin esta pendiente.

Reloj: Se utiliza para sincronizar operaciones.

Reinicializar: Inicializa todos los mdulos.

En el aspecto fsico, en bus del sistema es un nmero de conductores elctricos


paralelos. Estos conductores son lneas de metal grabadas en una tarjeta o tablero ( tarjeta
con circuito impreso).
El bus se extiende a travs de todos los componentes del sistema, cada uno de los cuales
se conecta a algunos o todas las lneas del bus. Un arreglo fsico muy comn se describe en
la figura 1.3.

BUS

CPU

MEMORIA

E/S

Figura 1.3. Realizacin fsica tpica de una arquitectura de bus.


1.3.2.- Tipos de buses.
Las lneas de buses pueden separarse en dos tipos genricos: dedicadas y
multiplexadas. Una lnea de bus dedicada se asigna permanentemente ya sea a una
funcin o a un subconjunto fsico de componentes de la computadora.
Un ejemplo de dedicacin funcional es el uso de lneas de direccin y de datos separados
dedicados, lo cual es comn para muchos buses. Sin embargo, la informacin de datos y de
direccin puede transmitirse sobre el mismo conjunto de lneas usando una lnea de control de
direccin valida.
A este mtodo de usar las mismas lneas para mltiples propsitos se le conoce
como multiplexeo en tiempo.
La ventaja del multiplexeo en tiempo es el uso de muy pocas lneas, lo cul ahorra
espacio y, casi siempre, costo. La desventaja es que se necesita circuitera ms compleja
dentro de cada mdulo. Tambin hay una disminucin potencial en el desempeo ya que
ciertos sucesos que comparten las mismas lneas no pueden tener lugar en paralelo.
Dedicacin fsica se refiere al uso de mltiples buses, cada uno de los cules
conecta solo un subconjunto de mdulos. Un ejemplo caracterstico es el uso de un bus de
E S para interconectar todos los mdulos de E S; este bus se conecta al bus principal
por medio de algn tipo de mdulo adaptador de E S. La ventaja potencial de la
dedicacin fsica es un rendimiento alto, debido a que hay menos contencin de bus. Una
desventaja, sin embargo, es el incremento en el tamao y costo del sistema.
7

Tabla 1.1. Elementos de diseo de buses.


Tipo
Dedicado
Multiplexado

Anchura del bus


Direccin
Datos

Mtodo de arbitraje
Centralizado
Distribuido

Tipo de transferencia de datos


Lectura
Escritura
Leer modificar escribir
Leer despus escribir
Bloque

Temporizacin
Sncrona
Asncrona

Mtodo de arbitraje.
En todos, excepto en los sistemas demasiado simples, ms de un mdulo podra
necesitar control, del bus. Por ejemplo, un mdulo de E S puede necesitar leer o escribir
directo a memoria, sin enviar los datos a la CPU. Puesto que solo una unidad a la vez puede
transmitir con xito sobre el bus, se necesita algn mtodo de arbitraje. Los diversos
mtodos pueden clasificarse como centralizados o distribuidos. En un esquema
centralizado, un solo dispositivo de hardware, al que se hace referencia como controlador
del bus o rbitro, es responsable de asignar tiempo en el bus. El dispositivo puede ser un
mdulo separado o parte de la CPU. En un esquema distribuido, no hay un controlador
central. En su lugar, cada mdulo contiene lgica de control de acceso y los mdulos actan
juntos para compartir el bus. Con ambos mtodos de arbitraje, el propsito es designar a un
dispositivo como maestro (o amo), ya sea la CPU o un mdulo de E S. Entonces, el
maestro puede iniciar una transferencia de datos (lectura o escritura, por ejemplo) con algn
otro dispositivo, el cul acta como esclavo para ste intercambio en particular.
Temporizacin.
La temporizacin se refiere a la forma en la que se coordinan los eventos en el bus.
Con la temporizacin sncrona, la ocurrencia de los eventos en el bus est determinada por
un reloj. El bus incluye una lnea de reloj sobre la cul un reloj transmite una secuencia
regular de unos y ceros alternados de igual duracin. A una transmisin simple 1 0 se le
conoce como un ciclo de reloj o ciclo de bus y define una ranura de tiempo. Todos los
otros dispositivos en el bus pueden leer la lnea de reloj y, por consiguiente, todos los
eventos inician al principio de un ciclo de reloj. Otras seales de bus pueden cambiar en el
flanco de subida de la seal de reloj (con una ligera reaccin de retrazo).
Con una temporizacin asncrona, la sucesin de un evento en un bus sigue y
depende de la ocurrencia de un evento previo.

La temporizacin sncrona es ms sencilla para implantar y probar. Sin embargo, es


menos flexible que la temporizacin asncrona. Como todos los dispositivos en un bus
sncrono estn sujetos a una frecuencia de reloj fija, el sistema no puede tomar ventaja de
avances en el desempeo del dispositivo. Con la temporizacin asncrona, una mezcla de
dispositivos lentos y rpidos puede compartir un bus, usando una tecnologa antigua y
nueva.
Anchura del bus.
La anchura del bus de datos tiene un impacto en el desempeo del sistema: entre
ms amplio sea, mayor ser el nmero de bits que se transfieran a la vez. La anchura del
bus de direccin tiene un impacto en la capacidad del sistema: entre ms amplio sea, ms
grande ser el rango de localidades que puedan ser referenciadas.
Tipos de transferencia de datos.
Todos los buses soportan transferencias tanto de escritura (maestro a esclavo) como
de lectura (esclavo a maestro). En el caso de un bus multiplexado de direccin datos,
primero se utiliza el bus para especificar la direccin y despus para la transferencia de
datos. Para una operacin de lectura, hay por lo general una espera mientras el esclavo est
buscando los datos para colocarlos en el bus. Para una lectura o escritura, tambin puede
haber un retraso si es necesario pasar por el arbitraje a fin de ganar el control del bus para el
resto de la operacin (por ejemplo, apoderarse del bus para solicitar una lectura o una
escritura, despus apoderarse l otra vez para llevar a cabo una lectura o escritura).
En el caso de buses dedicados de direccin y de datos, la direccin se coloca en el
bus de direccin y permanece ah mientras que los datos se colocan en el bus de datos. Para
una operacin de escritura, el maestro pone los datos en el bus de datos tan pronto como la
direccin se ha estabilizado y el esclavo ha tenido la oportunidad de reconocer su direccin.
Para una operacin de lectura, el esclavo pone los datos sobre el bus de datos tan pronto
como ha reconocido su direccin y ha buscado los datos.
Tambin existen varias combinaciones de operaciones que algunos buses permiten.
Una operacin de lectura modificar escritura es tan slo una lectura seguida de
inmediato por una escritura a la misma direccin. La direccin slo se emite una vez al
principio de la operacin. Toda la operacin como un todo es indivisible para prevenir el
acceso de otros maestros potenciales de bus al elemento de datos. El propsito principal de
esta capacidad es el proteger recursos de memoria compartida en un sistema de
multiprogramacin.
Lectura despus escritura es una operacin indivisible que consiste en una
escritura seguida de inmediato por una lectura de la misma direccin. La operacin de
lectura bien puede ejecutarse para propsitos de cualquier verificacin.

Algunos sistemas de bus tambin soportan la transferencia de un bloque de datos.


En este caso, un ciclo de direccin es seguido por n ciclos de datos. El primer tem de los
datos se transfiere a o desde la direccin especificada; los tems de datos restantes son
transferidos a o desde direcciones subsecuentes.

1.4 La memoria.
La memoria es aquella parte del sistema computacional que se utiliza para el
almacenamiento y la recuperacin subsiguiente de datos e instrucciones.

1.4.1.- Caractersticas de los sistemas de memoria.


El tema de la memoria de la computadora se hace ms manejable si clasificamos los
sistemas de memoria de acuerdo con sus caractersticas clave. Las ms importantes se listan
en la tabla 1.2.
Tabla 1.2. Caractersticas de los sistemas de memoria.
Ubicacin
CPU
Interna (principal)
Externa (secundaria)

Desempeo.
Tiempo de acceso.
Tiempo de ciclo.
Razn de transferencia.

Capacidad
Tamao de la palabra
Numero de palabras

Tipo Fsico.
Semiconductor
Superficie magntica.

Unidad de Transferencia
Palabra
Bloque

Caractersticas fsicas.
Voltil / No voltil
Borrable / No borrable

Iniciemos con el aspecto ms visible de la memoria: su localizacin. Hay tanto


memoria interna como externa para la computadora. La memoria interna se considera
equivalente con frecuencia a la memoria principal. La memoria externa consiste en
dispositivos perifricos de almacenamiento, tales como disco y cinta, que son accesibles a
la CPU va controladores de E S.
Una caracterstica obvia de la memoria es su capacidad. Para la memoria interna,
esto se expresa de manera caracterstica en trminos de bytes (un byte = 8 bits) o palabras.
Las longitudes comunes de palabra son 8, 16 y 32 bits. La capacidad de la memoria externa
se expresa tpicamente en trminos de bytes.

10

Un concepto relacionado es el de la unidad de transferencia. Para la memoria


interna, la unidad de transferencia es igual al nmero de lneas de datos dentro y fuera del
mdulo de memoria. Esto es con frecuencia igual a la longitud de palabra, pero puede no
ser as. Para esclarecer ste punto, considere los tres conceptos relacionados con la
memoria interna:

Palabra: Es la unidad natural de organizacin de la memoria. El tamao de la


palabra es casi siempre igual al nmero de bits que se utilizan para representar un
nmero y para la longitud de instruccin.

Unidades direccionables: En varios sistemas, la unidad direccionable es la palabra.


Sin embargo algunos sistemas permiten el direccionamiento a nivel byte. De
cualquier modo, la relacin entre la longitud A de una direccin y el nmero N
de unidades direccionables es 2A = N.

Unidad de transferencia: Para la memoria principal, ste es el nmero de bits que se


leen de o se escriben en la memoria en una sola vez. La unidad de transferencia no
necesita ser igual a una palabra o una unidad direccionable. Para la memoria
externa, los datos se transfieren a menudo en unidades mucho ms grandes que una
palabra, se habla entonces de bloques.

Una de las distinciones ms agudas entre tipos de memoria es el mtodo de acceso a


las unidades de datos. Pueden distinguirse tres tipos:

Acceso Secuencial: La memoria est organizada en unidades de datos, llamadas


registros. El acceso debe hacerse en una secuencias lineal especfica. Informacin
de direccionamiento almacenada se utiliza para separar los registros y auxiliar en el
proceso de recuperacin. Se utiliza un mecanismo compartido de lectura escritura,
y este debe ser motivo de su posicin actual a la posicin deseada, pasando y
desechando cada registro intermedio. De ste modo, el tiempo para accesar un
registro arbitrario es altamente variable. Las unidades de cinta, son de acceso
secuencial.

Acceso Directo: Al igual que en el acceso secuencial, el acceso directo implica un


mecanismo compartido de lectura escritura. Sin embargo, los bloques o registros
individuales tienen una direccin nica que se basa en la localizacin fsica. De
nuevo, el tiempo de acceso, es variable. Las unidades de disco, son de acceso
directo.

Acceso Aleatorio: Cada localidad direccionable en la memoria tiene un mecanismo


nico de direccionamiento, interalambrado fsicamente. El tiempo para accesar una
localidad dada es independiente de la secuencia de accesos anteriores y es
constante. As, cualquier localidad puede ser seleccionada de manera aleatoria y
accesarse y direccionarse en forma directa. Los sistemas de memoria principal son
de acceso aleatorio.
11

Desde el punto de vista del usuario, las dos caractersticas ms importantes de la


memoria son capacidad y desempeo. Se usan tres parmetros de desempeo:

Tiempo de acceso: Para la memoria de acceso aleatorio, es el tiempo que le toma el


efectuar una operacin de lectura o escritura, es decir, el tiempo desde el instante en
que una direccin se presenta a la memoria hasta el instante en que se han
almacenado los datos o estn disponibles para su uso. Para la memoria de acceso no
aleatorio, el tiempo de acceso es el tiempo que le lleva el colocar al mecanismo de
lectura escritura en la localidad deseada.

Tiempo del ciclo de memoria: ste concepto se aplica primeramente a la memoria


de acceso aleatorio y consiste en el tiempo de acceso ms cualquier tiempo
adicional que se necesita , antes de que comience un segundo acceso.

Razn de transferencia: sta es la razn a la cul pueden transferirse datos hacia o


desde una unidad de memoria. Para la memoria de acceso aleatorio, es igual a
1 / (tiempo de ciclo). Para la memoria de acceso no aleatorio, se mantiene la
siguiente relacin:
TN = TA + (N/R)

Donde:
TN = Tiempo promedio para leer o escribir N bits.
TA = Tiempo promedio de acceso.
N = Nmero de bits.
R = Razn de transferencia, en bits por segundo (bps).
Una variedad de tipos fsicos de memoria se han empleado. Los dos ms comunes
en la actualidad, son la memoria de semiconductor, que utiliza la tecnologa LSI o VLSI, y
la memoria de superficie magntica, que se utiliza para el disco y la cinta.
Varias caractersticas fsicas de almacenamiento de datos son importantes. En una
memoria voltil, la informacin decae en forma natural o se pierde cuando la potencia
elctrica se apaga. En una memoria no voltil, la informacin una vez registrada permanece
sin deterioro hasta que se cambia de manera deliberada. No se necesita potencia elctrica
para retener la informacin. Las memorias de superficie magntica son no voltiles. La
memoria de semiconductor puede ser voltil o no voltil. La memoria no borrable no puede
ser alterada, excepto mediante la destruccin de la unidad de almacenamiento. La memoria
de semiconductor de este tipo se conoce como memoria de solo lectura (ROM, read only
memory). Por necesidad, una memoria prctica no borrable tambin debe ser no voltil.
Para la memoria de acceso aleatorio, la organizacin es un asunto clave de diseo.
Por organizacin se da a entender el arreglo fsico de los bits para formar palabras.

12

1.4.2.- Memoria principal de semiconductor.


Tipos de memoria de semiconductor de acceso aleatorio.
Todos los tipos de memoria que se estudiarn son de acceso aleatorio. Es decir, las
palabras individuales de la memoria se accesan en forma directa por medio de la lgica de
direccionamiento interalambrada.
La tabla 1.3 lista los principales tipos de memoria de semiconductor. l ms comn se
conoce como memoria de acceso aleatoria (RAM, Random Access Memory), Esto es, claro
esta, un error en el uso del trmino, pues todos los tipos enlistados son de acceso aleatorio.
Una caracterstica que distingue a la RAM es que permite tanto leer desde la memoria
como escribir con facilidad y rapidez informacin nueva en la memoria. Tanto la lectura como la
escritura se logran mediante el uso de seales elctricas.
La otra caracterstica distintiva de la RAM es que es voltil. Una RAM debe contar
con un suministro de energa constante. Si el suministro de energa se interrumpe, los datos
se pierden. Por ello, la RAM solo se puede usar como medio de almacenamiento temporal.
La tecnologa de la RAM se ha dividido en dos: esttica y dinmica. Una RAM
dinmica se compone de celdas que almacenan datos bajo la forma de cargas en
capacitores. La presencia o ausencia de carga en un capacitor se interpreta como un 1 o un
0 binario. Como los capacitores tienen una tendencia natural a descargarse, las RAM
dinmicas necesitan refrescado de cargas peridico para actualizar el almacenamiento de
datos.
En una RAM esttica, los valores binarios se almacenan al usar configuraciones
con compuertas lgicas (flip flops). Una RAM esttica alojar los datos, siempre y
cuando se le suministre energa.
La RAM esttica y dinmica son voltiles. Una celda de memoria dinmica es ms
simple y por ello ms pequea que una celda de memoria esttica. Por eso, una RAM
dinmica es ms densa (celdas ms pequeas = ms celdas por unidad de rea) y menos
costosa que la RAM esttica correspondiente. Por otra parte, la RAM dinmica requiere el
apoyo de circuitos de refrescado. Por ltimo, las RAM estticas, en general, son en cierta
forma ms veloces que las dinmicas.

Existen varios tipos de chips de RAM dinmica. El tipo ms antiguo que continua
en uso es la DRAM FPM. (Modo de pgina rpida, Fast Page Mode) internamente, la
organizacin es una matriz de bits; el hardware presenta una direccin de rengln y luego
recorre las direcciones de columna.

13

La DRAM FPM esta siendo reemplazada gradualmente por la DRAM EDO (salida
de datos extendida, Extended Data Output), que permite iniciar una segunda referencia a la
memoria antes de que la anterior se haya completado.

Este sencillo uso de conductos nos hace que una sola referencia a la memoria sea
ms rpida, pero si mejora el ancho de banda de la memoria, que produce las palabras por
segundo.

Tanto los chips FPM como los EDO son asncronos, lo que significa que las lneas
de direccin y de datos no estn controladas por un mismo reloj. En contraste, la SDRAM
(DRAM sincrnica) es un hbrido de RAM esttica y dinmica y es controlado por un solo
reloj sincrnico.

La SDRAM se usa a menudo en las caches grandes y podra ser la tecnologa


preferida para las memorias principales en el futuro.

Tabla 1.3. Tipos de Memorias de Semiconductor.


Tipo de Memoria

Categora

Borrado

Memoria de acceso
Aleatorio (RAM)

Memoria de
Lectura/
Escritura

Elctrico a
Nivel
byte

Memoria de solo
Lectura /ROM
ROM Programable
(PROM)

Volatibilidad
Voltil

Mscaras
Memoria de solo
lectura

No es
Posible

ROM Programable
(EPROM)

Luz UV a
Nivel chip

Memoria Flash

Electrnico
nivel bloque
Elctrico a
nivel byte

PROM borrable
Elctricamente
(EEPROM)

Mecanismo de
Escritura
De manera
Electrnica

Memoria de
Lectura
Principalmente

De
Manera
Electrnica

No
Voltil

14

En contraposicin de la RAM, est la memoria de solo lectura (ROM, Read Only


Memory). Como su nombre lo sugiere, una ROM contiene un patrn permanente de datos
que no se pueden cambiar. Aunque es posible leer una ROM, en su operacin normal, no es
posible escribir nuevos datos en ella.
Los datos de una ROM se insertan durante su fabricacin, bsicamente, exponiendo
un material fotosensible a travs de una mscara que contiene un patrn de bits deseado. La
nica forma de modificar el programa de una ROM es cambiar el chip.
Las ROM son mucho ms econmicas que las RAM, cuando se producen en
grandes cantidades, pues as el costo de elaborar una mscara se diluye. Sin embargo, estas
memorias son inflexibles, por que no pueden modificarse despus de su fabricacin, no hay
espacio para errores, si un bit es incorrecto, todo el lote de la ROM se debe desechar.
Una alternativa menos cara es usar la PROM ( ROM Programable). Una PROM es
parecida a una ROM, excepto que puede programarse (una vez) en el campo, lo que elimina
el retraso por surtido.
Muchas PROM contienen una matriz de diminutos fusibles. Un fusible especfico puede
quemarse seleccionando su rengln y columna y aplicando despus un voltaje alto a una
terminal especial del chip.
Al igual que la ROM, la PROM no es voltil y solo se puede escribir en ella una vez. En
la PROM el proceso de escritura se ejecuta de manera elctrica y lo puede llevar a cabo un
consumidor o un distribuidor despus de la fabricacin del chip original. Se requiere equipo
especial en el proceso de escritura o de programacin. Las PROM proporcionan flexibilidad
as como ventajas. La ROM es conveniente para altos volmenes de produccin.
Otra variante de la memoria de solo lectura es la memoria de lectura principalmente, que es
til en aplicaciones donde las operaciones de lectura son mucho ms frecuentes que las de
escritura y en las que se requiere almacenamiento no voltil. Hay tres formas comunes de
memoria de lectura principalmente: EPROM, EEPROM y memoria flash.
En la memoria de solo lectura programable y borrable en forma ptica (EPROM, erasable
programmable read only memory) se lee y se escribe de manera elctrica, al igual que la
PROM. Sin embargo, antes de efectuar una operacin de escritura, todas las celdas de
almacenamiento se deben borrar hasta alcanzar el mismo estado inicial; para ello, se expone el
circuito integrado (que posee una ventana de vidrio) a una radiacin ultravioleta. ste proceso de
borrado se puede realizar varias veces, cada borrado quiz tarde algunos minutos en llevarse a
cabo. As, la EPROM se puede alterar en mltiples ocasiones y, al igual que la ROM y la
PROM, almacena los datos de manera indefinida. Para cantidades comparables de
almacenamiento, la EPROM resulta m cara que la PROM; pero tiene la ventaja de la capacidad
de actualizacin mltiple.
La memoria de solo lectura programable y borrable elctricamente (EEPROM,
electrically erasable programmable read only memory). Es unan memoria de lectura
principalmente en la cul se puede escribir en cualquier momento, sin tener que borrar el

15

contenido anterior; solo el byte o los bytes diseccionados se actualizan. La EEPROM es ms


cara y menos densa que la EPROM, por lo que soporta menos bits por chip.
Una de las formas ms reciente de memoria de semiconductor es la memoria flash
(denominada as por la velocidad a la que se puede volver a programar). Introducida por primera
vez a principios de la dcada de los ochentas, la memoria flash ocupa un sitio intermedio entre la
EPROM y la EEPROM, tanto en costo como en funcionalidad. Al igual que la EEPROM, la
memoria flash usa una tecnologa de borrado elctrico. Una memoria flash completa se puede
borrar en algunos segundos, por lo que es mucho ms veloz que la EEPROM. Adems , es
posible borrar bloques de memoria en vez de un chip completo. Sin embargo, la memoria flash
no proporciona borrado a nivel de byte. Como la EPROM, la memoria flash slo usa un
transistor por bit y por ello logra la densidad alta (en comparacin con la EEPROM) de la
EPROM.
Organizacin.
El elemento bsico de una memoria semiconductora es la celda de memoria. Aunque se
utilizan diversas tecnologas electrnicas, todas las celdas de memoria comparten ciertas
propiedades:

Presentan dos estados estables (o semi estables), que pueden emplearse para
representar el 1 y el 0 binarios.

Puede escribirse en ellas (al menos una vez) para fijar su contenido.

Pueden leerse para detectar su estado.

La figura 1.4. describe el funcionamiento de una celda de memoria. Lo ms comn es


que la celda tenga tres terminales para transportar seales elctricas. La terminal de seleccin,
como su nombre lo indica, selecciona la celda para la operacin de escritura o de lectura. La
terminal de control indica el tipo de operacin. Para la escritura, la tercera Terminal proporciona
la seal que fija el estado de la celda a 1 o a 0. En una lectura, la tercera terminal se utiliza como
salida del estado de la celda. Los detalles sobre estructura interna, funcionamiento y
temporizacin de la celda de memoria dependen de cada tecnologa especfica de circuitos
integrados. Hasta ste momento, daremos por entendido que las celdas individuales pueden
seleccionarse para operaciones de lectura y de escritura.

Figura 1.4. Funcionamiento de una celda de memoria

16

Universidad Autnoma de Tamaulipas


Facultad de Ingeniera Arturo Narro Siller

Captulo II.
El P 8086.

17

2.1 Historia de los microprocesadores Intel.


Intel inici sus operaciones siendo un fabricante de memoria para computadoras. En
1971 fue la primera compaa en lograr la integracin de suficientes transistores como para
vender un microprocesador programable completo con un juego de instrucciones de 4 bits,
que se volvera muy comn en calculadoras de bolsillo: El Intel 4004.
Al 4004 lo sucedieron el 8008 en 1972 y en 1974 el 8080, cada vez logrando mayor
capacidad. En 1978, Intel comenz a comercializar el procesador 8086, un ambicioso chip
de 16 bits potencialmente capaz de ser el corazn de computadoras de propsito mltiple.
El 8086 se comercializ en versiones desde 5 y hasta 10MHz.
IBM adopt al hermano menor del 8086 (el 8088, un procesador con un bus de
datos interno de 16 bits, pero con el bus externo de 8 bits, lo que permita aprovechar
diseos y circuitos para sistemas de 8 bits) para basarse en l y lanzar la lnea de
computadoras ms exitosa de la historia: el IBM PC (1981) y el IBM PC/XT (eXtended
Technology) (1983).
El xito de esta serie fue tal que a partir de ese momento, todos los CPUs de Intel
mantuvieron una estricta poltica de compatibilidad hacia atrs - Todo CPU fabricado por
Intel desde ese momento y hasta el 2001 es capaz de ejecutar cdigo compilado para
cualquiera de sus predecesores.
Al 8086 lo sucedi el 80286 en 1982 (en el cual se bas la IBM PC/AT, 1985). Este
chip, de 24/16 bits, implement el modo protegido de ejecucin, sentando las bases para la
aparicin de los verdaderos sistemas multitarea de escritorio. El 80286 apareci a 6MHz, y
a lo largo de los aos lleg hasta los 12MHz. Hubo varios sistemas operativos que
aprovecharon su modo protegido para ofrecer multitarea real, tales como las primeras
versiones de OS/2, o Xenix.
Pero el verdadero boom de la multitarea no lleg hasta el nacimiento del 80386
(1985) - Un avance tan fuerte que hoy en da es comn referirse como i386 a toda la lnea
de procesadores que le siguieron (tambin es comn la referencia IA32, Intel Arquitecture
of 32 bits). El 386 fue el primer procesador de Intel de 32 bits, y -magnficas noticias para
los desarrolladores- utilizarlo para aplicaciones de multitarea sera ya mucho ms fcil de lo
que lo fue con el 80286. El 80386 maneja velocidades de 16 a 33MHz.
El 80486 apareci en 1989. Fue un cambio relativamente menor frente al 80386 Hasta su aparicin, todas las computadoras PC tenan la opcin de comprar un -bastante
caro- coprocesador numrico - para las XT, el 8087. Para las AT, el 80287. Para las 386, el
80387. A partir del 80486, el coprocesador numrico, as como la memoria cach fueron
integrados al CPU, trayendo como resultado un gran aumento en la velocidad percibida por
los usuarios, sin cambios arquitectnicos de fondo importantes. El 486 existe en versiones
desde 25 y hasta 100MHz.

18

En 1993 apareci el Pentium. Por qu ya no se llam 80586? Porque muchas


empresas competidoras de Intel comenzaron a producir CPUs con el mismo nombre que los
de Intel. Ante el fallo de que un nmero no puede ser tomado como marca registrada, a
partir de entonces los procesadores llevan un nombre propio. Este procesador incorporaba
bastantes novedades, entre ellas un coprocesador muy mejorado y un doble sistema de
prefetch, lo que le permita en ciertas situaciones ejecutar dos instrucciones simultneas,
con el consiguiente aumento de rendimiento (desgraciadamente, sto solo era posible bajo
ciertas combinaciones muy estrictas de instrucciones, con lo que el aumento de rendimiento
slo era apreciable en aplicaciones compiladas especficamente para l). El Pentium lleg
desde los 60 hasta los 225MHz.
Poco despus hizo su aparicin el Pentium Pro, una versin orientada a servidores que
inclua la cach de segundo nivel en el mismo encapsulado que el procesador.
Desgraciadamente su elevado precio supuso un freno a su expansin.
Desde entonces, la tendencia al aparecer el Pentium II (1997), Pentium III (1999) y
Pentium 4 (2000) ha sido la integracin de ms componentes, la adicin de instrucciones
especficas de multimedia y a elevar la velocidad de reloj tanto como sea posible. El
Pentium II lleg desde 200 hasta 450MHz. El Pentium III desde 550 a 1200 (1.2GHz). El
Pentium 4 debut a 1.3GHz y actualmente (agosto del 2003) llega ya a los 3.2GHz.
Paralelamente al Pentium II dos familias de CPUs fueron anunciadas: El Celeron,
que es similar a los Pentium pero con menos memoria cach y, por consiguiente, menor
precio y velocidad, y el Xeon, orientado a servidores, con ms memoria cach - y claro
est, mucho mayor costo.
En 2001, tras una muy larga etapa de desarrollo, fue anunciado el Itanium. Este es el
primer CPU desde 1978 que produce Intel que no es compatible con la arquitectura x86 esta nueva arquitectura de 64 bits es denominada IA64. Esta nueva arquitectura no ha
tenido el efecto que se vaticinaba en un principio, en parte por la carencia de software listo
para ser utilizado y en parte porque la velocidad es ligeramente menor a la de la
arquitectura i386. Hoy en da, la competencia se pone ms difcil an para Intel, pues AMD
-compaa rival de Intel- anunci la arquitectura x86-64, que es una extensin a la i386
(compatible con todo el software ya existente) permitindole ejecutar cdigo de 64 bits.

2.2 Caractersticas del microprocesador 8086.

Capacidad de direccionamiento de 1 Mb de memoria.

Arquitectura diseada para operar con un lenguaje ensamblador muy potente


y operar con lenguajes de alto nivel.

Contiene 14 registros de 16 bits con operacin simtrica.

Tiene 8 muy comunes modos de direccionamiento.

19

Operacin a nivel de bit, byte, word y block.

Operaciones aritmticas binarias o decimales de 8 y 16 bits con signo o sin


signo, incluyendo multiplicaciones y divisiones.

Rango de frecuencia de reloj.


5 Mhz para el 8086.
8 Mhz para el 8086 2
10 Mhz para el 8086 1

Interfase compatible con sistemas multibus.

2.3.- Operacin general.


Las funciones internas del microprocesador 8086 estas divididas lgicamente en dos
unidades de procesamiento. La primera es la Unidad de Interfase del Bus (BIU) y la segunda es
la Unidad de Ejecucin (EU) como se muestra en la figura 2.1.
Estas unidades pueden interactuar directamente pero en la mayor parte de la ejecucin
operan como microprocesadores separados y asncronos.
La unidad de Interfase del Bus provee las funciones relacionadas con la bsqueda de
instrucciones y de cola, bsqueda de operandos, almacenamiento y reubicacin de
direcciones. Esta unidad tambin provee las seales bsicas para el bus de control.
El mecanismo de colocacin de instrucciones en la fila de espera o cola de
instrucciones (QUEUE) permite que la unidad de interfase del bus utilice la memoria muy
eficientemente. En cualquier instante hay espacio cuando menos para dos bytes en la fila de
espera.
La unidad de interfase del bus intenta traer una palabra en el ciclo de bsqueda de
la memoria, esto reduce gradualmente el tiempo muerto en el bus de memoria. La cola de
instrucciones acta como buffer de instrucciones segn como lo requiera.
La Unidad de Ejecucin, recibe instrucciones prebuscadas por la BIU y provee un
direccionado de operandos relocalizado para la BIU. Los operandos en memoria son
pasados a travs de la BIU para procesarlas por el EU, la cual pasa el resultado a la BIU
para su almacenamiento.

20

Figura 2.1. Diagrama de bloques del microprocesador 8086.

2.4.- Requisitos de suministro de corriente.


Los microprocesadores 8086 y 8088 requieren de un suministro de voltaje de +5
Volts con una tolerancia de 10 %. El 8086 tiene un consumo mximo de corriente de 360
mA, mientras que el 8088 usa un mximo de 340 mA. Ambos microprocesadores funcionan
en temperaturas ambientales entre 0 C y alrededor de 82 C ( 32 a 180 F
respectivamente). Este rango de operacin no es lo suficientemente amplio como para
permitir su uso en exteriores durante el invierno o aun en verano, pero estn disponibles las
versiones de los microprocesadores 8086 y 8088 de rango de temperatura extendido.
Tambin existe una versin CMOS, la cual requiere una corriente muy baja de alimentacin
y posee un intervalo de temperatura extendido. El 80C88 y 80C86 son versiones CMOS
que requieren solamente 10 mA de corriente de alimentacin y operan bajo condiciones
extremas de temperatura de 40 C hasta 107 C.

21

2.5.- Caractersticas de CD.


Es imposible conectar algo a las terminales del microprocesador sin saber cual es la
corriente de entrada requerida en una terminal de entrada y cual es la capacidad de corriente
de salida en una terminal de salida. Este conocimiento permite al diseador seleccionar los
componentes de interfase adecuados para el microprocesador sin miedo de daar algo.
Caractersticas de la entrada.- Las caractersticas de entrada de estos
microprocesadores son compatibles con todos los componentes estndar lgicos
disponibles actualmente. Los valores de corriente de entrada son muy bajos porque las
entradas son las conexiones de compuerta de transistores MOSFET y representan
solamente corrientes de fuga.
Caractersticas de la salida.- El nivel de voltaje 1 lgico de los 8086 y 8088 es
compatible con el de la mayor parte de las familias lgicas estndar, pero el nivel lgico
0 no lo es. Los circuitos lgicos estndar tienen un voltaje 0 lgico mximo de 0.4 V y
en los 8086/8088 es un mximo de 0.45 V. Por tanto, hay una diferencia de 0.05 V.
Esta diferencia reduce la inmunidad al ruido de un nivel estndar de 400 a 350 mV
(0.8 V 0.45 V). (La inmunidad al ruido es la diferencia entre los valores de salida y
entrada correspondientes a 0 lgico). Dicha inmunidad al ruido reducida puede causar
problemas con conexiones de cables largos o con demasiadas cargas. Por ello se
recomienda no conectar ms de 10 cargas de cualquier tipo o combinacin de tipos a una
terminal de salida sin una compuerta de reforzamiento (buffer). Si este factor de carga
fuera excedido, el ruido empezara a tener efectos en problemas de temporizacin.
La mejor eleccin en tipos de componentes para la conexin a una terminal de
salida de estos microprocesadores es un componente de la familia lgica LS, 74ALS,
74AHC. Se recomienda que si requiere un abanico de salida de ms de 10 cargas unitarias,
el sistema debe contener un buffer.

2.6 Distribucin de terminales de los microprocesadores 8086 / 8088.


En la figura 2.2 se ilustran los diagramas de terminales de los microprocesadores
8086 y 8088. Al observar con cuidado, se ver que son pocas las diferencias diferencias
entre estos dos microprocesadores, ambos se presenta en encapsulados de 40 terminales en
doble lnea (DIP).

22

Figura 2.2. Distribucin de terminales de los microprocesadores (a) 8086, (b)


8088.
En la figura 2.2 se ilustran los diagramas de terminales de los microprocesadores
8086 y 8088. Al observar con cuidado, se ver que son pocas las diferencias diferencias
entre estos dos microprocesadores, ambos se presenta en encapsulados de 40 terminales en
doble lnea (DIP).
El 8086 es un microprocesador con un canal de datos externos de 16 bits y el
microprocesador 8088 tiene un canal de datos externos de 8 bits. Como se ilustra, el 8086
tiene las terminales AD0-AD15, mientras que el 8088 tiene las terminales AD 0-AD7, por lo
que el canal de datos es la diferencia ms importante entre estos microprocesadores.
Pero hay una pequea diferencia en una de las seales de control. El 8086 tiene una
terminal
mientras que el 8088 tiene una terminal
. Otra diferencia en sus
terminales aparece en la terminal 34 de ambos circuitos integrados, en el 8088 es la
terminal
, mientras que en el 8086 es
/ S7.

2.7.- Organizacin de la memoria del P 8086.


El microprocesador provee 20 bits para direccionamiento a memoria. La memoria
est organizada como un arreglo lineal de hasta 1 milln de bytes, diseccionndose a partir
de la localidad OOOOOH hasta la localidad FFFFFH, a esto se le conoce como
distribucin lgica.

23

La memoria adems est dividida lgicamente en segmentos llamados: segmento de


cdigo, segmento de datos, segmento extra datos y segmentos de stack; estos segmentos
son de hasta 64 Kb cada uno.
El inicio de cada uno de estos segmentos es, por lo comn, un lmite de prrafo
(cualquier localidad de memoria divisible entre (16)10 o (10)16). La distribucin lgica de la
memoria se presenta en la figura 2.3.

Figura 2.3. Distribucin lgica de la memoria del P 8086.


Fsicamente, la memoria est organizada en bancos, cuya cantidad depende
directamente del nmero de lneas del bus de datos externo del microprocesador (por cada 8
lneas de datos externos, existe un banco de memoria). Entonces, para el microprocesador
8088, que tiene 8 lneas de datos externos, se tiene un solo banco de memoria, por lo que la
organizacin lgica y fsica de la memoria en dicho microprocesador es prcticamente la
misma. En el caso del 8086, que tiene 16 lneas de datos externas, se tienen dos bancos
(cada banco tiene un tamao de 512 Kb): El banco par, tambin llamado banco bajo, que
guarda las direcciones de memoria pares y el banco impar, llamado banco alto, que guarda
las direcciones impares (ver figura 2.4).
El microprocesador provee dos seales de habilitacin
y A0 para permitir
selectivamente una lectura desde o una escritura dentro de cualquiera de las localidades par
o impar, o en ambas. El flujo de instrucciones es buscado desde la memoria como palabras
y son direccionadas internamente por el procesador a nivel de byte si es necesario.

24

En la figura 2.4 se muestra la organizacin fsica de la memoria de los


microprocesadores 8086, 8088, 80286, 80386 y 80486.
Para microprocesadores de 32 lneas de datos externas (80386DX, 80486SX y
80486DX), se tienen cuatro bancos de datos.

Figura 2.4. Sistemas de memoria fsica de diversos microprocesadores Intel.

2.8.- Modo mnimo y modo mximo.


Los requerimientos para soporte mnimo y mximo de los sistemas 8086. Son tan
diferentes que no pueden trabajar eficientemente con nicamente 40 terminales definidas.
En consecuencia, el 8086 es equipado con una terminal de opcin
, la cul define
la configuracin del sistema. La definicin de un cierto subconjunto de terminales depende
de la condicin de la terminal de opcin.
Cuando la terminal
es conectada a tierra, el 8086 trabaja con las
terminales 24 a la 31 en modo mximo. Un controlador del bus interpreta el estado de la
informacin codificado con S0, S1, y S2 para generar un tiempo en el bus de seales de
control compatibles con la arquitectura del multibus. Cuando la terminal
es
conectada a VCC, el 8086 genera seales de control de bus por si mismo, usando las
terminales 24 a la 31.

25

Tabla 2.1. Tabla que muestra los segmentos de memoria y los registros de
segmento.
Segmento de memoria

Registro de segmento
seleccionado

Instrucciones

CODIGO (CS)

Stack

Stack (SS)

Datos locales

DATA (DS)

Datos Externos
(Globales)

EXTRA (ES)

Regla de seleccin usada


segn la referencia
Automticamente con todas las
instrucciones prebuscadas.
Todos los pushes and pops en el
stack. Referencia a memoria
relativa
a
BP,
excepto
referencias a memoria de datos.
Referencia a datos cuando: es
relativo al stack, destino de
operaciones de cadena.
Destino de operaciones de
cadena.

Todas las referencias a memoria son hechas en base a un direccionamiento relativo


en los registros de segmento de alta velocidad. El registro de segmento a ser seleccionado
es escogido automticamente de acuerdo a las reglas de la tabla 2.1.

2.9.- Direccionamiento de localidades de memoria.


Dependiendo del modelo, el procesador puede acceder uno o ms bytes de memoria
a la vez.
Considere l nmero decimal 1,025. La representacin hexadecimal de sta cifra,
0401H, requiere de 2 bytes (o una palabra) de memoria. Consta de un byte de orden alto
(ms significativo), 04, y un byte de orden bajo (menos significativo), 01. El sistema
almacena en memoria estos bytes en secuencia inversa de bytes: el byte de orden bajo en la
direccin baja de memoria y el byte de orden alto en la direccin alta de memoria. Por
ejemplo, el procesador transferira 0401H de un registro a las localidades de memoria 5612
y 5613 como:
5611
XX

5612
01

5613
04

5614
XX

Figura 2.5. Almacenamiento de los datos en la memoria.


El procesador espera que los datos numricos en la memoria estn en secuencia
inversa de bytes y los procesa de acuerdo con esto. Cuando el procesador recupera la

26

palabra de la memoria, otra vez invierte los bytes, restablecindolos de manera correcta en
el registro como 0401H.
Aunque sta caracterstica es enteramente automtica, tiene que estar alerta cuando
programe y depure programas en lenguaje ensamblador.
Al programar el lenguaje ensamblador se tiene que distinguir claramente entre la
direccin y los contenidos de una localidad de memoria. En el ejemplo anterior, el
contenido de la localidad 5612 es 01 y el contenido de la localidad 5613 es 04.

2.10.- Segmentos y direccionamiento.


Un segmento es un rea especial en un programa que inicia en un lmite de un
prrafo, esto es, en una localidad regularmente divisible entre (16)10 o (10)16. Aunque un
segmento puede estar ubicado casi en cualquier lugar de la memoria y, en modo real, puede
ser hasta de 64K, solo necesita tanto espacio como el programa requiera para su ejecucin.
Se puede tener cualquier nmero de segmentos, para direccionar un segmento en
particular basta cambiar la direccin en el registro del segmento apropiado. Los tres
segmentos principales son los segmentos de cdigo, de datos y de la pila.
Segmento de cdigo.
El segmento de cdigo (CS) contiene las instrucciones de mquina que son
ejecutadas. Por lo comn, la primera instruccin ejecutable est en el inicio del segmento, y
el sistema operativo enlaza a esa localidad para iniciar la ejecucin del programa. Como su
nombre indica, el registro de CS direcciona el segmento de cdigo.
Segmento de datos
El segmento de datos (DS) contiene datos, constantes y reas de trabajo definidos
por el programa. El registro de DS direcciona el segmento de datos.
Segmento de pila (Stack).
En trminos sencillos, la pila contiene los datos y direcciones que necesita guardar
temporalmente o para uso de las llamadas a subrutinas. El registro de segmento de la
Pila (SS) direcciona el segmento de la pila.
2.10.1.-Lmites de los segmentos.
Los registros de segmentos contienen la direccin inicial de cada segmento. Un
segmento inicia en un lmite de prrafo, que es una direccin por lo comn divisible entre
27

(16)10 o (10)16. Suponga que un segmento de datos inicia en la localidad de memoria


045F0H. Ya que en ste y todos los dems casos el ltimo dgito hexadecimal de la derecha
es 0, los diseadores de computadoras decidieron que sera innecesario almacenar el dgito
mencionado en el registro del segmento. As, 045F0H se almacena como 045FH, con el
cero de la derecha sobrentendido.
2.10.2.- Desplazamiento de segmentos.
En un programa, todas las localidades de memoria estn referidas a una direccin
inicial de segmento. La distancia en bytes desde la direccin del segmento se define como
el desplazamiento (offset). Un desplazamiento de dos bytes (16 bits) puede estar en el
rango de 0000H hasta FFFFH, o bien, desde 0 hasta 65,535.
As, el primer byte del segmento de cdigo tiene un desplazamiento 00, el segundo
byte tiene un desplazamiento 01, etc., hasta el desplazamiento 65,535. Para referir cualquier
direccin de memoria en un segmento, el procesador combina la direccin del segmento en
un registro de segmento con un valor de desplazamiento.
En el ejemplo siguiente, el registro DS contiene la direccin inicial del segmento de
datos en 045F[0]H y una instruccin hace referencia a una localidad con un desplazamiento
de 0032H bytes dentro del segmento de datos.
Por tanto, la localidad real de memoria referida por la instruccin es 04622H:
Direccin del ssegmento DS: 045F[0]H
Desplazamiento: 003 2 H
Direccin Real: 0462 2 H

2.11.- Registros.
Los registros del procesador se emplean para controlar instrucciones en ejecucin,
manejar direccionamiento de memoria y proporcionar capacidad aritmtica. Los registros
son direccionables por medio de un nombre. En el P8086 existen 14 registros (todos de 16
bits), como se aprecia en la figura 2.6.

28

Figura 2.6. Registros del Microprocesador 8086.


2.11.1.- Registros de segmento.
Un registro de segmento tiene 16 bits de longitud y facilita un rea de memoria para
direccionamiento conocida como el segmento actual. Como hemos dicho, un segmento se
alinea en un lmite de un prrafo y su direccin en un registro de segmento supone cuatro
bits 0 a su derecha.
Registro CS.- El DOS almacena la direccin inicial del segmento de cdigo de un
programa en el registro CS. Esta direccin de segmento, ms un valor de desplazamiento en
el registro apuntador de instruccin (IP), indica la direccin de una instruccin que es
buscada para su ejecucin.
Registro DS.- la direccin inicial de un segmento de datos del programa es
almacenada en el registro DS. En trminos sencillos, esta direccin, mas un valor de
desplazamiento en una instruccin, genera una referencia a la localidad de un byte
especfico en el segmento de datos.
Registro SS.- El registro SS permite la colocacin en memoria de una pila, para
almacenamiento temporal de direcciones y datos. El DOS almacena la direccin de inicio

29

del segmento de pila de un programa en el registro SS. sta direccin de segmento, ms un


valor de desplazamiento en el registro del apuntador de la pila (SP), indica la palabra actual
en la pila que est siendo direccionada.
Registro ES.- Algunas operaciones con cadenas de caracteres (datos de caracteres)
utilizan el registro extra de segmento para manejar el direccionamiento de memoria. En este
contexto, el registro ES esta asociada con el registro DI (ndice destino).
2.11.2.- Registro Apuntador de Instrucciones.
El registro apuntador de instrucciones (IP) de 16 bits contiene el desplazamiento de
direccin de la siguiente instruccin que se ejecuta. El IP esta asociado con el registro CS
en el sentido de que el IP indica la instruccin actual dentro del segmento de cdigo que s
esta ejecutando actualmente.
En el ejemplo siguiente, el registro CS contiene 25A4 [0]H y el IP contiene 412H.
Para encontrar la siguiente instruccin que ser ejecutada, el procesador combina las
direcciones en CS y el IP.
Direccin de segmento en el registro CS:
25A40H
Direccin de desplazamiento en IP
:+
412H
Direccin de la siguiente instruccin
:
25E52H

2.11.3.- Registros apuntadores.


Los registros SP (apuntador de pila) y BP (apuntador base) estn asociados con el
registro SS y permite al sistema accesar datos en el segmento de la pila.
Registro SP.- El apuntador de la pila de 16 bits esta asociada con el registro SS y
proporciona un valor de desplazamiento que se refiere a la palabra actual que esta siendo
preparada en la pila.
En el ejemplo siguiente, el registro SS contiene la direccin de segmento 27B3[0]H
y el SP, el desplazamiento 312H. Para encontrar la palabra actual que esta siendo procesada
en la pila, la computadora combina las direcciones en el SS y el SP.
Direccin de segmento en el registro SS:
27B30H
Desplazamiento en el registro SP
: +
312H
Direccin en la pila
:
27E42H
Registro BP.- El registro BP de 16 bits facilita la referencia de parmetros, los
cuales son datos y direcciones transmitidos va la pila.
30

2.11.4.- Registros de propsito general.


Los registros de propsito general AX, BX, CX y DX son los caballos de batalla del
sistema, son nicos en el sentido de que se pueden direccionar como una palabra o como
una parte de un byte.
El byte de la izquierda es la parte alta, y el byte de la derecha es la parte baja.
Por ejemplo, el registro CX consta de una parte alta (CH) y una parte baja (CL), y puede
referirse a cualquier parte por su nombre.
Registro AX.- El registro AX, el acumulador principal, es utilizado para
operaciones que implican entrada / salida y la mayor parte de la aritmtica. Por ejemplo, las
instrucciones para multiplicar; dividir y traducir suponen el uso del AX. Tambin, algunas
operaciones generan cdigo ms eficiente si se refiere al AX en lugar de a los otros
registros.
Registro BX.- El BX es conocido como el registro base ya que es el nico registro
de propsito general que puede ser ndice para direccionamiento indexado. Tambin es
comn emplear el BX para clculos.
Registro CX.- El CX conocido como el registro contador. Puede contener un valor
para controlar l nmero de veces que un ciclo se repite o un valor para corrimiento de bits
o rotaciones, hacia la derecha o hacia la izquierda. El CX tambin es usado en muchos
clculos.
Registro DX.- El DX es conocido como el registro de datos. Algunas operaciones
de entrada / salida requieren su uso, y las operaciones de multiplicacin y divisin con
cifras grandes suponen al DX y al AX trabajando juntos.
2.11.5.- Registros de ndice.
Los registros SI y DI estn disponibles para direccionamiento indexado y para
sumas y restas.
Registro SI.- El registro ndice fuente de 16 bits es requerido para algunas
operaciones con cadenas de caracteres. En este contexto, el SI esta asociado con el registro
DS.
Registro DI.- El registro ndice destino tambin es requerido por algunas
operaciones con cadenas de caracteres. En este contexto, DI esta asociado con el registro
ES.
2.11.6.- Registro de banderas.
Las banderas indican la condicin del microprocesador a la vez que controlan su
funcionamiento. En la figura 2.7 se ilustran los registros de todas las versiones de los
31

microprocesadores 8086 a 80486. Se debe tener en cuenta que las banderas son compatibles
hacia arriba desde el 8086/8088 hasta el 80486. El 8086-80286 contiene un registro de
banderas, FLAG (16 bits) y los 80386-80486 contienen un registro EFLAG (registro de
bandera extendido, de 32 bits).
Los bits de bandera cambian despus de ejecutar muchas de las instrucciones
aritmticas y lgicas. Algunas de las banderas se utilizan para controlar ciertas
caractersticas del microprocesador.

Figura 2.7. Registro de banderas para diversos tipos de microprocesadores.


De los 16 bits del registro de banderas del microprocesador 8086/8088, nueve son
comunes a toda la familia de stos procesadores, y sirven para indicar el estado actual de la
mquina y el resultado del procesamiento. Muchas instrucciones que piden comparaciones
y aritmtica cambian el estado de las banderas, algunas de cuyas instrucciones pueden
realizar pruebas para determinar la accin subsecuente.
A continuacin aparece una lista con cada bit de bandera, con una breve descripcin
de su funcin:
C (acarreo).- Indica un acarreo despus de una suma o un prstamo despus de
una resta.
P(paridad).- Es un cero para una paridad impar y un uno para paridad par. La
paridad es un conteo de unos expresado como un nmero par o impar. Por ejemplo, si un
nmero contiene 3 bits con uno binario, tiene paridad impar. Si un nmero contiene cero
bits con valor uno, se considera que tiene paridad par.
A(acarreo auxiliar).- Tiene un acarreo despus de una suma o un prstamo
despus de una resta entre las posiciones de los bits 3 y 4 en el resultado. ste indicador
muy especializado se prueba con las instrucciones DAA y DAS para ajustar el valor de AL
despus de una suma o una resta en BCD.
Z(cero).- Indica el resultado de una operacin aritmtica o lgica es cero. Si Z=1, el
resultado es cero y si Z=0, el resultado es diferente de cero.
32

S(signo).- Indica el signo aritmtico del resultado despus de una suma o una resta. Si
S=1, el resultado es negativo. Si S=0, el resultado es positivo. Se debe tener en cuenta que el
valor del bit ms significativo del resultado se coloca en el bit de signo para cualquier
instruccin que afecte a las banderas.
T(trampa).- Permite la operacin del procesador el modo de un paso, los
programas depuradores, como DEBUG, activan esta bandera de manera que puedan
avanzar en la ejecucin de una sola instruccin a un tiempo,y as examinar el efecto de esa
instruccin sobre los registros y la memoria.
I(interrupcin).- Controla el funcionamiento de la terminal de la entrada INTR
(interrupcin). Si I=1, se habilita la entrada INTR y si I=0, se deshabilita la entrada INTR.
El estado de la bandera I se controla con las instrucciones STI (activar la bandera I) y CLI
(desactivar la bandera I).
D(direccin).- Controla la seleccin de incremento o decremento automtico de los
registros DI o SI durante las instrucciones de cadenas o arreglos. Si D=1 hay decremento
automtico en los registros y si D=0 hay incremento automtico. La bandera D se activa
con la instruccin STD y se desactiva con la instruccin CLD.
OF(sobre flujo).- Es una condicin que ocurre cuando se suman o restan nmeros
con signo. Un sobreflujo indica que el resultado ha excedido de la capacidad de la mquina.
Para operaciones sin signo, no se toma en cuenta sta bandera.
Las banderas ms importantes parea la programacin en ensamblador son O, S, Z y
C para operaciones de comparacin y aritmtica, y D para operaciones con cadenas de
caracteres.

2.12.- Tipos de programas ejecutables.


El DOS soporta a dos tipos de programas ejecutables: .COM y .EXE. Un
programa .COM consta de un segmento de memoria (64Kb) que contiene cdigo, datos, y
la pila. Si se necesita un pequeo programa de utilera o un programa residente en memoria
(un programa que es instalado permanentemente y esta disponible mientras otros programas
estn ejecutndose), se escribe un programa .COM. Un programa .EXE consta de
segmentos de cdigo, datos y de la pila separados y es el mtodo usado por la mayora de
los programas serios.

2.13.- La pila (stack)


Los programas .COM y .EXE, requieren un rea en el programa reservado como
una pila (stack). El propsito de la pila es mantener un espacio para el almacenamiento
temporal de direcciones y datos.

33

El DOS define de manera automtica la pila para un programa .COM, mientras que
para un programa .EXE se debe definir en forma explcita la pila. Cada elemento de dato en
la pila es una palabra (2 bytes). El registro SS como es inicializado por el DOS , contiene la
direccin del inicio de la pila.
Inicialmente, el SP contiene el tamao de la pila, un valor que apunta al byte que
est pasando al final de la pila. La pila difiere de otros segmentos en su mtodo de
almacenar los datos: empieza en la localidad ms alta y almacena los datos hacia abajo por
la memoria.
.........

SS
Direccin del segmento de la
pila

SP
Tope de la pila

La instruccin PUSH (entre otras) disminuye el SP en 2 (hacia abajo), hacia la


siguiente palabra almacenada de la pila y coloca (o empuja, push) un valor ah. La
instruccin POP (entre otras) regresa el valor de la pila e incrementa el SP en 2 hacia arriba,
hacia la siguiente palabra almacenada.
El ejemplo siguiente ilustra como meter el contenido de los registros AX y BX a la
pila y la subsecuente extraccin de ellos. Suponga que el AX contiene 015AH, el BX
contiene 03D2H y el SS contiene 28H (Aqu no nos concierne la direccin en el SS).

1.- Al comienzo, la pila esta vaca se ve as:

.........

SS
Direccin del segmento de la
pila

SP=28
Tope de la pila

34

2.- PUSH AX.- Disminuye el SP en 2 (a 26H) y almacena el contenido del AX, 015AH, en
la pila. Observe que la operacin invierte la secuencia de bytes almacenados, de modo
que 015A se almacena como 5A01:

.........

5A01

SS
Direccin del segmento de la
pila

SP=26
Tope de la pila

3.- PUSH BX.- Disminuye el SP en 2 (a 24H) y almacena el contenido del BX, 03D2H en
la pila:
.........

SS
Direccin del segmento de la
pila

D203

5A01

SP=24
Tope de la pila

4.- POP BX.- Regresa la palabra que se encuentra en la pila, en donde apunta el SP, y la
enva al registro BX e incrementa el SP en 2 (a 26H). El BX ahora contiene 13D2H, con los
bytes correctamente invertidos.
.........

SS
Direccin del segmento de la
pila

D203

5A01

SP=26
Tope de la pila

35

5.- POP AX.- Regresa la palabra que se encuentra en la pila, en donde apunta el SP, y la
enva al registro AX e incrementa el SP en (a 28H). El AX ahora contiene 0154H, con los
bytes correctamente invertidos:
.........

D203

SS
Direccin del segmento de la
pila

5A01

SP=28
Tope de la pila

Note que las instrucciones POP son codificadas en secuencia inversa a las
instrucciones PUSH. As, en el ejemplo se guardaron AX y BX, pero se sacaron el BX y
AX, en ese orden. Adems los valores sacados de la pila aun estn all, aunque el SP ya no
apunta a ellos.
Siempre debe asegurarse que el programa coordine los valores que guarda en la pila
con los valores que saca de ella. Como ste es un requisito directo, un error puede causar
que un programa no funcione. Tambin, para un programa EXE se tiene que definir una pila
que sea suficientemente grande para contener todos los valores que podran ser guardados
en ella.

2.14.- Modos de direccionamiento de datos.


Para explicar los modos de direccionamiento se usar la instruccin MOV ya que es
la ms sencilla y flexible; proporciona el principio para la explicacin de los modos de
direccionamiento de datos.

MOV operando destino, operando fuente


MOV AX, BX
Figura 2.8. La instruccin MOV AX, BX, para explicar
el sentido del flujo de la informacin.

36

En la figura 2.8 se muestra la instruccin MOV y define el sentido del flujo de


datos. La fuente est a la derecha y el destino a la izquierda, juntos al cdigo de operacin
MOV, un cdigo de operacin le indica al microprocesador la operacin que debe ejecutar.
El sentido del flujo es, al principio, una confusin porque se supone que las cosas se
mueven naturalmente de izquierda a derecha, mientras que en ste caso, se mueven de
derecha a izquierda. En una instruccin, siempre hay una coma (,) que separa el destino de
la fuente.

Los siete modos de direccionamiento ms utilizados son:


1.- Direccionamiento de registros. Transfiere un byte o palabra desde el registro
fuente, hasta el registro destino. Ejemplo: la instruccin MOV CX, DX copia el contenido
de tamao palabra en el registro DX y lo pasa al registro CX.
Es importante que para las instrucciones se utilicen registros que sean de tamao
uniforme. Nunca mezcle un registro de 8 bits con uno de 16 bits porque no lo permite el
conjunto de instrucciones del 8086.
En la tabla 2.2 se muestran algunas versiones de instrucciones MOV entre registros.
El nico tipo de instruccin MOV para registro que no se permite, es una instruccin MOV
entre registros de segmento. Tambin se debe tener en cuenta que el contenido del registro
de segmento de cdigo no se puede cambiar con una instruccin MOV.
Tabla 2.2. Ejemplos de instrucciones que usan el direccionamiento de registros.
Lenguaje Ensamblador
MOV AL,BL
MOV CH,CL
MOV AX,CX
MOV SP,BP
MOV DS,AX
MOV DI,SI
MOV BX,ES
MOV ES,DS
MOV BL,BX
MOV CS,AX

Operacin
Copia BL en AL
Copia CL en CH
Copia CX en AX
Copia BP en SP
Copia AX en DS
Copia SI en DI
Copia ES en BX
No se permite (segmento a segmento)
No se permite (tamaos mixtos)
No se permite (CS no se puede usar como registro destino)

37

En la figura 2.9 se aprecia lo que sucede despus de que se utliza la instruccin


MOV BX,CX. Por ejemplo, si CX tiene 1234H y BX tiene el valor 73CDH, el 1234H pasar
a BX y se eliminar lo que contena.

DX

1234

CX

(73CD)

BX

1234

AX

Figura 2.9. Ejecucin de la instruccin MOV BX,CX.


2.- Direccionamiento inmediato. Transfiere un byte o palabra de datos inmediatos
hacia el registro o localidad de la memoria en el destino. Por ejemplo, la instruccin
MOV AL, 22H, copia el 22H de tamao byte en el registro AL.
El trmino inmediato significa que los datos siguen inmediatamente al cdigo
hexadecimal de operacin en la memoria. El direccionamiento inmediato acta en un byte o
palabra de datos.
La instruccin inmediata MOV transfiere una copia de los datos inmediatos a un
registro o a una localidad en la memoria.

En la figura 2.10 se muestra el funcionamiento de la instruccin MOV AX, 3456H


en AX.

BX
AX

A895
(FECD)

PROGRAMA
3456

B85634

MOV AX,3456H

Figura 2.10. Ejecucin de la instruccin MOV AX,3456H.

El ensamblador simblico recibe los datos inmediatamente en varias formas. La


letra H es flujo de los datos hexadecimales. Si estos datos empiezan con una letra, se
empieza con un 0. Por ejemplo, para representar un F2H, se tiene que colocar un 0
primero, quedando 0F2H, se tiene que colocar un 0 primero, quedando 0F2H para que el

38

procesador sepa que el operando es un nmero y no una etiqueta. Para los datos decimales
no se coloca sufijo. Tambin se pueden poner caracteres ASCII entre apstrofos y a los
datos binarios se les pone una B al final.
En la tabla 2.2.1 se presenta varias instrucciones MOV con diferentes datos
inmediatos.
En la Fig. 2.7 se muestra que el registro AX contiene FECDH y le estamos
ordenando al P que le ponga a AX el dato 3456H; el contenido de AX cambiar y en lugar
de tener FECDH, tendr 3456H.

Tabla 2.3. Ejemplos de direccionamiento inmediato.


Lenguaje Ensamblador
MOV BL, 44
MOV AX, 44H
MOV SI, 0
MOV CH, 100
MOV AL, A
MOV AX, AB
MOV CL, 11001110B

Operacin
Mueve 44 dcimas (2CH) al BL
Mueve 44 hexadecimal a AX
Mueve 0000H hacia SI
Mueve 100 (64H) hacia CH
Mueve ASCII (41H) hacia AL
Mueve BA ASCII (4241H) hacia AX
Mueve 11001110 Binario hacia CL

Cuando se utiliza el programa DEBUG y se desea enviar un dato inmediato hacia


algn lugar de la memoria, es necesario agregar a la instruccin el operador PTR y uno de
sus tipos: BYTE, cuando los datos a mover a la localidad de la memoria sean de 8 bits o
bien WORD, cuando los datos sean de 16 bits.
Lo anterior no es necesario cuando el operando destino es un registro, ya que el
tamao del movimiento lo determina precisamente el tamao del registro utilizado.
Si no se agrega el operador y alguno de los tipos mencionados, al ensamblar se
producir un error. A continuacin se muestra un ejemplo que mueva hacia la localidad de
la memoria 200H el nmero 64H. Cabe mencionar que en el programa DEBUG, todos los
datos numricos se consideran como nmeros del sistema hexadecimal.
MOV BYTE PTR [200],64
Se observa que el nmero de la direccin seleccionada, se coloca entre corchetes.

39

3.- Direccionamiento Directo.- Mueve un byte o palabra entre una localidad de


memoria y un registro. Por ejemplo, la instruccin MOV CX, LIST copia el contenido
tamao palabra de la localidad de memoria asociada con LIST y lo coloca en el registro
CX.
En la mayor parte de las instrucciones se pueden emplear el modo de
direccionamiento directo.
Aunque el direccionamiento directo es solo uno, podemos realizar una clasificacin
en dos tipos bsicos:
Direccionamiento directo que solo se aplica a una instruccin MOV entre una
localidad de memoria y AL AX, y Direccionamiento por desplazamiento para casi
cualquier instruccin en el conjunto de instrucciones del 8086. En cualquier caso, para
formar la direccin se suma el desplazamiento a la direccin del segmento de datos
implcito o en un segmento alterno.
a).- Direccionamiento directo. Solo se permite con una instruccin MOV que
transfiere datos entre una localidad en la memoria situada dentro del segmento de datos y
un registro AL (8 bits) o AX (16 bits).
La instruccin MOV AL,DATO tal como se emplea en la mayor parte de los
ensambladores, transfiere una copia del byte almacenado en la localidad DATO de la
memoria y lo pone en el registro AL. En la figura 2.11 se ilustra algunos ejemplos de
direccionamiento directo.

Figura 2.11. (a) Ejecucin de MOV AL,DATO y (b) ejecucin de MOV AX,DATO.

40

En la tabla 2.3 aparecen instrucciones con direccionamiento directo.

Tabla 2.3. Ejemplos de direccionamiento directo.


Lenguaje Ensamblador

Operacin

MOV AL, NUMERO

Copia el contenido tamao byte de la


direccin NUMERO en AL.

MOV AX, ALGO

Copia en AX el contenido tamao palabra de


la direccin ALGO.

MOV NOTAS, AL

Copia AL en la localidad de memoria NOTAS

MOV AH, AX

Copia AX en la localidad de memoria AH.

b).- Direccionamiento por desplazamiento. El direccionamiento por desplazamiento


es muy semejante al direccionamiento directo, adems de ser mucho ms flexible, porque se
utiliza en la mayor parte de las instrucciones. En la figura 2.12 se muestra el funcionamiento de
la instruccin MOV CL, 2000H.

Figura 2.12. Ejecucin de la instruccin MOV CL,[2000H].

41

Tabla 2.4. Ejemplos de direccionamiento directo por desplazamiento.

Lenguaje Ensamblador
MOV CH,CAN
MOV CH,[1000]
MOV ES,DATO6
MOV DATO,BP
MOV NUMERO,SP

Operacin
Carga en el registro CH, el contenido de la
localidad de memoria CAN
Carga en el registro el contenido de la
localidad de memoria 1000H
Carga en ES el contenido tamao palabra de
la localidad de memoria DATO6
Se carga a BP en la localidad de memoria
DATO
Se carga SP en la localidad de memoria
NUMERO

4.- Direccionamiento indirecto de registros


Transfiere un byte o palabra entre un registro y una localidad de memoria
direccionada por un registro ndice (DI o SI) o uno de base (BX o BP). Por ejemplo, la
instruccin MOV AX,[BX] copia los datos de tamao palabra en una direccin del
segmento de datos con un desplazamiento dado por BX y lo pasa al registro AX.
Como ya se mencion, el direccionamiento indirecto de registros permite direccionar
datos en cualquier localidad de la memoria por medio de cualquiera de los registros de base
o ndice.
Por ejemplo, si el registro BX contiene 1000H y se ejecuta la instruccin MOV AX,
[BX], el contenido tamao palabra de la direccin con desplazamiento 1000H en el
segmento de dato, se copia en el registro AX.
Si el P funciona en modo real y DS = 0100 H, esta instruccin direcciona a la
palabra almacenada en los bytes 2000H y 2001H de la memoria y los transfiere al registro
AX, como se muestra en la figura 2.13.
En la figura se aprecia que se mueve el contenido de 2000H hacia AL y el 2001H
hacia AH.

42

Registros

Memoria

AX

6A

42

6A

02001H

BX

20

00

42

02000H

Figura 2.13. Ejecucin de MOV AX,[BX].

En la tabla 2.5 aparecen algunas instrucciones tpicas que emplean direccionamiento


indirecto de registros.

Tabla 2.5. Ejemplos de modos de direccionamiento indirecto de registros.

Lenguaje Ensamblador.
MOV CX, [BX]
MOV [BP], DL
MOV [DI], BH
MOV [DI], [BX]

MOV DL, [DI]

Operacin
Se carga en CX una palabra de la localidad
de la memoria seleccionada por BX
Se carga el byte del registro DL en la
localidad de memoria direccionada por BP.
Se carga el byte del registro BH en la
localidad de memoria direccionada por DI
No se permiten las transferencias de
memoria, excepto con instrucciones de
cadena
Esta instruccin no se permite, por que el
registro utilizado para el direccionamiento
indirecto de la memoria no se puede cambiar
con la misma instruccin.

La instruccin MOV BYTE PTR [DI],10H muestra con claridad que la localidad
direccionada por DI es una localidad de tamao byte en la memoria.

43

5.- Direccionamiento Base ms ndice.


Transfiere un byte o palabra entre un registro y la localidad de memoria direccionada
por el contenido de un registro base (BX o BP) mas un registro ndice (DI o SI).
Por ejemplo, la instruccin MOV [BX + DI],CL, copia el contenido de tamao byte
del registro CL y lo pasa a la localidad de memoria direccionada por BX + DI en el
segmento de datos.
En la figura 2.14 se muestra como la instruccin MOV DX,[BX + DI] direcciona a los
datos cuando el P funciona en modo real. En este ejemplo, BX = 1000H, DI = 0010H y
DS = 0100H, por lo que la direccin de memoria que forman es 02010H. Esta instruccin
transfiere una copia de la palabra contenida en las localidades 02010H (DL) y 02011H
(DH) al registro DX. En la tabla 2.6 aparecen algunas instrucciones utilizadas para el
direccionamiento base ms ndice.

Figura 2.14. Ejecucion de la instruccin MOV DX, [BX + DI].

44

Tabla 2.6. Ejemplos de modos de direccionamiento Base + Indice.

Lenguaje Ensamblador.
MOV CX,[BX + DI]
MOV CH,[BP + SI]
MOV [BX + SI],SP

MOV [BP + DI],CX

Operacin
Se carga en CX el contenido palabra de la
localidad de memoria direccionada por BX +
DI.
Se carga CH el contenido byte de la
localidad de memoria direccionada por BP +
SI.
Se carga el contenido palabra de SP, en la
localidad de memoria direccionada por BX +
SI
Se almacena el contenido palabra de CX en
la localidad de memoria direccionada por BP
+ DI.

6.- Direccionamiento Relativo por Registros.


Transfiere un byte o una palabra entre un registro y una localidad en la memoria
direccionada por un registro ndice o un registro base y adems un desplazamiento. Por
ejemplo, MOV AX,[BX + 4] o MOV AX,ARREGLO[BX]. La primera instruccin copia
una palabra de datos de una direccin en el segmento de datos, formada por el contenido de
BX ms 4 y la pone en el registro AX. La segunda instruccin transfiere el contenido de la
localidad de memoria asociada con ARREGLO ms el contenido de BX, hacia el registro
AX.
El direccionamiento relativo por registro es similar al direccioinamiento base mas
ndice y el direccionamiento por desplazamiento. En el direccionamiento relativo por
registros, para direccionar datos en el segmento de memoria se agrega un desplazamiento al
contenido de un registro base o ndice (BP, BX, DI o SI). En la figura 2.15 se muestra el
funcionamiento de la instruccin MOV AX, [BX + 1000H], en este ejemplo, BX= 0100H y
DS= 0200H, por lo cual la direccin generada es la suma de DS x 10H, BX y el
desplazamiento de 1000H, que es 03100H.

45

Registros

Memoria

AX

A0

76

A0

03101H

BX

01

00

76

03100H

Figura 2.15. Ejecucin de la instruccin MOV AX, [BX + 1000H].

En la tabla 2.7 se presenta algunas instrucciones en las que se utiliza el


direccionamiento relativo por registro. Un desplazamiento es un nmero que se suma al
registro dentro de los corchetes como en la instruccin MOV AL,[DI+2] o que se resta del
registro como en la instruccin MOV AL,[SI -1]. Un desplazamiento tambin es una
direccin de desplazamiento delante de los [] como en MOV AL,DATO[DI]. Ambas formas
de desplazamiento pueden aparecer al mismo tiempo como en la instruccin MOV AL,
DATO [DI + 3]. En todos los casos, ambas formas de desplazamientos se suman al registro
base o ndice dentro de los corchetes []. Cabe mencionar que el desplazamiento DATO debe
ser declarado previamente en el segmento de datos.

Tabla 2.7. Ejemplos de direccionamiento relativo por registros.


Lenguaje ensamblador.
MOV AX,[DI + 100H]
MOV ARRAY [SI],BL
MOV LIST [SI + 2],CL
MOV [DI],SETS[BX]

Operacin.
Se transfiere a AX el contenido palabra de la
localidad de memoria, direccionada por DI +
100H
Se carga el contenido byte de BL en la
localidad direccionada por ARRAY ms SI.
Se carga el contenido byte de CL en la
localidad direccionada por la suma de LIST,
SI y 2.
Se carga DI en el contenido de la localidad
de memoria direccionada por SETS mas BX.

46

7.- Direccionamiento Relativo Base mas ndice.


Transfiere un byte o una palabra entre un registro y la localidad en la memoria
direccionada por el contenido de un registro Base ms uno de ndice ms un
desplazamiento. Por ejemplo, MOV AX,ARREGLO[BX + DI] MOV AX,[BX + DI + 4].
Ambas instrucciones copian una palabra de datos de una localidad de memoria y la coloca
en el registro AX. En la primera instruccin se emplea una direccin formada al sumar
ARREGLO, BX y DI, y en la segunda al sumar BX, DI y 4.
El direccionamiento relativo base mas ndice es similar al direccionamiento base mas
ndice, pero adems suma un desplazamiento para formar una direccin en la memoria.
El direccionamiento relativo base mas ndice es el modo de direccionamiento menos
utilizado. La figura 2.16 muestra la forma en que se hace referencia a los datos si la
instruccin ejecutada por el P es MOV AX,[BX + SI + 100H]. El desplazamiento 100H se
suma a BX y SI para formar la direccin del desplazamiento dentro del segmento de datos.
Los registros BX = 0020H, SI= 0010H y DS= 1000H, con lo que la direccin efectiva para
esta instruccin es 10130H, o sea la suma de estos registros ms un desplazamiento de
100H. Este modo de direccionamiento es en extremo complejo para emplearse con
frecuencia en un programa.

Registros

Memoria

AX

A0

76

A0

10131H

BX

00

20

76

10130H

SI

00

10

Figura 2.16. Ejecucin de la instruccin MOV AX,[BX + SI + 100H].

En la tabla 2.8 aparecen algunas instrucciones tpicas en las que se emplea el


direccionamiento relativo base ms ndice.

47

Tabla 2.8. Ejemplos de direccionamiento relativo base ms ndice.

Lenguaje Ensamblador.

Operacin.
Se carga DX con el contenido de la localidad
direccionada por BX + DI + 20H.
Se carga AX con el contenido de la localidad
direccionada por ARCHIVO + BX + DI
Se carga el contenido de CL en la localidad
direccionada por LISTA + BP + DI.
Se carga el contenido de DH en la localidad
de memoria direccionada por LISTA + BP +
SI + 4.

MOV DX,[BX + DI + 20H]


MOV AX,ARCHIVO [BX + DI]
MOV LISTA[BP + DI], CL
MOV LISTA[BP + SI + 4], DH

2.15.- El operador PTR.


El operador PTR puede ser usado en variables de datos y en etiquetas de instruccin.
Utiliza los especificadores de tipo BYTE y WORD para determinar un tamao en un
operando ambiguo o para pasar por encima del tipo definido (DB o DW) para variables.
Tambin usa los especificadores tipo NEAR, FAR y PROC para pasar por alto la distancia
implicada de etiquetas. El formato general es:
Tipo PTR expresin

El tipo es el nuevo atributo, tal como BYTE. La expresin es una variable o


constante. A continuacin estn unos ejemplos del operador PTR.

MOV WORD PTR [120H], 25H


MOV BYTE PTR [122H], 30H

Mueve el valor inmediato 25H a las


localidades de memoria 120H y 121H.
Mueve el valor inmediato 30H a la
localidad de memoria 122H

48

2.16.- El conjunto de instrucciones.


El conjunto de instrucciones de la familia 8086/8088 incluye equivalentes de las
instrucciones que se encuentran en 8085 o en casi cualquier P de 8 bits, ms algunas
operaciones nuevas. Las categoras de instrucciones incluyen: transferencia de datos,
aritmtica, manipulacin de bits, cadenas o arreglos, transferencia de programa y control
del procesador.

Transferencia de datos.
El conjunto de instrucciones del 8086 incluye instrucciones para transferencia de
datos que transfieren bytes o palabras de datos entre la memoria y los registros as como
entre el acumulador y los puertos de E/S. En la tabla 2.9 aparecen algunas de estas
instrucciones y se describen en forma breve las caractersticas de funcionamiento de cada
una.

Tabla 2.9. Instrucciones para transferencia de datos.

Instruccin

Funcin

LAHF

Mete datos al acumulador desde un dispositivo de


Entrada.
Carga banderas en AH

LEA
MOV

Carga la direccin efectiva.


Mueve byte o palabra.

OUT

Saca datos del acumulador a un dispositivo de Salida.

POP

Recupera una palabra de la pila.

POPF

Recupera las banderas de la pila.

PUSH

Salvan las palabras en la pila.

PUSHF
SAHF
XCHG

Salva banderas en la pila.

IN

Carga AH en las banderas.


Intercambia bytes o palabras.

49

Aritmtica.
La familia 8086 puede sumar, restar, multiplicar y dividir datos como bytes o
palabras. El sistema suma y resta con el empleo de datos con signo o sin signo y datos BCD
o ASCII. Multiplica y divide nmeros ASCII y nmeros con signo y sin signo. En la tabla
2.10 se encuentran algunas de las instrucciones aritmticas utilizadas en la familia de
procesadores 8086.
Tabla 2.10. Instrucciones aritmticas.
Instruccin
AAA
AAD
AAM
AAS
ADD
ADC
CBW
CMP
DAA
DAS
DEC
DIV
IDIV
IMUL
INC
MUL
NEG
SBB
SUB

Funcin
Ajuste ASCII para la suma.
Ajuste ASCII para la divisin.
Ajuste ASCII para la multiplicacin.
Ajuste ASCII para resta.
Suma datos entre registros o la memoria y otros registros.
Suma datos con la bandera de acarreo.
Convierte byte a palabra.
Compara los datos.
Ajuste decimal de AL despus de una suma BCD.
Ajuste decimal de AL despus de una resta BCD.
Decrementar.
Divisin sin signo.
Divisin con signo.
Multiplicacin con signo.
Incrementar.
Multiplicacin sin signo.
Cambia el signo (lo vuelve negativo)
Resta con prstamo.
Resta datos entre los registros y la memoria u otro registro.

Manipulacin de bits.
Las instrucciones para la manipulacin de bits binarios se utilizan para controlar los
datos hasta el nivel de bits en la familia de microprocesadores 8086. Estas instrucciones
incluyen operaciones lgicas, corrimientos y rotaciones. En la tabla 2.11 aparece una breve
descripcin de algunas instrucciones y su cdigo simblico de funcionamiento.

50

Instrucciones para cadenas.


Las instrucciones para cadenas o arreglos se emplean para manipular cadenas de datos
en la memoria. Cada cadena consta, ya sea, de bytes o de palabras y tiene hasta 64 K bytes
de longitud. En las instrucciones para la cadena se emplean los registros SI y DI para
direccionar los datos y el registro CX para contar el nmero de bytes o de palabras en que
se trabaj. Las instrucciones para las cadenas ocurren una vez salvo que tengan uno de los
prefijos REP, REPE/REPZ o REPN/REPNZ. Si una instruccin para cadena tiene uno de
esos prefijos, se repite el nmero de veces contenido en el registro de conteo CX. En la
tabla 2.12 se presentan algunas operaciones para cadena disponibles en la familia de
microprocesadores 8086.
Tabla 2.11. Instrucciones para manipulacin de bits.
Instruccin.
AND
NOT
OR
SAR
SHL/SAL
SHR
RCL
ROL
RCR
ROR
TEST
XOR

Funcin.
Y (AND) lgica.
Invertir (complemento a 1).
O lgica.
Corrimiento aritmtico a la derecha.
Corrimiento a la izquierda.
Corrimiento lgico a la derecha.
Rotacin a la izquierda con acarreo.
Rotacin a la izquierda.
Rotacin a la derecha con acarreo.
Rotacin a la derecha.
Operacin con el AND lgico, pero solo afectando banderas.
O exclusivo.

Tabla 2.12. Instrucciones para cadenas.


Instruccin.
CMPS
LODS
MOVS
SCAS
STOS

Funcin.
Comparacin entre memoria y memoria.
Carga al acumulador.
Mover de memoria a memoria.
Comparacin entre la memoria y el acumulador.
Almacenar en el acumulador.

51

Transferencia de programa.
Las instrucciones para la transferencia de programa incluyen saltos, llamadas (CALL)
a procedimientos y retorno de procedimientos. En la tabla 2.13 se presentan instrucciones
para transferencia de programa.

Tabla 2.13. Instrucciones para transferencia de programa.


Instruccin.
CALL
INT
INT3
INTO
IRET
JA
JAE
JB
JBE
JC
JE/JZ
JG
JGE
JL
JLE
JMP
JNC
JNE/JNZ
JNO
JNP
JNS
JO
JP
JS
LOOP
JCXZ
RET

Funcin.
Llama a un procedimiento (subrutina)
Interrumpir.
Interrupcin tipo 3.
Interrumpir por sobre flujo.
Retornar de una interrupcin.
Brinca si en mayor.
Brinca si es mayor o igual que.
Brinca si es menor.
Brinca si es menor o igual.
Brinca si hay acarreo.
Brinca si es igual o saltar si es cero.
Brinca si es mayor que.
Brinca si es mayor o igual.
Brinca si es menor que.
Brinca si es menor o igual.
Brinca a otra parte del programa.
Brinca si no hay acarreo.
Brinca si no es igual o si no es cero.
Brinca si no hay desbordamiento.
Brinca si no hay paridad (impar).
Brinca si no es signo positivo.
Brinca si hay desbordamiento.
Brinca si hay paridad (par).
Brinca si tiene signo (negativo).
Repite ciclo CX veces
Brinca si CX es cero.
Retorna de un procedimiento (subrutina).

52

Control de procesador.
Las instrucciones para control del procesador habilitan y deshabilitan las
interrupciones, modifican los bits de bandera y sincronizan los eventos externos. En la tabla
2.14 se presenta una lista de instrucciones de control del procesador.

Tabla 2.14. Instrucciones de control del procesador.


Instruccin.

Funcin.

CLC
CLD
CLI
CMC
LOCK
NOP
STC
STD
STI
WAIT

Borrar bandera de acarreo.


Habilitar incremento automtico.
Deshabilitar terminal INTR.
Complementa bandera de acarreo.
Controla terminal LOCK en el 8086/8088.
No operacin.
Activa bandera de acarreo.
Selecciona modo de decremento automtico.
Habilitar interrupciones.
Espera a que la terminal TEST = 0.

53

Universidad Autnoma de Tamaulipas


Facultad de Ingeniera Arturo Narro Siller

Captulo III.
Operadores y Directivas
En
Lenguaje Ensamblador.

54

3.1.- Ensambladores y compiladores.


Primero identificaremos dos clases de lenguajes de programacin: alto nivel y bajo
nivel. Los programadores que escriben en un lenguaje de alto nivel, como C y Pascal,
codifican comandos poderosos, cada uno de los cual puede generar muchas instrucciones
en lenguaje mquina. Por otro lado, los programadores que escriben en un lenguaje
ensamblador de bajo nivel codifican instrucciones simblicas, cada una de las cuales genera
una instruccin en lenguaje de mquina. A pesar del hecho de que codificar en un lenguaje
de alto nivel es ms productivo, algunas ventajas de codificar en lenguaje ensamblador son:
Proporciona ms control sobre el manejo particular de los requerimientos de
hardware.
Genera mdulos ejecutables ms pequeos y ms compactos.
Con mayor probabilidad tiene una ejecucin ms rpida.
Una prctica comn es combinar os beneficios de ambos niveles de programacin:
codificar el grueso de un proyecto en un lenguaje de alto nivel y los mdulos crticos
(aquellos que provocan notables retardos) en lenguaje ensamblador.
Sin importar el lenguaje de programacin que utilice, de todos modos es un lenguaje
simblico que tiene que traducirse a una forma que la computadora pueda ejecutar. Un
lenguaje de alto nivel utiliza un compilador para traducir el cdigo fuente a lenguaje de
mquina (tcnicamente, cdigo objeto). Un lenguaje de bajo nivel utiliza un ensamblador
para realizar la traduccin. Un programa enlazador para ambos niveles, alto y bajo,
completa el proceso al convertir el cdigo objeto en lenguaje ejecutable de mquina.

3.2.- Comentarios en lenguaje ensamblador.


El uso de comentarios a lo largo de un programa puede mejorar su claridad, en
especial en lenguaje ensamblador, donde el propsito de un conjunto de instrucciones con
frecuencia no es claro. Un comentario empieza con un punto y coma (;) y, en donde quiera
que lo codifique, el ensamblador supone que todos los caracteres a la derecha en esa lnea
son comentarios. Un comentario puede contener cualquier carcter imprimible, incluyendo
el espacio en blanco.
Un comentario puede aparecer solo en una lnea o a continuacin de una instruccin
en la misma lnea, como lo muestra en dos ejemplos siguientes:
1. ; Toda esta lnea es un comentario.
2. ADD AX, BX ; Comentario en la misma lnea que la instruccin.
Ya que un comentario aparece solo en un listado de un programa fuente en
ensamblador y no genera cdigo de mquina, puede incluir cualquier cantidad de
comentarios sin afectar el tamao o la ejecucin del programa ensamblado

55

Tcnicamente se est en libertad de usar letras maysculas o minsculas


indistintamente para las instrucciones y comentarios.
Otra manera de proporcionar comentarios es por medio de la directiva COMMENT.

3.3.- Palabras reservadas.


Ciertas palabras en lenguaje ensamblador estn reservadas para sus propsitos
propios, y solo son usados bajo condiciones especiales. Por categoras las palabras
reservadas incluyen:

Instrucciones, como MOV y ADD, que son operaciones que la computadora


puede ejecutar.

Directivas, como END o SEGMENT, que se emplean para proporcionar


comandos al ensamblador.

Operadores, como FAR y SIZE, que se utilizan en expresiones.

Smbolos predefinidos, como @Data y @Model, que regresan informacin a su


programa.

El uso de una palabra reservada para un propsito equivocado provoca que el


ensamblador genere un mensaje de error.

3.4.- Identificadores.
Un identificador es un nombre que se aplica a elementos en el programa. Los dos
tipos de identificadores son: nombre, que se refiere a la direccin de un elemento de dato,
y etiqueta, que se refiere a la direccin de una instruccin. Las mismas reglas se aplican
tanto para los nombres como para las etiquetas. Un identificador puede utilizar los
siguientes caracteres:

Letras de alfabeto: Desde la A hasta la Z.

Dgitos: Desde el 0 hasta el 9 (no puede ser el primer carcter).

Caracteres especiales: Signo de interrogacin (?).


subrayado( _ ).
signo de pesos ($).
arroba (@).
punto (.) (no puede ser el primer carcter).

56

El primer carcter de un identificador debe ser una letra o un carcter especial,


excepto el punto. Ya que el ensamblador utiliza algunos smbolos especiales en palabras
que inician con el smbolo @, debe evitar usarlo en sus definiciones.
El ensamblador trata las letras maysculas y minsculas como iguales. La longitud
mxima de un identificador es de 31 caracteres (247 desde el MASM 6.0). Se recomienda
que los nombres sean descriptivos y con significado. Los nombres de registros como AX,
DI y AL, estn reservados para hacer referencia a esos mismos registros. En consecuencia,
en una instruccin tal como: ADD AX, BX el ensamblador sabe de forma automtica que
AX y BX se refieren a los registros. Sin embargo, en una instruccin como: MOV DATOS,
AX el ensamblador puede reconocer el nombre, DATOS solo si se define en algn lugar del
programa.

3.5.- Instrucciones.
Un programa en lenguaje ensamblador consiste en un conjunto de enunciados. Los
dos tipos de enunciados son:
1.

Instrucciones, tal como MOV y ADD, que el ensamblador traduce a cdigo objeto.

2.

Directivas, que indican el ensamblador que realice una accin especfica, como definir
un elemento de dato.

A continuacin esta el formato general de un enunciado, en donde los corchetes


indican una entrada opcional.

[Identificador]

Operacin

[operando(s)] [;comentario]

Un identificador (si existe), una operacin y un operando (si existe) estn separados
por al menos un espacio en blanco o un carcter de tabulador. Existe un mximo de 132
caracteres en una lnea (512 desde MASM 6.0), aunque la mayora de los programadores
prefiere permanecer en los 80 caracteres ya que es el nmero mximo que cabe en la
pantalla. A continuacin se presentan dos ejemplos de enunciados:
Identificador

Operacin

Operando

Comentario

Directiva: COUNT
Instruccin:

DB
MOV

1
AX,0

; Nombre, operacin, operando


; Operacin, dos operandos.

Identificador.
Como ya se explic, el termino nombre se aplica al nombre de un elemento o
directiva definida mientras que el termino etiqueta se aplica al nombre de una instruccin.

57

Operacin.
La operacin que debe ser codificada, es con mayor frecuencia usada para la
definicin de reas de datos y codificacin de instrucciones. Para un elemento de datos, una
operacin tal como DB o DW define un campo, de rea de trabajo o constante. Para una
instruccin, una operacin como MOV o ADD indica una accin a realizar.
Operando.
El operando (si existe) proporciona informacin para la operacin que acta sobre el.
Para un elemento de datos, el operando identifica su valor inicial. Por ejemplo, en la
definicin siguiente de un elemento de datos llamado CONTADOR, la operacin DB
significa "definir byte", y el operando inicializa su contenido con un valor cero:
Nombre
Contador

Operacin
DB

Operando
0

Comentario
; Define un byte (DB) con el valor cero

Para una instruccin un operando indica en donde realizar la accin. Un operando


de una instruccin puede tener una, dos o tal vez ninguna entrada. Aqu estn tres ejemplos:
Operacin
RET
INC
ADD

Operando
CX
AX,12

Comentario
; Regresa
; Incrementa al registro CX
; Suma 12 a AX

Operando
Ninguno
Uno
Dos

3.6.- Directivas.
El lenguaje ensamblador permite usar diferentes enunciados que permiten controlar la
manera en que un programa ensambla y lista. Estos enunciados, llamados directivas, actan
solo durante el ensamblado de un programa y no generan cdigo ejecutable de mquina.
Las directivas ms comunes son explicadas a continuacin:
3.6.1. Directivas para listar: PAGE y TITLE.
Las directivas PAGE y TITLE ayudan a controlar el formato de un listado de un
programa en ensamblador. Este es su nico fin, y no tiene efecto sobre la ejecucin
subsecuente del programa.

58

PAGE.- Al inicio de un programa, la directiva PAGE designa el nmero mximo de lneas


para listar en una pgina y el nmero mximo de caracteres en una lnea. Su
formato general es:
PAGE [longitud] [, ancho]
El ejemplo siguiente proporciona 60 lneas por pgina y 132 caracteres por lnea:
PAGE 60, 132
El nmero de lneas por pgina puede variar desde 10 hasta 255, mientras que el
nmero de caracteres por lnea desde 60 hasta 132. La omisin de un enunciado PAGE
causa que el ensamblador tome PAGE 50, 80.
Tambin puede forzar un salto de pgina en una lnea especfica en el listado del
programa, como al final de un segmento. En la lnea requerida, solo codifique PAGE sin
operandos.
TITLE.- Se puede emplear la directiva TITLE para hacer que un ttulo para que un
programa se imprima en la lnea dos de cada pagina en el listado del programa.
Puede codificar TITLE de una vez, al inicio del programa. Su formato general es:
TITLE texto
3.6.2. Directiva SEGMENT
Un programa ensamblado en formato .EXE consiste en uno o ms segmentos. Un
segmento de pila define el almacn de la pila , un segmento de datos, define los elementos
de datos y un segmento de cdigo proporciona un cdigo ejecutable. Las directivas para
definir un segmento, SEGMENT y ENDS, tienen el formato siguiente:
NOMBRE
Nombre
.
.
.
Nombre

OPERACION
SEGMENT

ENDS

OPERANDO
[opciones]

COMENTARIO
;inicia el segmento

;Fin del segmento

El enunciado SEGMENT define el inicio de un segmento. El nombre del segmento


debe estar presente, ser nico y cumplir las convenciones para nombres del lenguaje. El
enunciado ENDS indica el final del segmento y contiene el mismo nombre del enunciado
SEGMENT.

59

El operando de un enunciado SEGMENT puede tener tres tipos de opciones:


alineacin, combinar y clase, codificadas en este formato:
Nombre SEGMENT alineacin combinar clase
Tipo alineacin.- La entrada alineacin indica el lmite en el que inicia el
segmento. Para el requerimiento tpico, PARA, alinea el segmento con el lmite de un
prrafo. En ausencia de un operando hace que el ensamblador por omisin tome PARA.
Tipo combinar.- La entrada combinar indica si se combina el segmento con otros
segmentos cuando son enlazados despus de ensamblar. Los tipos combinar son STACK,
COMMON, PUBLIC y la expresin AT. Por ejemplo, el segmento de la pila por lo
comn es definido como:
Nombre SEGMENT PARA STACK
Puede utilizar PUBLIC y COMMON en donde tenga el propsito de combinar de
forma separada programas ensamblados cuando los enlaza. En otros casos, donde un
programa no es combinado con otros, puede omitir la opcin o codificar NONE.
Tipo clase.- La entrada clase, encerrada entre apstrofos, se utiliza para agrupar
segmentos cuando se enlazan. Se utilizan la clase 'code' para el segmento de cdigos
(recomendado por Microsoft), 'data' para el segmento de datos y 'stack' para el segmento
de la pila.
El ejemplo siguiente define un segmento de pila con tipos alineacin, combinar y
clase.
Nombre SEGMENT PARA STACK 'stack'
3.6.3. Directiva PROC
El segmento de cdigo contiene el cdigo ejecutable de un programa. Tambin tiene
uno o ms procedimientos, definidos con la directiva PROC. Un segmento que tiene solo
un procedimiento puede aparecer como sigue:
Nombre
Nomsegmto
Nomproc

Nomproc
Nomsegmto

Operacin
SEGMENT
PROC
.
.
.
ENDP
ENDS

Operando
PARA
FAR

Comentario
;un procedimiento
;dentro del segmento.
;de cdigo

60

El nombre del procedimiento debe estar presente, ser nico y seguir las reglas para la
formacin de nombres del lenguaje. El operando FAR en este caso esta relacionado con la
ejecucin del programa. Cuando solicita la ejecucin de un programa, el cargador de
programas del DOS utiliza el nombre del procedimiento como el punto de entrada para la
primera instruccin a ejecutar.
La directiva ENDP indica el fin de un procedimiento y contiene el mismo nombre que
el enunciado PROC para permitir que el ensamblador relacione a los dos. Ya que los
procedimientos deben estar por completo dentro de un segmento, ENDP define el final de
un procedimiento antes que ENDS defina el final de un segmento.
El segmento de cdigo puede contener cualquier nmero de procedimientos usados
como subrutinas cada uno de los cuales va con su caracterstico conjunto de enunciados
PROC y ENDP. Cada PROC adicional por lo comn se codifica con (o por omisin) el
operando NEAR.
3.6.4. Directiva ASSUME
Un programa utiliza al registro SS para direccionar la pila, al registro DS para
direccionar el segmento de datos y al registro CS para direccionar el segmento de cdigo.
Para este fin, se tiene que indicar al ensamblador el propsito de cada segmento en el
programa. La directiva para este propsito es ASSUME, codificada en el segmento de
cdigo como sigue:
Operacin

Operando

ASSUME

SS:nompila, DS:nomsegdatos, CS:nomsegcodigo,...

SS: nompila significa que el ensamblador asocia el nombre del segmento de la pila
con el registro SS, y de manera similar, con los otros operandos mostrados. Los operandos
pueden aparecer en cualquier orden. ASSUME tambin puede contener una entrada para el
ES, tal como ES:nomsegdatos; si el programa no utiliza el registro ES, se puede omitir su
referencia o codificar ES: NOTHING.
Directiva END.
Como ya se menciono, la directiva ENDS finaliza un segmento y la directiva ENDP
finaliza un procedimiento. Una directiva END finaliza todo el programa. Su formato
general es:

61

Operacin

Operando

END

[nomproc]

En la mayora de los programas, el operando contiene el nombre del primero o nico


procedimiento (PROC) designado como FAR, donde inicia la ejecucin del programa.

3.7.- Definicin de Datos.


Como ya se estudi, el propsito del segmento de datos de un programa. EXE es
definir constantes, reas de trabajo y reas de entrada/salida. El ensamblador permite la
definicin de elementos de varias longitudes de acuerdo con el conjunto de directivas que
defina datos. Por ejemplo, DB define un byte y DW define una palabra. Un elemento de
datos puede contener un valor indefinido (no inicializado) o una constante, definida como
una cadena de caracteres o como un valor numrico. A continuacin est el formato general
para la definicin de datos:
[nombre]

Dn

Expresin

Nombre.- Un programa que hace una referencia a un elemento de dato lo hace por medio
de un nombre. Por otro lado, el nombre de un elemento es opcional.
Directivas.- Las directivas que definen elementos de datos son DB (byte) y DW (palabra).
Cada uno indica de manera explcita la longitud del elemento definido.
Expresin.- La expresin es un operando que puede contener un signo de interrogacin
para indicar un elemento no utilizado, como:
FLD1

DB

; Elemento no inicializado

En este caso, cuando el programa inicie la ejecucin el valor inicial de FLD1 no es


conocido. En la prctica, lo normal antes de usar este elemento es mover algn valor a el.
Tambin puede utilizar el operando para definir una constante como:
FLD2

DB

25

; Elemento inicializado

62

Puede usar con libertad este valor inicializado en su programa y aun puede cambiar el
contenido de FLD2.
Una expresin puede contener varios valores constantes separados por comas y
limitados solo por la longitud de la lnea, como sigue:
FLD3

DB

11, 12, 13, 14, 15, 16,....

El ensamblador define estas constantes en bytes contiguos. Una referencia a FLD3


es a la primera constante de un byte (FLD3 + 0), y una referencia a FLD3 + 1 es a la
segunda constante, 12. Por ejemplo la instruccin
MOV AL, FLD3 + 3
Carga el valor 14 (OEH) en el registro AL. Tambin la expresin permite
duplicacin de constantes en un enunciado de la forma general.

[nombre]

Dn

Contador de repeticiones DUP (expresin)...

Los ejemplos siguientes ilustran la duplicacin:


DW 10 DUP (?)
DB 5 DUP (14)
DB 3 DUP (4 DUP (8))

; Diez palabras, no inicializadas


;Cinco bytes con OEOEOEOEOE hexadecimal
;Doce 8

El tercer ejemplo genera cuatro copias del dgito 8 (8888) y duplica el valor tres
veces, produciendo un total doce 8.

Cadenas de caracteres.
Las cadenas de caracteres son usadas para datos descriptivos como nombres de
personas y ttulos de pginas. La cadena esta definida dentro de apstrofos, como 'PC', o
dentro de comillas, como "PC". El ensamblador traduce las cadenas de caracteres en cdigo
objeto en formato ASCII normal.

63

Extraamente, DB es el nico formato que define una cadena de caracteres que


excede a dos caracteres y los almacenes en la secuencia normal de izquierda a derecha. En
consecuencia, DB es el formato convencional para la definicin de datos de caracteres de
cualquier longitud. Un ejemplo es:
DB 'cadena de caracteres'

3.7.1. Directivas para la definicin de datos.


Las directivas convencionales usadas para definir datos, junto con los nombres
introducidos por MASM 6.0 son:

Descripcin
Definir byte (s)
Definir una palabra

Directivas convencionales
DB
DW

Directivas MASM 6.0


BYTE
WORD

El programa ensamblado de la figura 3.1 proporciona ejemplos de las directivas que


definen cadenas de caracteres y constantes numricas.

TITLE
;
;
FLD1DB
FLD2DB
FLD3DB
FLD4DB
FLD5DB
FLD6DB
FLD7DB
;
FLD1DW
FLD2DW
FLD3DW

PAGE 60, 132


PO4DEFIN (EXE)
.MODEL SMALL
Se definen Bytes_DB:
----------------------------------DB
?
DB
32
DB
20H
DB
01011001B
DB
10DUP (0)
DB
'Personal Computer'
DB
'326554'
Se define words - DW
DW
OFFOH
DW
01011001B
DW
FLD7DB

Define data items


----------------------------------;No se inicia
; Constante decimal
; Constante hexadecimal
; Constante binaria
; Diez ceros
; Cadena de caracteres
; Nmero como caracteres
; Constante hexadecimal
; Constante binaria
; Constante de direccin

64

FLD4DW
FLD5DW

DW
DW

3,4,7,8,9
5 DUP (0)

; Tabla de cinco constantes


; Cinco ceros

Figura 3.1.- Definicin de cadenas de caracteres y valores numricos.

3.8.- La Directiva EQU.


La directiva EQU no define elementos de datos. En lugar de eso, define un valor que
el ensamblador puede usar para sustituir en otras instrucciones. Considere el enunciado
EUQ siguiente, codificado en el segmento de datos:
TIMES

EQU

10

El nombre en este caso TIMES, puede ser cualquier nombre aceptable por el
ensamblador. Ahora, siempre que una instruccin o en otra directiva aparezca la palabra
TIMES, el ensamblador la sustituye por el valor 10. Por ejemplo, el ensamblador convierte
la directiva.
FIELDA

DB

TIMES

DUP (?)

Su valor equivalente
FIELDA

DB

10

DUP (?)

Una instruccin tambin puede tener un operador con EQU, como en el siguiente :
COUNTR

EQU
05
.
.
.
MOV CX,COUNTR

El ensamblador reemplaza COUNTR en el operando MOV con el valor 05, haciendo


del operando un valor inmediato, como si estuviera codificado.
MOV CX, 05

; El ensamblador sustituye 05

La ventaja de EQU es que muchos enunciados pueden utilizar valores definidos por
COUNTR. Si el valor ha sido cambiado, solo necesita cambiar el enunciado EQU. No
necesita decirse que puede usar un valor igualado (con EQU) solo en donde una sustitucin
tenga sentido para el ensamblador. Tambin se puede igualar (con EQU) nombres
simblicos como el siguiente cdigo:

65

TOTALPAY
.
.
.
TP
MPY

DW

EQU TOTALPAY
EQU
MUL

El primer EQU hace equivalente (iguala) el alias TP al elemento definido


TOTALPAY. Para cualquier instruccin que tenga el operando TP, el ensamblador lo
reemplaza con la direccin TOTALPAY.
El segmento EQU permite a un programa usar la palabra MPY en lugar de la
instruccin simblica MUL.

3.9.- Como inicializar un programa para su ejecucin.


La figura 3.2. proporciona una estructura de un programa .EXE que muestra los
segmentos de la pila, de los datos y del cdigo.
Examinemos las instrucciones del programa por numero de lnea:
LNEA
1
2
3
4-6
8-10
12-21
13-20

14

15-16

EXPLICACIN
La directiva PAGE para este listado establece 60 lneas y 132 columnas por
pgina.
La directiva TITLE identifica el nombre del programa PO4ASM1.
Las lneas 3,7,11 son comentarios que califican la declaracin de los segmentos
definidos.
Estos enunciados definen el segmento de pila, STACKSG(pero no su
contenido).
Estos enunciados definen el segmento de datos, DATASG(pero no su
contenido).
Estos enunciados definen el segmento de cdigo, CODESG.
Estos enunciados definen el segmento del cdigo del nico procedimiento,
llamado BEGIN. Este procedimiento ilustra los requisitos comunes de
inicializacin y de salida para dar programa. EXE. Los dos requisitos para
inicializar son (1) avisar al ensamblador que segmentos asocia con los registros
de segmentos y (2) cargar el DS con la direccin de segmentos de datos.
La directiva ASSUME avisa al ensamblador que asocie ciertos segmentos con
ciertos registros de segmentos. Al asociar segmentos con registros de
segmentos, el ensamblador puede determinar en le pila, para los elementos en
el segmento de datos y para las instrucciones en el segmento de cdigo.
Dos Instrucciones inicializan la direccin al segmento de datos en el registro
DS:
MOV DS, AX; Almacena la direccin en DS.
El primer MOV carga la direccin del segmento de datos en el registro AX y el
segundo MOV copia la direccin del AX al DS. Se requieren dos MOV ya que

66

18-19
22

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22

ninguna instruccin puede mover datos de forma directa de la memoria a un


registro de segmento.
Estas dos instrucciones hacen la peticin de terminacin del programa y
regresan al DOS.
El enunciado END indica al ensamblador que este es el final del programa y el
operando BEGIN proporciona el punto de entrada para la ejecucin
subsecuente del programa.
PAGE 60,132
TITLE PO4ASM1 Estructura de un programa. EXE
;--------------------------------------------------------------------------------------------STACKSG SEGMENT PARA STACK stack
.
.
.
STACKSG ENDS
;--------------------------------------------------------------------------------------------DATASG
SEGMENT PARA data
.
.
.
DATASG
ENDS
;---------------------------------------------------------------------------------------------CODESG
SEGMENT PARA "code"
BEGIN
PROC FAR
ASSUME SS:STACKSG, DS:DATASG, CS:CODESG
MOV AX,DATASG
MOV DS, AX
.
.
.
MOV AX, 4C00H
INT 21H
BEGIN
ENDP
CODESG ENDS
END
BEGIN

Figura 3.2.-Estructura de un programa .EXE

67

Universidad Autnoma de Tamaulipas


Facultad de Ingeniera Arturo Narro Siller

Captulo III.
Manejo Bsico de
Pantalla y Teclado.

68

4.1.- Introduccin al procesamiento de pantalla y teclado.


Hasta este punto nuestros programas han definido datos ya sea en el rea de datos o
como datos inmediatos en un operando de instruccin. Sin embargo, la mayora de los
programas necesitan entradas desde un teclado, ratn o mdem y proporcionan salidas en
un formato til en la pantalla, impresora o disco.
Existen varios requisitos para especificar un dispositivo al sistema y solicitar una
operacin de entrada o salida. La instruccin INT (interrupcin), para la mayora de los
propsitos, maneja entrada y salida.
Los dos tipos de interrupciones que se tratarn son las funciones de la INT 10H del
BIOS para manejar la pantalla y las funciones de la INT 21H del DOS para mostrar salidas
en pantalla y aceptar entradas desde el teclado. Estas funciones (o servicios) solicitan una
accin; para identificar el tipo de operacin que la interrupcin va a realizar, inserte un
nmero de funcin en el registro AH.
4.2.- La pantalla.
La pantalla es una malla de posiciones direccionables, en cualquiera de las cuales se
puede colocar el cursor. Por ejemplo, un monitor comn de video tiene 25 renglones
(numerados del 0 hasta el 24) y 80 columnas (numeradas desde 0 hasta 79). A continuacin
se muestran varios ejemplos de ubicaciones del cursor.

Ubicacin en pantalla
Esquina superior izquierda
Esquina superior derecha
Centro de la pantalla
Esquina inferior izquierda
Esquina inferior derecha

Formato Decimal
Formato Hexadecimal
Rengln
Columna Rengln
Columna
00
00
00H
00H
00
79
00H
4FH
12
39 / 40
OCH
27H / 28H
24
00
18H
00H
24
79
18H
4FH

4.3. Funciones ms comunes del BIOS (INT 10H) para el manejo de la pantalla.
4.3.1.- Colocacin del cursor.
La colocacin del cursor es un requisito comn en modo de texto, ya que su posicin
determina en donde ser desplegado el siguiente caracter. (El modo grfico no permite el
uso del cursor). La INT 10H es la operacin del BIOS para manejo de la pantalla, y la

69

funcin 02H en el AH indica la operacin que coloca el cursor. Se carga el nmero de


pgina (o pantalla), por lo comn 0, en el registro BH y en el DX el rengln y columna
requeridos. Los contenidos de los otros registros no son importantes.
Las instrucciones siguientes colocan el cursor en el rengln 05, columna 12
MOV AH ,02H
MOV BH,00H
MOV DH,05
MOV DL,12
INT 10H

; Peticin para colocar el cursor


; numero de pgina 0
; rengln 05
; columna 12

Para establecer el rengln y la columna en el DX tambin puede utilizar una


instruccin mov con un valor hexadecimal inmediato, como:
MOV DX, 050CH ; Rengln 05, Columna 12
4.3.2.- Limpiar la pantalla.
La funcin 06H del BIOS maneja el borrado o el recorrido de la pantalla; puede
limpiar todo o parte de un despliegue iniciando en cualquier localidad de la pantalla y
terminando en cualquier localidad con nmero mayor. Por ejemplo, para limpiar toda la
pantalla especifique el rengln : columna iniciales como 00:00H y el rengln : columna
finales como 18:4FH. Carga estos registros.

AH
; Funcin 06H.
AL
; 00H para la pantalla completa.
BH
; Nmero del atributo.
CX
; Rengln: columna iniciales.
DX
; Rengln: columna finales.
En el ejemplo siguiente el atributo 71H establece toda la pantalla con fondo blanco
(7) con primer plano azul (1).
MOV AH, 06H
MOV AL, 00H
MOV BH, 71H
MOV CH, 00H
MOV CL, 00H
MOV DH, 18H
MOV DL, 4FH

; Funcin 06H
; Pantalla completa.
; Numero de atributo (fondo blanco, letras azules)
; Rengln inicial.
; Columna inicial.
; Rengln final.
; Columna final.

70

Tambin se puede codificar de la forma siguiente:


MOV AX,0600H
MOV BH,71H
MOV CX,0000H
MOV DX,184FH
INT 10H
4.4. Funciones ms comunes del DOS (INT 21H) para captura de caracteres del
teclado y despliegue en pantalla.
4.4.1.- Funcin 09H del DOS para despliegue en pantalla.
La simplicidad de la funcin 09H del DOS, original para el despliegue, es lo que la
mantiene en uso comn. Requiere la definicin de cadena de despliegue en el rea de datos.
La cadena es seguida inmediatamente por un delimitador de signo de pesos ($, 024H), el
cual utiliza la operacin para finalizar el despliegue. El ejemplo siguiente lo ilustra:
Cadena

DB 'Es una cadena','$'

; cadena de despliegue.

Puede codificar el signo de pesos inmediatamente despus de la cadena de despliegue


como se mostr, como parte de la cadena en 'Nombre del cliente?$', o en la lnea
siguiente como en DB '$'. Sin embargo, el resultado es que no se puede utilizar esta funcin
para desplegar en la pantalla un carcter $.
Coloque la funcin 09H en el registro AH, utilice LEA para cargar la direccin de la
cadena de despliegue en el DX, y emita una instruccin INT 21H. La operacin despliega
los caracteres de izquierda a derecha y reconoce el final de los datos al encontrar el
delimitador de signo de pesos ($). El cdigo en los lenguajes ensamblador es:
MOV AH,09H
; Peticin para desplegar
LEA DX,CADENA ; Carga la direccin de la indicacin.
INT 21H
; Llama al DOS
La operacin INT no cambia el contenido de los registros. Una cadena desplegada
que exceda la columna de la extrema derecha de la pantalla contina de forma automtica
en el siguiente rengln, recorriendo la pantalla tanto como sea necesario. Si al final de la
cadena se omite el signo de pesos la operacin despliega caracteres de la memoria hasta
que encuentre un signo as, si existe alguno.

4.4.2.- Uso de caracteres de control para desplegar.


71

Una manera de hacer ms eficaz el uso de despliegues es utilizar los caracteres de control:
Retorno de carro, Avance de lnea y el Tabulador. Puede codificarlos como valores ASCII o
nmeros hexadecimales, as:
Carcter de control
Retorno de carro
Avance de lnea
Tabulador

ASCII
13
10
09

HEX
Efecto en el cursor
0DH Restablece a la posicin de la extrema izquierda.
0AH Avanza a la lnea siguiente.
09H Avanza a la siguiente marca de tabulador

Siempre que se desplieguen salidas o acepten entradas, utilice estos caracteres de


control para el manejo de cursor. Aqu esta un ejemplo que despliega el contenido de una
cadena de caracteres llamada MENSAJE, seguida por un retorno de carro y un avance de
lnea para colocar el cursor en la lnea siguiente:

Mensaje

DB 09, 'UAMSZ Ingeniera', 13, 10, '$'

MOV AH,09H
; Peticin de despliegue.
LEA DX, MENSAJE
; Carga la direccin del titulo
INT 21H
; Llama al DOS.

El uso de EQU para redefinir los caracteres de control puede hacer que un programa
sea mas legible:
CR
LF
TAB
Mensaje

EQU 13
; (o EQU 0DH)
EQU 10
; (o EQU 0AH)
EQU 09
; (o EQU 09H)
DB TAB, 'UAMSZ Ingeniera', CR, LF, '$'

4.4.3.- Funcin 02H del DOS para despliegue en pantalla.


Puede encontrar que la funcin 02H de la INT 21H, sea til para despliegue de un
solo caracter. Cargue en el DL el caracter que ser desplegado en la posicin actual del
cursor, y solicite la INT 21H. Los caracteres de Tabulador, Retorno de carro y Avance de
lnea actan normalmente, y la operacin avanza de manera automtica el cursor.
El cdigo en lenguaje ensamblador es:
MOV AH,02H
MOV DL, char

; Peticin de desplegar un carcter


; carcter desplegado

72

INT 21h

; Llama al DOS

El ejemplo siguiente muestra como utilizar este servicio para desplegar una cadena
de caracteres. La cadena a desplegar esta definida en CONAME. El programa carga la
direccin de CONAME en el registro DI y su longitud en el CX. El cdigo es como sigue:
Coname

A30:

DB 'Software services', 13, 10

.
.
.
MOV AH,02H
MOV CX,19
LEA DI ,CONAME
MOV DL,[DI]
INT21H
LOOP A30

; Peticin para desplegar un carcter


; Longitud de la cadena de caracteres
; Direccin de la cadena de caracteres
; Caracteres que se despliegan.
; Llama al DOS
; Si aun no termina, repite el ciclo

4.4.4.- Funcin 01H de la INT 21H: Entrada del teclado con eco en pantalla.
Esta operacin acepta un carcter desde un bufer del teclado o, si no esta presente
alguno, espera una entrada del teclado. La expresin con eco en pantalla, significa que
cuando se emplea otra funcin para desplegar el carcter capturado en la pantalla, ste
aparece repetido). La operacin regresa uno de dos cdigos de estado.

AL = Un nmero distinto de cero, significa que un carcter ASCII estndar esta


presente, como una letra o un nmero, que la operacin repite en la pantalla.

AL =0, significa que el usuario a presionado una tecla de funcin extendida,


como Inicio FI o Repag, y el AH aun tiene la funcin original.

El cdigo siguiente ilustra esta funcin:


MOV AH,01H
INT 21H

; Peticin de entrada del teclado


; Llama al DOS

4.4.5.- Funcin 07Hde la INT 21H: Entrada del teclado sin eco.
Esta operacin funciona igual que la 01H, excepto que el carcter ingresado no se
repite en la pantalla. Podra utilizar la operacin para introducir una contrasea (o
password) que sea invisible o en donde no se quiere que la pantalla sea perturbada.

73

Universidad Autnoma de Tamaulipas


Facultad de Ingeniera Arturo Narro Siller

Captulo V.
PROGRAMAS
ENSAMBLADORES.

74

En este capitulo podemos observar las reglas para ensamblar, enlazar, generar
archivos de referencias cruzadas y convertir programas .EXE a .COM. la versin de
ensamblador de Microsoft es MASM, la de Borland es TASM y la de SRL es OPTASM,
todas ellas son similares. Desde la versin 6.0 de Microsoft utiliza el comando ML, que
realiza un ensamblador y enlace en un comando.
5.1.- Ensamblado un programa.
Se puede utilizar una lnea de comando para solicitar un ensamblador, aunque MASM
tambin proporciona indicaciones (prompts).
5.1.1.- Ensamblado un programa.
El formato general para usar una lnea de comando para ensamblador es:
MASM/TASM [opciones] fuente [,objeto] [,listado] [,refcrz]
las opciones son explicadas posteriormente.
Fuente, identifica el programa fuente. El ensamblador supone la extensin .ASM as
que no necesita ingresarla. Tambin puede teclear la unidad de disco o la ruta (ambas).
Objetivo, proporciona un archivo OBJ. La unidad o rutina y el nombre del archivo
pueden ser los mismos o diferentes a los de la fuente
Listado, provee de un archivo .LIST que contiene los cdigos fuente y objeto. La
unidad o ruta y el nombre del archivo pueden ser los mismos o diferentes a los del
fuente.
Referz, provee un archivo generado con los smbolos para un listado de referencias
cruzadas. La extensin .CRF para MASM y .XRF para TASM. La unidad y el nombre
del archivo pueden ser los mismos o diferentes.
Este ejemplo escribe todos los archivos.
MASM D: nombre, ASM: nombre,. OBJ,D: nombre, LST: nombre. CRF
El siguiente comando abreviado permite, por omisin, los valores para los archivos
objeto. De listado y referencias cruzadas, todos con el mismo nombre:
MASM D: nomarchivo, D:, D:, D:,

75

Este ejemplo solicita un archivo de referencias cruzadas pero no un archivo con el


listado:
MASM D: nomarchivo, D:,, D:
5.1.2.- Ensamblando con indicaciones.
Tambin se pueden teclear los nombres del ensamblador sin lnea de comando,
aunque TASM y MASM (hasta la versin 5.1) responden de manera diferente. TASM
muestra el formato general para la lnea de comando y una explicacin de las opciones,
mientras que MASM muestra una lista de indicaciones a las cuales hay que responder:
Source filename [.ASM]:
Objeto filename [source.OBJ]
Source listing [NUL.LST]
Cross-reference [NUL.CRF]
Source filename identifica el archivo fuente. Teclee la unidad o ruta (si no es por
omisin) y el nombre del archivo fuente, sin la extensin ASM.
Objet filename pregunta por el archivo objeto. La indicacin supone el mismo nombre
de archivo, aunque se podra cambiar. Para obtener un archivo objeto en la unidad D,
teclee D: y presione Enter.
Cross-reference provee de un listado de referencias cruzadas, aunque la peticin supone
que no se quiere. Para obtener una en la unidad D, teclee D: y presione Enter.
Para las ultimas tres peticiones, solo presione Enter si quiere aceptar los valores por
omisin.

Ensamblando un programa.
Opciones de Ensamblador.
Las opciones de ensamblador para MASM, TASM y OPTAS incluyen las siguientes:
/A
/C
/D
/E
/H
/L

Acomoda los segmentos fuente en orden alfabtico.


Crea un archivo de referencia cruzadas.
MASM: Produce archivos de listado de la pasada 1 y de la pasada 2 para localizar
errores. Para TASM, /Disimbolo significa define un smbolo.
Acepta instrucciones del procesador 80x87 y genera un enlace a BASIC, C o
FORTRAN para emular instrucciones de punto flotante.
Muestra opciones de ensamblador con una breve explicacin. Ingrese /H (help,
ayuda) sin nombre de archivo u otras opciones.
Crea un listado de archivo normal.
76

/ML
/MU
/MX
/N
/R
/S
/T
/V

Hace todos los nombres sensibles a maysculas y minsculas.


Convierte todos los nombres en maysculas.
Hace a los nombres pblicos y externos sensibles a maysculas y minsculas
Suprime la generacin de la tabla de smbolos.
Proporciona soporte para procesador matemtico.
Deja los segmentos fuente en la secuencia original.
(Breve) muestra diagnsticos al final del ensamblador solo si se encuentra un error.
(En extenso) al final del ensamblador, muestra el numero de lneas y smbolos
procesados. (no para OPTASM).
/Wn Establece el nivel de mensajes de advertencia: 0= muestra solo errores crticos; 1=
muestra errores crticos y advertencias graves (por omisin); 2= muestra errores
crticos, advertencias graves y advertencias de consulta.
/Z
Muestra lneas fuente en la pantalla para errores.
/ZD Incluye informacin de nmeros de lneas en archivo objeto para Code View,
TurboDebugger o SYMDEB.
/ZI Incluye informacin acerca de nmeros de lnea e informacin simblica en el
archivo objeto para Code View, TurboDebugger o SYMDEB.
Puede solicitar opciones tanto en modo de lnea e informacin de comandos. Para
eticiones, por ejemplo podra codificar MASM/V [Enter], despus teclee el nombre del
archivo de la manera usual. O puede teclear las opciones en cualquier lnea de peticin; por
ejemplo, como:
Fuente nomarch [.ASM]:/A/V nomarch o nomarch/A/V [Enter]
Las opciones /A/V le indican al ensamblador que escriba segmentos en orden
alfabtico y despliegue diagnsticos adicionales al final del ensamblador.

Caractersticas adicionales de Turbo Assembler.


Turbo assembler le permite ensamblar varios archivos, cada uno con sus propias
opciones, en una lnea de comando. Tambin puede usar los comodines del DOS (* y ?).
para ensamblar todos los programas fuente en el directorio actual, teclee TASM*. Para
ensamblar todos los archivos fuente PROG1.ASM., PROG2.ASM, etc., teclee TASM
prog?. Puede teclear grupos (o conjuntos) de nombres de archivos, con cada grupo separado
por punto y coma. El siguiente comando ensambla PROGRA y PROGB con la opcin /C y
PROGC con la opcin /A:
TASM/C PROGRA PROGB;/A PROGC

77

Microsoft Versin 6.x


ML [opciones] nomarchs [[opciones] nomarchs]...[/opciones enlace]
El ensamblador le permite ensamblar cualquier numero de programas en un modulo
ejecutable. Una opcin til es ML - ?, que despliega la sintaxis completa de la lnea de
comando y las opciones.
Tablas.
Siguiendo a n listado de ensamblador .LST estn una tabla de segmentos y grupos y
una tabla de smbolos.
Tabla de segmentos y grupos. Esta tabla tiene el encabezado siguiente:
Name

Length

Aling

Combine

Class

La columna Name de los nombres de todos los segmentos y grupos, en orden


alfabtico. La columna Length da el tamao en hexadecimal, de cada segmento. La
columna Align da el tiempo de alineacin, tal como BYTE, WORD o PARA. Combine
lista el tipo combinar definido, tal como STACK para una pila, NONE en donde no esta
codificado tipo, PUBLIC para definiciones externas, o una direccin hexadecimal para
tipos A]T. La columna Class lista los nombres de clase de segmento, como estn
codificados en la instruccin SEGMENT.

78

Vous aimerez peut-être aussi