Vous êtes sur la page 1sur 40

UNIVERSIDAD NACIONAL DE SAN AGUSTIN DE AREQUIPA

FACULTAD DE INGENIERA DE PRODUCCIN


Y SERVICIOS
ESCUELA PROFESIONAL DE INGENIERIA ELECTRNICA

CURSO:
ARQUITECTURA DE COMPUTADORAS (LABORATORIO)
TURNO:
VIERNES 7:00 a 9:00 am
TTULO:

Ensamblador 8088/8086, direccionamiento y


programacin, juego de instrucciones manual INTEL
PRCTICA NRO:
3
INTEGRANTES:

CUI:

QUICAA GARAY, ROUSVER RUBN

20042943

RAMREZ LLERENA, NILTON RUDY

20050375

ZAVALA RIVEROS, VLADIMIR IVN

20022334

FIRMA:

DOCENTE:
ING. ERASMO SULLA
FECHA:
Viernes 15 de Mayo del 2015
AREQUIPA PER

HARDWARE COMPUTADORA PERSONAL

Hardware PC XT 8088-8086
Arquitectura de Computadoras

PC XT 8088-8086
NDICE
1. SISTEMAS
QUE
COMPONEN
LA
COMPUTADORA
XT.. 2
2. CARACTERSTICAS
DEL
PROCESADOR
8088/8086.... 3
3. FUNCIONAMIENTO
EN
GENERAL....
6
4. SISTEMA DESCRITO POR BLOQUES
Y
POR
CIRCUITOS
... 8
5. ESQUEMTICO DEL SISTEMA COMPLETO SISTEMA DE
APLICACIN. 12
6. MUESTRA DE UNA MAINBOARD XT CON IDENTIFICACIN DE
DISPOSITIVOS,
ETIQUETADO
Y
ACCESORIOS...... 13
7. REGISTROS
DEL
8088
. 14
8. MODOS
DE
DIRECCIONAMIENTO
.... 17
9. SET
DE
INSTRUCCIONES
DEL
8088. 21
10. LENGUAJE
MQUINA,
MACROENSAMBLADOR
DEL
8088. 26
11. DEBUGER
Y
SIMULADORES
DEL
8088. 33
12. BIBLIOGRAFA
34

Hardware PC XT 8088-8086
Arquitectura de Computadoras

HARDWARE COMPUTADORA PERSONAL


PC XT 8088-8086
1. SISTEMAS QUE COMPONEN LA COMPUTADORA XT:
En el ao de 1981, hizo su aparicin el IBM Personal Computer, conocido
comnmente como IBM PC (en espaol Computadora u Ordenador
Personal IBM), como un paso de la multinacional estadounidense IBM
por incorporarse al campo de los microcomputadores personales.

Sin embargo, en 1983, tres aos despus del lanzamiento del IBM PC
original, la compaa introduce el modelo PC XT (Personal Computer
with eXtended Technology). En donde lo ms relevante fue la
incorporacin de un Disco Duro, 8 slots de expansin, una fuente de
poder de mayor potencia y ya no contaba con la interfaz para casetes. A
diferencia del modelo PC AT (Advanced Technology) lanzado un ao
despus, el PC XT posea concretamente un microprocesador Intel 8088,
16 k de RAM, ampliable a 256 k, una unidad de diskettes, un monitor de
pantalla verde monocromtica, un teclado y adems estaba equipado
con el MS-DOS rebautizado como PC-DOS. Estaba basado esencialmente
en la misma arquitectura que el PC original. Su precio inicial fue de
$3.285.

Hardware PC XT 8088-8086
Arquitectura de Computadoras
En primer lugar, la computadora personal PC XT tena como corazn al
microprocesador 8088 de Intel, lo cual vendra a ser la unidad central de
proceso o CPU. El 8088 era en s una versin simplificada de su
antecesor, el 8086 que contaba con registros y bus de datos de 16 bits.
El 8088 contaba con registros de 16 bits, con un bus de datos de 8 bits y
de direcciones de 20 bits. La ventaja se encontraba en que el bus de 8
bits coincida con el bus de datos de la placa base. Sin embargo se
requera la ayuda de un Coprocesador Intel 8087 para operaciones
aritmticas de coma flotante.
La computadora contaba con una disquetera o unidad de disquetes
(floppy disk o disco flexible) de tamao 5 de pulgada, de doble cara
y con una capacidad de 360KB (Kilobytes). Lo que haca destacar a esta
computadora de su predecesor, el IBM PC Original, en cuanto a
almacenamiento, era el uso de un Disco Duro de Seagate Technology ST412 de unos 10 MB (Megabytes) de capacidad. Ms tarde las unidades
de disquetes vendran instaladas de fbrica pero de media altura, sin
embargo en el 85, algunas unidades salieron de fbrica con dos
disqueteras de tamao completo en vez de una y sin contar con el disco
duro convirtindose el montaje en una opcin de bajo coste.
Las unidades de diskette eran de la marca Tandon y el controlador de las
unidades de diskette era un NEC PD765.
La PC XT contaba adems con una serie de 128 KB de memoria RAM en
la tarjeta madre que posteriormente pasaran a ser 256 KB debido a
propsitos de estandarizacin. La placa base daba lugar a 8 ranuras o
slots de expansin del tipo ISA de 8 bits. Se llegaron a tener hasta 2
versiones de la placa base del XT, donde la original poda admitir hasta
256 KB en la misma placa (4 bancos de chips de 64KB), capacidad que
llegara hasta los 640 KB con las tarjetas de expansin. La segunda
versin vendra hasta el ao 1986 en que se poda admitir hasta 640KB
enteros en la placa madre gracias a dos bancos de chips de 256KB y los
dos de 64KB. Algo que se incluy en esta segunda versin fue el empleo
de un IBM ROM BIOS, IBM BIOS o ROM BIOS que inclua soporte para el
teclado expandido.
El PC XT tambin albergaba una memoria ROM especfica como
intrprete de BASIC (lenguajes de programacin de alto nivel), lo cual en
el IBM PC Original era una operacin realizada por una unidad de casete,
que no se encontraba ms en el XT. Para acceder a esta funcin de
intrprete se requera de realizar operaciones auxiliares como
desconectar el disco duro, dejar vaca la disquetera, y otras como
acceder manualmente a la BIOS con un depurador.
La placa madre tambin contaba con chips de soporte. As se tenan: un
oscilador o generador de seales de reloj 8284A, un controlador de
interrupciones 8259A,
un
controlador
de
bus 8288,
un
controlador DMA 8237 (DMA o Acceso Directo a Memoria), un
timer 8253, una interfaz programable de perifricos 8255A, todos de
Intel,
ms
lgica
discreta
adicional
implementada
con
circuitos TTL usados como lgica de pegamento.
Otro componente del PC XT era el teclado, el cual al igual que en el caso
de su predecesor, el PC Original no era compatible con aquellos de los

Hardware PC XT 8088-8086
Arquitectura de Computadoras
equipos ms modernos (el AT o superior). Una dificultad al respecto era
el uso de diferentes cdigos de escaneo, adems de la interfaz elctrica
algo diferente de los teclados PC/AT (Uso de adaptadores de seal). El
teclado tena incorporado un procesador 8048 de Intel.
La tarjeta o placa madre cuenta con un par de conectores de 16 pines
provenientes de la fuente DC (de unos 130W) y de las seales
entrantes. Sin embargo tambin se cuentan con otros conectores para el
teclado y el Speaker. La fuente de alimentacin generaba hasta 4
voltajes (+5V, -5V, +12V y -12V) y se encontraba dentro del chasis o
case, junto con la placa madre, las unidades de disco y las tarjetas de
expansin.
No podemos olvidar los 8 slots o sockets de 16 pines para las tarjetas
que irn montadas en la placa. Estos slots o ranuras de expansin
alojaban a todo tipo de circuitos con diversas finalidades: Ampliacin de
Memoria, el controlador de las unidades de disco, el controlador de
video, tanto para la tarjeta monocromtica (MDA), como para la tarjeta
grfica de color (CGA), el cual era el 6845 de Motorola. No podemos
dejar de lado los canales: Serie RS-232 como para perifricos como el
ratn, y el Paralelo para las Impresoras.

2. CARACTERSTICAS DEL PROCESADOR 8088/8086:


El microprocesador 8088 es una derivacin del 8086; la diferencia es el
ancho del bus de datos. El 8086 tiene tanto el bus interno como externo
de datos de 16 bits, mientras que el 8088 tiene una ruta de datos
interna de 16 bits pero la interface a memoria de solo 8 bits. El cdigo
escrito para uno se ejecutar en el otro sin cambios.
La diferencia en el ancho del bus no hace que el 8086 sea el doble de
rpido que el 8088. El 8088 ejecuta sus instrucciones desde una cola
interna la cual se llena tan pronto como hay una localidad vaca; as, es
posible que se traslapen los ciclos de ejecucin y bsqueda. Con tal de
que las instrucciones se ejecuten de la cola interna y no tengan que
esperar un ciclo del bus, su ejecucin es tan rpida como pudiera ser en
el 8086. Si los ciclos de datos son para 16 bits, tomaran dos ciclos de
memoria; mientras que en el 8086 slo tomar uno.
El siguiente es un resumen de los puntos de inters del 8088:

Arquitectura interna de 16 bits


Soporta 1 MB de memoria
Aritmtica con signo y sin signo de 8 y 16 bits, tanto en binario
como en decimal, incluyendo multiplicacin y divisin.
14 registros de 16 bits.
Interrupcin enmascarable y no enmascarable.
24 modos de direccionamiento de operandos.
Acceso directo a memoria
Soporte para coprocesadores de bus local.
Soporte para E/S mapeada en memoria.
Operaciones de cadena.
4

Hardware PC XT 8088-8086
Arquitectura de Computadoras

Una manera de aprender acerca del 8088 es conocer las funciones de


sus pines. La figura que se mostrar a continuacin, muestra un
diagrama funcional a bloques (Functional Block Diagram) y un diagrama
de la definicin de las patitas (Pin Diagram) del 8088:

AD0 AD7: Las seales de estas patas transmiten informacin de


direcciones de memoria y E/S en cada ciclo del bus. Estas seales
estn multiplexadas; llevan los bits A0 A7 de direccin al principio
del ciclo del bus, despus se usan como el bus de datos del
procesador. En la PC, esta informacin de direccin se asegura
(latched) y se convierte en la direccin del bus del sistema.
A8 A15: Estas lneas son la salida de los bits A8 A15 de direccin
para memoria y E/S en cada ciclo del bus. No estn multiplexadas y
permanecen estables durante el ciclo del bus. En la PC, esta
informacin de direccin se asegura (latched) y se convierte en los
bits A8 A15 de direccin del bus del sistema.
A16/S3 A19/S6: Al inicio de cada ciclo del bus para memoria, estas
seales llevan los bits A16 A19 de direccin de memoria. Durante el
resto del ciclo, presentan el estado interno del 8088. Cuando S6 es
bajo, S5 da el estado de habilitacin de la bandera de interrupcin, y
S4 y S3 se codifican para decir cual registro de segmento se est
usando. En la PC no se usa esta informacin de estado. Estas lneas
se aseguran y se convierten en los bits A16 A19 de direccin del bus
del sistema.
CLK: Esta lnea proporciona la informacin de temporizacin para el
8088. En la PC, esta lnea viene del reloj 8284.

Hardware PC XT 8088-8086
Arquitectura de Computadoras
RQ/GT0: Es una seal bidireccional usada por otros maestros de bus
local para solicitar el uso del bus local. En la PC, esta lnea se conecta
a un enchufe de procesador auxiliar, compatible con el coprocesador
numrico 8087.
RQ/GT1: Realiza la misma funcin que RQ/GT0, pero tiene un nivel de
prioridad ms bajo. En la PC no se usa.
LOCK: Se activa por una instruccin de seguro (lock) y permanece
activa hasta el final de la siguiente instruccin. Se usa para indicar a
otros maestros de bus que no deben intentar ganar el control del bus.
Debido a que el diseo de la PC no es de bus multimaestro, esta lnea
no se usa.
NMI: Esta lnea de entrada genera una interrupcin no enmascarable
(nonmaskable). En la PC esta entrada de peticin de interrupcin se
usa para reportar errores de paridad en la memoria de la tarjeta
madre, acepta peticiones de interrupcin del enchufe del procesador
auxiliar, y acepta peticiones de dispositivos sobre el bus del sistema.
INTR: Esta seal de entrada es la de interrupcin mascarable. En la
PC, se conecta al controlador de interrupciones 8259A, el cual
expande la entrada a 8 entradas de interrupcin al sistema.
READY: Esta lnea de entrada se usa para insertar estados de espera
en los ciclos del bus del 8088 y, as, extender la longitud del ciclo. En
la PC, esta lnea viene del reloj 8284A, el cual lo sincroniza con el reloj
del sistema. La PC usa la funcin READY para insertar un estado de
espera en todos los accesos de puerto de E/S y DMA, y proporciona
una funcin de generacin de estados de espera en el bus del
sistema.
RESET: Se usa para detener al microprocesador. En la PC, esta seal
viene del reloj 8284A, el cual recibe su entrada de la fuente de
energa del sistema. La fuente del sistema genera una seal llamada
energa buena, la cual indica que los niveles de energa estn en
niveles adecuados y el RESET se puede remover del 8088.
QS0 y QS1: Estas lneas de salida dan el estado de la cola de
instruccin interna. En la PC, estas lneas estn alambradas con el
enchufe del procesador auxiliar de tal manera que puede seguir el
estado de la cola del 8088.
TEST: Este pin de entrada se prueba por la instruccin espera de
prueba. Si est en bajo, la ejecucin continua; si est en alto, el 8088
espera en un estado de ocioso hasta que la pata va a bajo. En la PC,
se alambra con la salida BUSY del 8087.
S0, S1 y S2: Estas salidas presentan informacin del estado que
pertenece al tipo de ciclo de bus que ser ejecutado. En la PC, estos
bits se alambran al controlador de bus 8288, donde se decodifican.
Las salidas decodificadas del 8088 se convierten en las lneas de
control del bus del sistema.

Hardware PC XT 8088-8086
Arquitectura de Computadoras
El procesador opera a 4.77 MHz, frecuencia que es derivada del cristal
de 14.31818 MHz la cual es dividida por tres por el reloj del procesador;
y por cuatro se obtiene 3.58 MHz (la seal requerida para los televisores
de color). El procesador es respaldado por el set de funciones provistas
por cuatro canales de 20 bits de acceso directo a memoria o DMA, tres
grupos de canales del Timer de 16 bits y ocho niveles de interrupciones.
Tres de los cuatro canales de DMA estn disponibles en el bus de
Entrada/Salida y hay una alta velocidad para transferencia de datos
entre las memorias y los canales de Entrada/Salida sin intervencin de
la memoria del procesador. El cuarto canal es programado para refrescar
el sistema dinmico de memoria, esto est hecho para el programa del
Timer-contador e informe peridicamente de la transferencia DMA.

3. FUNCIONAMIENTO EN GENERAL:
La funcin bsica de una computadora es ejecutar programas, los cuales
estn compuesto de un conjunto de instrucciones almacenadas en
memoria. La CPU es la encargada de ejecutar las instrucciones
especficas del programa. Para comprender esta funcin debe
considerarse el detalle del proceso de ejecucin del programa. Desde el
punto de vista ms simple, se considera el procesamiento de una
instruccin en dos etapas: la CPU lee (busca, trae; fetch en ingls) la
instruccin de memoria y la ejecuta. La ejecucin del programa consiste
en la repeticin del proceso de traer y ejecutar la instruccin.
Buscar una
instrucciones,
de memoria.
operaciones y

instruccin es una operacin comn a todas las


y consiste en la lectura de la instruccin de una localidad
La ejecucin de la instruccin puede suponer varias
depende de la naturaleza de la instruccin.

El procesamiento de una instruccin se denomina ciclo de instruccin y


se representa en la figura siguiente. Los dos pasos se denotan como
ciclo de bsqueda y ciclo de ejecucin. La ejecucin del programa se
detiene slo si la computadora se desconecta, se produce algn error o
se encuentra una instruccin que detiene la computadora.

Hardware PC XT 8088-8086
Arquitectura de Computadoras

Al principio de cada ciclo de instruccin, la CPU busca o trae una


instruccin de memoria. En una CPU tpica, se utiliza un registro llamado
contador de programa (PC program counter) para apuntar a la
instruccin que debe traerse a continuacin. A no ser que se indique
otra cosa, la CPU siempre incrementa el PC despus de traer una
instruccin para determinar de dnde traer la siguiente instruccin de la
secuencia (siguiente direccin de memoria).
La instruccin trada se almacena en un registro de la CPU conocido
como registro de instruccin (IR instruction register). La CPU interpreta
la instruccin y realiza la accin requerida. En general, sta puede ser
de cuatro tipos:
-

CPU - Memoria: Deben transferirse datos desde la CPU a la memoria


o viceversa.
CPU - E/S: Deben transferirse datos a o desde el exterior mediante el
mdulo de E/S.
Procesamiento de datos: La CPU realizar alguna operacin
aritmtica o lgica con los datos.
Control: Una instruccin puede especificar que la secuencia de
ejecucin se altere por lo que la CPU debe poner el contador de
programa al valor adecuado.

El ciclo de ejecucin de una instruccin puede ocasionar ms de una


referencia a memoria, o en su lugar, puede especificar una operacin de
E/S. Con estas consideraciones en mente, la figura 5 proporciona una
visin ms detallada el ciclo de instruccin. Para un ciclo de instruccin
dado, algunos estados pueden no darse y otros pueden visitarse ms de
una vez. Los estados se describen a continuacin:

Hardware PC XT 8088-8086
Arquitectura de Computadoras
Clculo de la direccin de instruccin (iac, instruction address
calculation): Determina la direccin de la siguiente instruccin a
ejecutar.
Bsqueda de instruccin (if, instruction fetch): La CPU lee la
instruccin desde su posicin de memoria.
Decodificacin de la operacin indicada en la instruccin (iod,
instruction operation decoding): Analiza la instruccin para
determinar el tipo de operacin a realizar y el (los) operando(s) a
utilizar.
Clculo de la direccin del operando (oac, operand address
calculation): Si la instruccin implica una referencia a un operando en
memoria o disponible mediante E/S, determina la direccin del
operando.
Bsqueda de operando (of, operand fetch): Trae el operando desde
la memoria o se lee desde el dispositivo de E/S.
Operacin con los datos (do, data operation): realiza la operacin
indicada en la instruccin.
Almacenamiento de operando (os, operand store): Escribe el
resultado en memoria o lo saca a travs de un dispositivo de E/S.

Los estados de la parte superior de la figura ocasionan intercambio


entre la CPU y la memoria o mdulo E/S. Los estados inferiores slo
ocasionan operaciones internas en la CPU. El estado oac aparece dos
veces, porque una instruccin puede ocasionar una lectura, una
escritura o ambas. Obsrvese adems la posibilidad de mltiples
operandos y resultados puesto que se necesitan en algunas
instrucciones.

4. SISTEMA
DESCRITO
CIRCUITOS:

POR

BLOQUES

POR

La PC XT estaba esencialmente basada en la misma arquitectura de la


IBM PC Original. La IBM PC original fue un sistema basado en disquete
con una memoria de 32K y cinco ranuras o slots de expansin. La IBM
PC soportaba uno o dos disquetes, cada uno con capacidad de 160KB y
se le podan agregar externamente dos manejadores de disco flexible.
La PC original us el microprocesador 8088 de Intel corriendo a 4.77
MHz. A continuacin se muestra la PC original descrita por bloques:

Hardware PC XT 8088-8086
Arquitectura de Computadoras

Para estar a la vanguardia de las tecnologas competentes en ese


entonces, la IBM PC rpidamente requiri varias mejoras, para
mantenerse a la par con el desarrollo de software y la necesidad de ms
RAM y capacidad en disco. Esta necesidad se satisfizo con la
introduccin de la PC XT la cual adopt las siguientes mejoras:

Se aument el nmero de ranuras de expansin a 8.


Se agreg adaptador de disco y disco duro.
Se agreg un puerto serie y un paralelo como equipo estndar.
La capacidad en RAM de la tarjeta madre se increment a 256KB.
La fuente de energa se aumenta de 65 a 130 watts.
La capacidad del disco flexible se mejor de un solo lado a doble
lado para una capacidad total de 360K.

En la figura a continuacin, mostramos el sistema de la PC XT descrito


por bloques, de esta manera podemos contrastar los atributos del IBM
PC con las mejoras anteriormente mencionadas:

10

Hardware PC XT 8088-8086
Arquitectura de Computadoras

La IBM PC XT no increment el rendimiento del procesador manteniendo


el 8088 a 4.77 MHz. El rendimiento de la PC XT se extendi
incrementando la velocidad del reloj a 8 y 10 MHz. En algunas
compatibles, al aumentar la velocidad del reloj, se agregaron estados de
espera para los ciclos de memoria del procesador para permitir el uso de
chips de RAM menos caros. El 8088 requiere cuatro ciclos para ejecutar
un ciclo de memoria, con la adicin de un estado de espera, se
requieren cinco ciclos de reloj. A 4.77 MHz, un ciclo de reloj es de 210 ns
y sin estado de espera el ciclo de memoria es 4 veces 210 ns, o 840 ns.
A 10 MHz, los ciclos de reloj son de 100 ns y con cero estados de espera
el ciclo de memoria es de 400 ns, o 2.1 veces ms rpido que la PC
original de 4.77 MHz.
En cuanto a la Arquitectura de la PC XT, debemos decir que esta es
original de IBM y fue implementada en base al microprocesador 8088 de
la INTEL. Una idea general de esta encierra las siguientes
caractersticas:
-

Posee una mxima capacidad de direccionamiento de 1048576


BYTES, comnmente conocido como 1024KB.
Es una arquitectura Local BUS.

11

Hardware PC XT 8088-8086
Arquitectura de Computadoras
-

Posee ocho canales de interrupciones mascarables y una no


mascarable, controladas por el controlador de interrupciones
8259 y el microprocesador 8088 respectivamente.
Posee 4 canales de acceso directo a memoria, todos controlados
por el circuito integrado (IC) 8237 de la INTEL.
Posee las seales de control bsicas de lectura y escritura de
memoria y puerto.
Posee cuatro alimentaciones de: +12V, -12V, +5V y -5V.
Todas las seales son 100% compatibles con TTL menos las
seales de 12V y -12V.
Es una arquitectura sincrnica, cuya primera versin fue
implementada con un reloj de 4.77 MHZ.

El diagrama de bloques a continuacin presenta de forma general y ms


completa cada uno de los componentes de la placa principal del PC/XT
basado en el microprocesador 8088:

En cuanto a la circuitera de apoyo que ha sido mostrada en el diagrama


anterior, el sistema PC XT usa adicionalmente como apoyo a las
operaciones realizadas, los siguientes dispositivos:

12

Hardware PC XT 8088-8086
Arquitectura de Computadoras

CODIGO DEL
INTEGRADO

FUNCION

74LS373

8 BIT LATCH ACTIVADO POR


NIVEL

74LS245

8 BIT AMPLIFICADOR
BIDIRECCIONAL

74LS244

8 BIT AMPLIFICADOR

74LS138

DECODIFICADOR 3/8

75477

AMPLIFICADOR INVERSOR

74LS175

FLIP FLOP D

74LS280

GENERADOR DE PARIDAD

74LS08

6 x INVERSOR

74LS32

4 x OR

74LS07

6 x BUFFER

74LS08

4 x AND

5. ESQUEMTICO DEL SISTEMA COMPLETO SISTEMA


DE APLICACIN:

13

Hardware PC XT 8088-8086
Arquitectura de Computadoras

6. MUESTRA
DE
UNA
MAINBOARD
XT
CON
IDENTIFICACIN DE DISPOSITIVOS, ETIQUETADO Y
ACCESORIOS:

14

Hardware PC XT 8088-8086
Arquitectura de Computadoras

Mainboard de PC XT con ID de dispositivos

Disco Duro de PC XT y Controlador

15

Hardware PC XT 8088-8086
Arquitectura de Computadoras

Disquetera de PC XT y Controlador

Case o Armario del PC XT con su Contenido

7. REGISTROS DEL 8088:


Para ayudar al funcionamiento de las instrucciones, para poder manejar
variables en memoria y para su propio funcionamiento, el
microprocesador dispone de una serie de variables internas de
nombres fijos que son los registros internos. En total hay 14 de estos
registros, cada uno de los cuales est pensado principalmente para
alguna funcin concreta. En seguida se dan detallan cada uno de estos
registros, divididos segn reas de funcionalidad:
7.1.

Registros de Almacenamiento Temporal o de Datos:

En primer lugar se tiene:

AX (Registro Acumulador): Es usado sobre todo en


operaciones aritmticas como primer operando y tambin como
registro de propsito general a disposicin del programador.

16

Hardware PC XT 8088-8086
Arquitectura de Computadoras

BX (Registro Base): Se usa principalmente para indicar


posiciones de memoria (offset).
CX (Registro Contador): Este registro se usa siempre que se
necesite un contador en operaciones repetitivas y bucles.
DX (Registro Dato): Se usa como registro auxiliar en
operaciones aritmticas y como contenedor de datos a la hora
de usar instrucciones de comunicacin de puertos.

Estos cuatro registros, como todos los restantes, son de 16 bits, pero
para permitir la realizacin de operaciones de tipo byte (8 bits) cada
uno de estos cuatro registros est dividido en dos subregistros de 8
bits a los que se puede acceder de forma independiente (como se
observa en la figura 1.2). As, por ejemplo, los 8 bits inferiores de AX
se llaman AL (L de low, bajo) y los 8 superiores AH (H de high, alto).
En consecuencia, BX, CX y DX se dividen en BH/BL, CH/CL y DH/DL
respectivamente. De esta forma se tiene que todas las instrucciones
ensamblador pueden operar con datos de 8 y 16 bits segn lo que
se precise. En los dems registros esta subdivisin no es posible.
7.2.

Registros de Segmento:

Son cuatro registros de 16 bits usados para indicar direcciones de


memoria:

7.3.

CS (Code Segment): Este registro es usado por el procesador,


junto con el registro IP, para conocer dnde est la instruccin
actual que est siendo ejecutada.
DS (Data Segment): Se usa para indicar dnde estn todos los
datos del programa en ejecucin.
SS (Stack Segment): En este registro se indica al procesador
dnde est la zona de memoria que se usa como segmento de
pila.
ES (Extra Segment): Es el registro que referencia al segmento
extra, y se usa como apuntador de memoria auxiliar en
operaciones complejas donde se necesitan dos punteros de
datos simultneos.
Registros de la Pila:

La pila es un rea de memoria importante. Tiene, en vez de uno, dos


registros que se usan como desplazamiento (offset) para apuntar su
contenido. Se usan como complemento al registro SS y son:

7.4.

SP (Stack Pointer): Es el registro que se reserva el procesador


para uso propio en instrucciones de manipulacin de la pila.
BP (Base Pointer): Se usa como registro auxiliar.
Registros ndices:

Se utilizan como desplazamientos complementarios para DS y ES a


la hora de indicar la posicin donde se encuentran los datos a los
que se desea acceder. Son:

17

Hardware PC XT 8088-8086
Arquitectura de Computadoras

7.5.

SI (Source index): Se usa como puntero origen en operaciones


de desplazamiento de datos entre dos zonas de memoria.
DI (Destination index): Se usa como destino en operaciones
de desplazamiento de datos.
Registros de Instruccin:

Slo hay uno, el registro IP (Instruction Pointer), es usado por la


CPU para conocer la posicin relativa a la base CS donde se
encuentra la instruccin que se est ejecutando actualmente. Este
registro no puede ser modificado directamente por parte del
programador. Este puntero cambia su contenido automticamente
cada vez que se ejecuta una instruccin o cuando se salta a otro
punto del programa mediante una instruccin de salto.
7.6.

Registro de Banderas:

Este registro es usado para tener el control de estado y control de las


operaciones. La mayora de sus 16 bits se utiliza para representar un
estado concreto:
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
CF -- PF -- AF -- ZF SF TF IF DF OF -- -- -- -Bit 0 - CF (Carry Flag): Es la bandera de acarreo. Se pone a 1
cuando se produce un resultado con acarreo tras una operacin
aritmtica.
Bit 1: No usado.
Bit 2 - PF (Parity Flag): Cuando est a 1, indica que hay un nmero
par de bits activos.
Bit 3: No usado.
Bit 4 - AF (Auxiliar Flag): Se usa como bandera auxiliar. Se pone a 1
cuando hay necesidad de realizar ajustes tras una operacin de tipo
BCD.
Bit 5: No usado.
Bit 6 - ZF (Zero Flag): Indica si se ha producido un resultado cero o
una comparacin con operadores iguales.
Bit 7 - SF (Sign Flag): Indica si se ha producido un resultado
negativo o comparacin menor.
Bit 8 - TF (Trap Flag): Es la bandera de atrape, usada en procesos
de depuracin de cdigo.
Bit 9 - IF (Interrupt Flag): Si est a 1, indica que est permitida la
generacin de interrupciones hardware que generan algunos
perifricos, como la que realiza el teclado cada vez que una tecla es
pulsada.
Bit 10 - DF (Direction Flag): Indica a la CPU hacia donde se
desplazan los punteros relativos en operaciones repetitivas de
cadenas de datos.
Bit 11 - OF (Overflow Flag): Indica si se ha producido un
desbordamiento aritmtico.
Bit 12 al 15: No usados.
La Figura mostrada a continuacin muestra el Conjunto de Registros del
8088:

18

Hardware PC XT 8088-8086
Arquitectura de Computadoras

8. MODOS DE DIRECCIONAMIENTO:
El 8088 puede direccionar ms de los 65536 bytes de datos
especificados por los 16 bits. El 8088 tiene una direccin de 20 bits que
permite un tamao de memoria fsica de 1, 048,576 bytes. Tomando en
cuenta el criterio del programador, el almacenamiento est limitado a
una regin de 64 KB, sin embargo el programador puede mover esta
regin de 64 KB a alguna demarcacin en el espacio de 1 MB. Esto se
logra manipulando los contenidos del Registro de Segmento.
El valor cargado en el Registro de Segmento se usa para localizar la
regin de 64 KB en el espacio de 1 MB. Debido a que este Registro es
tambin de 16 bits, no puede por s mismo especificar alguna
demarcacin en el espacio de 1 MB. A pesar de esto, el registro de 16
bits puede especificar 64 KB regiones diferentes. La direccin de
memoria fsica se forma corriendo a la izquierda 4 bits el contenido del
registro de segmento y sumndolo a la direccin de 16 bits. La figura
ilustra la generacin de la direccin fsica.

19

Hardware PC XT 8088-8086
Arquitectura de Computadoras

El valor del segmento se le llama direccin base, y una direccin dentro


de un segmento se le llama offset. As, cualquier direccin en el espacio
de 1 MB se puede identificar especificando una base y un offset. Por lo
tanto, se puede tener que muchas combinaciones de base y offset
pueden usarse para especificar una direccin de memoria.

MODOS DE DIRECCIONAMIENTO:

A continuacin pasamos a describir ambos modos de Direccionamiento:


el de Datos y el de Memoria de Programa. Para describir los modos se har
uso de la instruccin MOV destino, origen.

Modos de Direccionamiento de Datos:


Se tienen los siguientes:

a) Direccionamiento por Registro:


Transfiere el contenido de un registro a otro del mismo tamao. El
nico MOV que no se permite es el que se hace entre un registro de
segmento y otro. Tampoco se puede modificar el registro de
segmento de cdigo. Es rpido.
MOV AX, BX (AX <- BX)
b) Direccionamiento Inmediato:
Transfiere el dato que sigue al cdigo de operacin al registro
especificado. Es muy rpido porque se hace con informacin de la
cola.
MOV AX,3456H (AX <- 3456H)
c) Direccionamiento Directo:
Se suma el desplazamiento dado al segmento de datos.

20

Hardware PC XT 8088-8086
Arquitectura de Computadoras
-

Direccionamiento directo que solo se aplica a una MOV entre


una localidad de memoria y AL AX. Son instrucciones muy
comunes y tienen 3 bytes de longitud.
Direccionamiento directo por desplazamiento: dem anterior
pero de 4 bytes.

MOV AX,1234H (AX <- [DS x 10H + 1234H])


d) Direccionamiento indirecto por registro:
Transfiere un dato entre un registro y una direccin de memoria
direccionada por un registro ndice o base (BP, EX, DI, SL)
MOV AX, [BX] (Ax <- [DS x 10H + BX])

Cuando se utiliza este modo de direccionamiento y se emplean los


registros BX, DI o SI, se asume que el dato est en el segmento de
datos. Si se usa BP se toma que el dato est en el segmento de pila.
e) Direccionamiento Base Ms ndice:
Direcciona en forma indirecta los datos de memoria. Se usa un
registro base (BP o BX) ms un registro ndice (DI o SI). Si se usa BP
se toma como dato de pila.

MOV AX, [BX+SI] (AX <- [BX+SI+DS x 10H])

Se usa para direccionar tablas en memoria.


f) Direccionamiento Relativo por Registro:
Para ubicar el dato se agrega un desplazamiento al contenido del
ndice (BP, BX, DI o SI). Tambin BP direcciona en pila y los otros en
datos.
MOV [BX+4],AX (AX -> BX+4+DS x 10H)
g) Direccionamiento Relativo Base Ms ndice:
Transfiere entre un registro y una direccin dada por un registro
base ms ndice ms desplazamiento.

MOV ARRAY [BX+SI], AX (BX+ARRAY+SI+DS x 10H <- AX)

21

Hardware PC XT 8088-8086
Arquitectura de Computadoras
Se usa para direccionar un arreglo bidireccional.

Modos de Direccionamiento de Memoria de Programa:


Usados en instrucciones de salto (JMP) y llamada (CALL )
a) Direccionamiento Directo a la Memoria del Programa:
Se almacena la direccin con el cdigo de operacin. Se usa para
saltos largos entre segmentos.
JMP 10000H CS <- 10000H, IP <- 0000H
b) Direccionamiento Relativo de Memoria de Programa:
Se modifica el contenido del IP para continuar la ejecucin en otro
lado, segn el valor especificado luego del cdigo de operacin. Se
usa para saltos cortos intrasegmento.
JMP 2 (IP <- IP+2)
c) Direccionamiento Indirecto de Memoria de Programa:
La direccin est contenida en un registro relativo.
JMP [BX] (Ip <- BX)
d) Direccionamiento a la Pila de Memoria:
Los datos se ponen en la pila por PUSH y se recuperan por POP.
La instruccin CALL aprovecha la pila para salvar la direccin de
retorno y la RET para recuperarla.
La pila se mantiene con 2 registros:
SP: Stack Pointer
SS: Stack Segment
PUSH: El SP-1 apunta a donde se almacenar la parte alta del
prximo dato. La parte baja se almacena en SP-2. Luego
deccrementa 2.
POP: LA parte alta del dato se recupera de SP, la parte baja se
recupera de SP+1. Luego incrementa 2.
NOTA: PUSH A y POP A salva o recupera todos los registros (excepto
los de segmento) en la pila.
e) Direccionamiento Implcito:
El operando est implcito. HLT, LOCK, WAIT, DAA.

22

Hardware PC XT 8088-8086
Arquitectura de Computadoras

9. SET DE INSTRUCCIONES DEL 8088:

23

Hardware PC XT 8088-8086
Arquitectura de Computadoras

24

Hardware PC XT 8088-8086
Arquitectura de Computadoras

25

Hardware PC XT 8088-8086
Arquitectura de Computadoras

26

Hardware PC XT 8088-8086
Arquitectura de Computadoras

27

Hardware PC XT 8088-8086
Arquitectura de Computadoras

10. LENGUAJE MQUINA, MACROENSAMBLADOR DEL


8088:
El lenguaje mquina es el nico que entiende directamente la
computadora, utiliza el alfabeto binario que consta de los dos nicos
smbolos 0 y 1, denominados bits (abreviatura inglesa de dgitos
binarios).
El lenguaje mquina es el nico que entiende directamente la
computadora, utiliza el alfabeto binario que consta de los dos nicos
smbolos 0 y 1, denominados bits (abreviatura inglesa de dgitos
binarios). Fue el primer lenguaje utilizado en la programacin de
computadoras, pero dej de utilizarse por su dificultad y complicacin,
siendo sustituido por otros lenguajes ms fciles de aprender y utilizar,
que adems reducen la posibilidad de cometer errores.
EJEMPLO
0000

0001

1010

0001

01 A1

1000

1001

1001

1010

89 9A

0011

1010

1001

1100

3A 9C

0111

0100

0111

0000

74 70

1110

1001

0010

0000

E9 20

ENSAMBLADORES Y MACROENSAMBLADORES:
Existen varios ensambladores disponibles para ambiente MS-DOS: el IBM
Macro Assembler, el Turbo Assembler de Borland, el Turbo Editassm de
Speedware, por citar algunos. Una breve descripcin de cada uno se
propociona a continuacin.
Macro Ensamblador IBM.- Est integrado por un ensamblador y un
macroensamblador. En gran medida su funcionamiento y forma de
invocarlo es sumamente similar al de Microsoft. Su forma de uso
consiste en generar un archivo fuente en cdigo ASCII, se procede a
generar un programa objeto que es ligado y se genera un programa
.EXE. Opcionalmente puede recurrirse a la utilera EXE2BIN de MS-DOS
para transformarlo a .COM. Es capaz de generar un listado con
informacin del proceso de ensamble y referencias cruzadas.

28

Hardware PC XT 8088-8086
Arquitectura de Computadoras
Macro Ensamblador de Microsoft.- Dependiendo de la versin, este
ensamblador es capaz de soportar el juego de instrucciones de distintos
tipos de microprocesadores Intel de la serie 80xx/80x86. En su versin
4.0 este soporta desde el 8086 al 80286 y los coprocesadores 8087 y
80287. Requiere 128KB de memoria y sistema operativo MS-DOS v2.0 o
superior. Trabaja con un archivo de cdigo fuente creado a partir de un
editor y grabado en formato ASCII. Este archivo es usado para el proceso
de ensamble y generacin de cdigo objeto. Posteriormente, y con un
ligador, es creado el cdigo ejecutable en formato .EXE.
Turbo Editassm.- Este es desarrollado por Speedware, Inc., y consiste
de un ambiente integrado que incluye un editor y utileras para el
proceso de ensamble y depuracin. Es capaz de realizar el ensamble
lnea a lnea, conforme se introducen los mnemnicos, y permite revisar
listas de referencias cruzadas y contenido de los registros. Este
ensamblador trabaja con tablas en memoria, por lo que la generacin
del cdigo ejecutable no implica la invocacin explcita del ligador por
parte del programador. Adicionalmente permite la generacin de
listados de mensajes e informacin de cada etapa del proceso y la
capacidad de creacin de archivos de cdigo objeto.
Turbo Assembler.- De Borland Intl., es muy superior al Turbo Editassm.
Trabaja de la misma forma, pero proporciona una interfaz mucho ms
fcil de usar y un mayor conjunto de utileras y servicios.
En lo que se refiere a las presentes notas, nos enfocaremos al Microsoft
Macro Assembler v4.0. Los programas ejemplo han sido desarrollados
con ste y est garantizado su funcionamiento. Estos mismos
programas posiblemente funcionen con otros ensambladores sin
cambios o con cambios mnimos cuando utilizan directivas o
pseudoinstrucciones.
Realmente la diferencia entre los ensambladores radica en la forma de
generar el cdigo y en las directivas con que cuente, aunque estas
diferencias son mnimas. El cdigo ensamblador no cambia puesto que
los microprocesadores con los que se va a trabajar son comunes. As,
todos los programas que se creen con un ensamblador en particular
podrn ser ensamblados en otro, cambiando las pseudo-operaciones no
reconocidas por el equivalente indicado en el manual de referencia del
paquete empleado.
Los programas que componen el Macro Ensamblador Microsoft v4.0 son
los siguientes:
Programa

Descripcin

MASM.EXE

Microsoft Macro Assembler

LINK.EXE

Microsoft 8086 object linker

SYMDEB.EXE

Microsoft Symbolic Debuger Utility

MAPSYM.EXE

Microsoft Symbol File Generator

CREF.EXE

Microsoft Cross-Reference Utility

29

Hardware PC XT 8088-8086
Arquitectura de Computadoras
LIB.EXE
MAKE.EXE

Microsoft Library Manager


Microsoft Program Maintenance Utility

EXEPACK.EXE

Microsoft EXE File Compression Utility

EXEMOD.EXE

Microsoft EXE File Header Utility

COUNT.ASM

Sample source file for SYMDEB session

README.DOC
manual

Updated information obtained after the


was printed.

El Microsoft Macro Assembler v4.0 crea cdigo ejecutable para


procesadores 8086, 8088, 80186, 80188, 80286, 8087 y 80287. Adems
es capaz de aprovechar las instrucciones del 80286 en la creacin de
cdigo protegido y no protegido.
El trmino macroensamblador es usado para indicar que el ensamblador
en cuestin tiene la capacidad de poder ensamblar programas con
facilidad de macro. Una macro es una pseudo-instruccin que define un
conjunto de instrucciones asociadas a un nombre simblico. Por cada
ocurrencia en el cdigo de esta macro, el ensamblador se encarga de
substituir esa llamada por todas las instrucciones asociadas y, en caso
de existir, se dejan los parmetros con los que se estaba llamando la
macro y no con los que haba sido definida. Es importante sealar que
no se deja una llamada, como a una subrutina o procedimiento, sino que
se incorporan todas las instrucciones que definen a la macro.
FORMATO DE LAS INSTRUCCIONES
Cada instruccin en lenguaje ensamblador del 8088 est compuesta de 4
campos:
Etiqueta operacin operando comentario
El campo comentario se utiliza para propsitos de documentacin y es opcional.
Campo etiqueta: Una etiqueta debe comenzar con un carcter alfabtico y
puede contener
hasta 31 caracteres, incluyendo:
Letras de la A a la Z
Nmeros del 0 al 9
Los smbolos especiales: - $ . @ %
No se puede utilizar un nombre que coincida con una palabra reservada o
directiva del ensamblador. Si el nombre incluye un punto, entonces el punto
debe ser el primer carcter.

30

Hardware PC XT 8088-8086
Arquitectura de Computadoras
Campo operacin: Contiene el nemotcnico de la instruccin, que es de 2 a
6 caracteres.
Campo operando: Contiene la posicin o posiciones donde estn los datos
que van a ser manipulados
por la instruccin.
Campo comentario: Se utiliza para documentar el cdigo fuente del
ensamblador. Debe separarse
del ltimo campo por al menos un espacio e iniciar con ;.
Cuando inicia un comentario en una lnea sta deber tener en la primera
Columna el carcter
DIRECTIVAS (Instrucciones para el ensamblador)
Definicin de smbolos

EQU: Define nombres simblicos que representan valores u otros valores


simblicos. Las dos formas son:
nombre EQU expresin
nuevo_nombre EQU viejo_nombre
Una vez definido un nombre mediante EQU, no se puede volver a definir.
=: Es similar a EQU pero permite que el smbolo se pueda redefinir. Slo admite la forma: nombre =
expresin.
Definicin de datos
Ubica memoria para un tem de datos y opcionalmente asocia un nombre
simblico con esa direccin de memoria y/o genera el valor inicial para ese
tem.
[nombre] DB valor_inicial [, valor_inicial...]
donde valor_inicial puede ser una cadena o una expresin numrica cuyo resultado est entre -255 y
255.
[nombre] DW valor_inicial [, valor_inicial...]
donde valor_inicial puede ser una expresin numrica cuyo resultado est entre -65535 y 65535 o
un operando de memoria en cuyo caso se almacenar el offset del mismo.
[nombre] DD valor_inicial [, valor_inicial...]
donde valor_inicial puede ser una constante cuyo valor est entre -4294967295 y 4294967295, una
expresin numrica cuyo valor absoluto no supere 65535, o bien un operando de memoria en cuyo
caso se almacenarn el offset y el segmento del mismo (en ese orden).
Si se desea que no haya valor inicial, deber utilizarse el smbolo ?.
Otra forma de expresar el valor inicial es:
cuenta DUP (valor_inicial [, valor_inicial...]) donde cuenta es la cantidad de veces que debe
repetirse lo que est entre parntesis.

31

Hardware PC XT 8088-8086
Arquitectura de Computadoras
Definicin de segmentos
Organizan el programa para utilizar los segmentos de memoria del
microprocesador 8088. Estos son SEGMENT, ENDS, DOSSEG, ASSUME,
GROUP.
nombre_segm

SEGMENT [alineacin][combinacin]['clase']
sentencias

nombre_segm

ENDS

Alineacin: define el rango de direcciones de memoria para el cual puede elegirse el inicio del
segmento. Hay cinco posibles:
1. BYTE: El segmento comienza en el siguiente byte.
2. WORD: El segmento comienza en la siguiente direccin par.
3. DWORD: Comienza en la siguiente direccin mltiplo de 4.
4. PARA: Comienza en la siguiente direccin mltiplo de 16.
5. PAGE: Comienza en la siguiente direccin mltiplo de 256.
Si no se indica la alineacin sta ser PARA.
Combinacin: define cmo combinar segmentos que tengan el mismo nombre. Hay cinco posibles:
1. PUBLIC: Concatena todos los segmentos que tienen el mismo nombre para
formar un slo segmento. Todas las direcciones de datos e instrucciones se
representan la distancia entre el inicio del segmento y la direccin
correspondiente. La longitud del segmento formado ser la suma de las
longitudes de los segmentos con el mismo nombre.
2. STACK: Es similar a PUBLIC. La diferencia consiste que, al comenzar la
ejecucin del programa, el registro SS apuntar a este segmento y SP se
inicializar con la longitud en bytes de este segmento.
3. COMMON: Pone el inicio de todos los segmentos teniendo el mismo nombre
en la misma direccin de memoria. La longitud del segmento ser la del
segmento ms largo.
4. MEMORY: Es igual a PUBLIC.
5. AT direccin_de_segmento: Hace que todas las etiquetas y direcciones de
variables tengan el segmento especificado por la expresin contenida en
direccin_de_segmento. Este segmento no puede contener cdigo o datos
con valores iniciales. Todos los smbolos que forman la expresin
direccin_de_segmento deben conocerse en el primer paso de ensamblado.
Si no se indica combinacin, el segmento no se combinar con otros del mismo
nombre (combinacin "privada").
Clase: Es una forma de asociar segmentos con diferentes nombres, pero con propsitos similares.
Sirve tambin para identificar el segmento de cdigo. Debe estar encerrado entre comillas simples.

32

Hardware PC XT 8088-8086
Arquitectura de Computadoras
El linker pone los segmentos que tengan la misma clase uno a continuacin de otro, si bien siguen
siendo segmentos diferentes. Adems supone que los segmentos de cdigo tiene clase CODE o un
nombre con el sufijo CODE.
DOSSEG: Esta directiva especifica que los segmentos deben ordenarse segn la convencin de
DOS. Esta es la convencin usada por los compiladores de lenguajes de alto nivel.
GROUP: Sirve para definir grupos de segmentos. Un grupo es una coleccin de segmentos
asociados con la misma direccin inicial. De esta manera, aunque los datos estn en diferentes
segmentos, todos pueden accederse mediante el mismo registro de segmento. Los segmentos de un
grupo no necesitan ser contiguos.
Sintaxis: nombre_grupo GROUP segmento [, segmento...]
ASSUME: Sirve para indicar al ensamblador qu registro de segmento corresponde con un
segmento determinado. Cuando el ensamblador necesita referenciar una direccin debe saber en qu
registro de segmento lo apunta.
Sintaxis: ASSUME reg_segm:nombre [, reg_segm:nombre...]
donde el nombre puede ser de segmento o de grupo, una expresin utilizando el operador SEG o la
palabra NOTHING, que cancela la seleccin de registro de segmento hecha con un ASSUME
anterior.
Control del ensamblador
ORG expresin: El offset del cdigo o datos a continuacin ser la indicada por
la expresin. Todos los smbolos que forman la expresin deben conocerse en el
primer paso de ensamblado.
EVEN: Hace que la prxima instruccin o dato se ensamble en la siguiente posicin par.
END [etiqueta]: Debe ser la ltima sentencia del cdigo fuente. La etiqueta indica dnde debe
comenzar la ejecucin del programa. Si el programa se compone de varios mdulos, slo el mdulo
que contiene la direccin de arranque del programa debe contener la directiva END etiqueta. Los
dems mdulos debern terminar con la directiva END (sin etiqueta).
Definicin de procedimientos
Los procedimientos son secciones de cdigo que se pueden llamar para su
ejecucin desde distintas partes del programa.
etiqueta

PROC

{NEAR|FAR}

sentencias
etiqueta

ENDP

Ensamblado condicional
Verifican una condicin determinada y si se cumple, ensambla una porcin de
cdigo. Opcionalmente puede ensamblarse otra porcin de cdigo si la
condicin no se cumple. Son los siguientes: IF, IF1, IF2, IFB, IFDEF, IFDIF,
IFE, IFIDN, IFNB, IFNDEF, ENDIF, ELSE.
{IF|IFE}

condicin

sentencias

;Se ejecutan si es cierta (IF) o falsa (IFE).

[ELSE

33

Hardware PC XT 8088-8086
Arquitectura de Computadoras
sentencias]

;Se ejecutan si es falsa (IF) o cierta (IFE).

ENDIF

La directiva ELSE y sus sentencias son opcionales. ENDIF termina el bloque y es obligatorio. Se
pueden anidar directivas condicionales.
IF1 permite el ensamblado de las sentencias slo en el primer paso, mientras que IF2 lo permite en
el segundo paso.
IFDEF nombre permite el ensamblado de las sentencias si el nombre est definido, mientras que
IFNDEF nombre lo permite si no est definido.
IFB <argumento> permite el ensamblado si el argumento en una macro es blanco (no se pas el
argumento).
IFNB <argumento> permite el ensamblado si el argumento en una macro no es blanco (se pas el
argumento).
IFIDN <argumento1>, <argumento2> permite el ensamblado si los dos parmetros pasados a la
macro son idnticos.
IFDIF <argumento1>,<argumento2> permite el ensamblado si los dos parmetros pasados a la
macro son diferentes.
Macros: Las macros asignan un nombre simblico a un bloque de sentencias fuente. Luego se puede
usar dicho nombre para representar esas sentencias. Opcionalmente se pueden definir parmetros
para representar argumentos para la macro.
Definicin de macros
nombre_macro

MACRO

[Parmetro [,parmetro...]]

[LOCAL

nombre_local[,nombre_local...]

sentencias
ENDM

Los parmetros son opcionales. Si existen, entonces tambin aparecern en algunas de las sentencias
en la definicin de la macro. Al invocar la macro mediante:
nombre_macro [argumento [,argumento..]]
se ensamblarn las sentencias indicadas en la macro teniendo en cuenta que cada lugar donde
aparezca un parmetro se reemplazar por el argumento correspondiente.
El nombre_local de la directiva LOCAL es un nombre simblico temporario que ser reemplazado
por un nico nombre simblico (de la forma ??nmero) cuando la macro se invoque.
Todas las etiquetas dentro de la macro debern estar indicadas en la directiva LOCAL para que el
ensamblador no genere un error indicando que un smbolo est definido varias veces.

34

Hardware PC XT 8088-8086
Arquitectura de Computadoras
La directiva EXITM (usada dentro de la definicin de la macro) sirve para que no se ensamblen
ms sentencias de la macro (se usa dentro de bloques condicionales).
PURGE nombre_macro [,nombre_macro...]: Borra las macros indicadas de la memoria para poder
utilizar este espacio para otros smbolos.
Definicin de bloques de repeticin
Son tres: REPT, IRP e IRPC. Como en el caso de la directiva MACRO, se puede
incluir las sentencias LOCAL y EXITM y deben terminarse con la directiva
ENDM.
REPT expresin
sentencias
ENDM
La expresin debe poder ser evaluada en el primer paso del ensamblado y el resultado deber estar
entre 0 y 65535.
Esta expresin indica la cantidad de veces que debe repetirse el bloque.
IRP parmetro, <argumento [,argumento...]>
sentencias

ENDM
El parmetro se reemplaza por el primer argumento y se ensamblan las sentencias dentro del bloque.
Luego el parmetro se reemplaza por el segundo argumento y se ensamblan las sentencias y as
sucesivamente hasta agotar los argumentos.
IRPC parmetro, cadena
sentencias
ENDM
Es similar a IRP con la diferencia que el parmetro se reemplaza por cada carcter de la cadena. Si
sta contiene comas, espacios u otros caracteres especiales deber encerrarse con parntesis
angulares (<>).
Procesador: Indican el tipo de procesador y coprocesador en el que se va a ejecutar el programa.
Los de procesador son: .8086, .186, .286, .386, .486 y .586 para instrucciones en modo real, .286P, .
386P, .486P y .586P para instrucciones privilegiadas, .8087, .287 y .387 para coprocesadores.
Deben ubicarse al principio del cdigo fuente. Habilitan las instrucciones correspondientes al
procesador y coprocesador indicado. Sin estas directivas, slo se pueden ensamblar instrucciones del
8086 y 8087.
Referencias externas al mdulo
Sirve para poder particionar un programa en varios archivos fuentes o mdulos.
Son imprescindibles si se hace un programa en alto nivel con procedimientos en
assembler. Hay tres: PUBLIC, EXTRN e INCLUDE.

35

Hardware PC XT 8088-8086
Arquitectura de Computadoras
PUBLIC nombre[, nombre...]: Estos nombres simblicos se escriben en el archivo objeto. Durante
una sesin con el linker, los smbolos en diferentes mdulos pero con los mismos nombres tendrn
la misma direccin.
EXTRN nombre:tipo [,nombre:tipo...]: Define una variable externa con el nombre y tipo (NEAR,
FAR, BYTE, WORD, DWORD o ABS (nmero constante especificado con la directiva EQU o =))
especificado. El tipo debe ser el mismo que el del tem indicado con la directiva PUBLIC en otro
mdulo.
INCLUDE nombre_de_archivo: Ensambla las sentencias indicadas en dicho archivo.
Segmentos simplificados
Permite definir los segmentos sin necesidad de utilizar las directivas de
segmentos que aparecen ms arriba.
.MODEL modelo: Debe estar ubicada antes de otra directiva de segmento. El modelo puede ser uno
de los siguientes:
1. TINY: Los datos y el cdigo juntos ocupan menos de 64 KB por lo que entran
en el mismo segmento. Se utiliza para programas .COM. Algunos
ensambladores no soportan este modelo.
2. SMALL: Los datos caben en un segmento de 64 KB y el cdigo cabe en otro
segmento de 64 KB. Por lo tanto todo el cdigo y los datos se pueden
acceder como NEAR.
3. MEDIUM: Los datos entran en un slo segmento de 64 KB, pero el cdigo
puede ser mayor de 64 KB. Por lo tanto, cdigo es FAR, mientras que los
datos se acceden como NEAR.
4. COMPACT: Todo el cdigo entra en un segmento de 64 KB, pero los datos no
(pero no pueden haber matrices de ms de 64 KB). Por lo tanto, cdigo es
NEAR, mientras que los datos se acceden como FAR.
5. LARGE: Tanto el cdigo como los datos pueden ocupar ms de 64 KB (pero
no pueden haber matrices de ms de 64 KB), por lo que ambos se acceden
como FAR.
6. HUGE: Tanto el cdigo como los datos pueden ocupar ms de 64 KB (y las
matrices tambin), por lo que ambos se acceden como FAR y los punteros
a los elementos de las matrices tambin son FAR.
.STACK [size]: Define el segmento de pila de la longitud especificada.
.CODE [name]: Define el segmento de cdigo.
.DATA: Define un segmento de datos NEAR con valores iniciales.
.DATA?: Define un segmento de datos NEAR sin valores iniciales.
.FARDATA [name]: Define un segmento de datos FAR con valores iniciales.
.FARDATA? [name]: Define un segmento de datos FAR sin valores iniciales.

36

Hardware PC XT 8088-8086
Arquitectura de Computadoras
.CONST: Sefine un segmento de datos constantes.

Los siguientes smbolos estn definidos cuando se usan las directivas anteriores:

@curseg: Tiene el nombre del segmento que se est ensamblando.

@filename: Representa el nombre del archivo fuente (sin la extensin)

@codesize: Vale 0 para los modelos SMALL y COMPACT (cdigo


NEAR), y vale 1 para los modelos MEDIUM, LARGE y HUGE (cdigo
FAR).

@datasize: Vale 0 para los modelos SMALL y MEDIUM (datos NEAR),


vale 1 para los modelos COMPACT y LARGE (datos FAR) y vale 2 para
el modelo HUGE (punteros a matrices FAR).

@code: Nombre del segmento definido con la directiva .CODE.

@data: Nombre del segmento definido con la directivas .DATA,


.DATA?, .CONST y .STACK (los cuatro estn en el mismo segmento).

@fardata: Nombre del segmento definido con la directiva .FARDATA.

@fardata?: Nombre del segmento definido con la directiva


.FARDATA?

11. DEBUGER Y SIMULADORES DEL 8088:


Un Depurador (en ingls, debugger), es un programa que permite
depurar o limpiar los errores de otro programa informtico.
Al Iniciarse la depuracin, el depurador lanza el programa a depurar.
ste se ejecuta normalmente hasta que el depurador detiene su
ejecucin, permitiendo al usuario examinar la situacin.
El depurador permite detener el programa en:
Un punto determinado mediante un punto de ruptura.
Un punto determinado bajo ciertas condiciones mediante un
punto de ruptura condicional.
Un momento determinado cuando se cumplan ciertas
condiciones.
Un momento determinado a peticin del usuario.
Durante esa interrupcin, el usuario puede:
Examinar y modificar la memoria y las variables del programa.
Examinar el contenido de los registros del procesador.
Examinar la pila de llamadas que han desembocado en la
situacin actual.

37

Hardware PC XT 8088-8086
Arquitectura de Computadoras

Cambiar el punto de ejecucin, de manera que el programa


contine su ejecucin en un punto diferente al punto en el que
fue detenido.
Ejecutar instruccin a instruccin.
Ejecutar partes determinadas del cdigo, como el interior de una
funcin, o el resto de cdigo antes de salir de una funcin.

El depurador depende de la arquitectura y sistema en el que se ejecute,


por lo que sus funcionalidades cambian de un sistema a otro. Aqu se
han mostrado las ms comunes.
En cuanto a la Depuracin: para poder aprovechar todas las
posibilidades de depuracin es necesario que, al compilar el programa a
depurar, se indique al compilador que debe incluir instrucciones e
informacin extra para la depuracin del cdigo. Dicha informacin extra
consiste bsicamente en la correspondencia entre las instrucciones del
cdigo ejecutable y las instrucciones del cdigo fuente que las originan,
as como informacin sobre nombres de variables y funciones.
An si no se incluye esta informacin de depuracin, sigue siendo
posible monitorizar la ejecucin del programa. Sin embargo, resultar
ms difcil y compleja debido a esa falta de informacin del contexto en
el que se ejecuta el programa.
Un depurador tambin puede usarse para realizar ingeniera inversa o
evitar protecciones de copia. Mediante el uso del depurador se puede
conocer el funcionamiento interno del programa examinado, ayudando
al proceso de ingeniera inversa o permitiendo desarrollar tcnicas para
evadir las restricciones impuestas por el programa.
Un programa que est siendo depurado puede presentar un
comportamiento diferente a si se ejecuta en solitario debido a que el
depurador cambia ligeramente los tiempos internos del programa. Estos
cambios en los tiempos de ejecucin afectan especialmente a sistemas
complejos multihebra o sistemas distribuidos.
Ejemplos de depuradores

GNU Debugger (gdb)

SoftICE

OllyDbg

Trw2000

Ida Pro

12. BIBLIOGRAFA:
http://uciencia.uma.es/Coleccion-cientificotecnica/Informatica/Galeria/Partes-de-un-PC-IBM-XT-5160

38

Hardware PC XT 8088-8086
Arquitectura de Computadoras
http://members.tripod.com/wingsze_liu/trabajos_A8.htm
http://www.informatica-hoy.com.ar/hardware-pc-desktop/Generacionesde-la-computadora.php
http://www.alu.ua.es/l/lli/articuloIBM/
http://www.taringa.net/posts/apuntes-y-monografias/3391636/Evolucionde-los-discos-duros.html
http://www.unicrom.com/cmp_historiaPC1.asp
http://es.slideshare.net/Kathe804/placa-base-xt

39

Vous aimerez peut-être aussi