Sie sind auf Seite 1von 29

Contenido

1.- SISTEMAS QUE COMPONEN LA COMPUTADORA XT ............................................................................... 3


2.- CARACTERISTICAS DEL PROCESADOR 8088/8086 ................................................................................... 3
3.-FUNCIONAMIENTO EN GENERAL.............................................................................................................. 4
4.- SISTEMAS DESCRITOS POR BLOQUES Y POR CIRCUITOS ......................................................................... 5
5.- ESQUEMATICO DEL SISTEMA COMPLETO DE APLICACIN ..................................................................... 8
6.- MUESTRA DE UNA MAINBOARD XT CON IDENTIFICACION DE DISPOSITIVOS ...................................... 10
7.- REGISTROS DEL 8088 ............................................................................................................................. 12
7.1- Registros de Propsito General ....................................................................................................... 12
7.1.1Registro AX .................................................................................................................................. 12
7.1.2 Registro BX: ................................................................................................................................ 12
7.1.3 Registro CX ................................................................................................................................ 12
7.1.4 Registro DX ................................................................................................................................. 12
7.2 Registros ndice ................................................................................................................................. 13
7.1.1 Registro SI .................................................................................................................................. 13
7.1.2 Registro DI: ................................................................................................................................ 13
7.3 Registros de punteros ...................................................................................................................... 13
7.3.1 Registro SP: ................................................................................................................................ 13
7.3.2 Registro BP ................................................................................................................................. 13
7.4 Registros de Estado ........................................................................................................................... 13
7.5 Registros de Segmento ..................................................................................................................... 14
7.5.1 Registro CS ................................................................................................................................. 14
7.5.2 Registro DS ................................................................................................................................. 14
7.5.3 Registro SS.................................................................................................................................. 14
7.5.4 Registro ES................................................................................................................................. 15
7.6 Registro Puntero de Instrucciones .................................................................................................... 15
8.- MODOS DE DIRECCIONAMIENTO .......................................................................................................... 15
9.- SET DE INSTRUCCUIONES ...................................................................................................................... 17
9.1 Instrucciones de Transferencia de Datos. ......................................................................................... 17
9.2 Control de Bucles (instrucciones simples) ........................................................................................ 18
9.3 Instrucciones de Prueba, Comparacin y Saltos. .............................................................................. 18
9.4 Instrucciones de Llamado y Retorno de Subrutinas. ........................................................................ 19
9.5 Instrucciones Aritmticas.................................................................................................................. 19
9.6 Instrucciones Lgicas. ....................................................................................................................... 21
9.7 Instrucciones de Desplazamiento, Rotacin y Adeudos. .................................................................. 21
9.8 Instrucciones de Pila. ........................................................................................................................ 21
9.10 Instrucciones de Control del microprocesador............................................................................... 22
9.11 Instrucciones de Interrupcin. ........................................................................................................ 22
10.- LENGUAJE DE MAQUINA, MACROENSANBLADOR DEL 8088 .............................................................. 24
11.- DEBUGER Y SIMULADORES DEL 8088 .................................................................................................. 26
BIBLIOGRAFIA.............................................................................................................................................. 29
REFERENCIAS............................................................................................................................................... 29
HARDWARE COMPUTADORA PERSONAL PC XT 8088 8086

1.- SISTEMAS QUE COMPONEN LA COMPUTADORA XT


El XT son las siglas de eXtended Technology (Tecnologa eXtendida).

El estndar XT traa de serie 128KB de memoria RAM


Una disquetera 5 1/4" de doble cara de doble densidad de 360KB de tamao
completo
Un disco duro Seagate de 10MB (ST-412)
Un adaptador asncrono (tarjeta serial)
Una fuente de alimentacin de 130W q suministraba energa elctrica a todos
los componentes.
La placa base tena ocho ranuras de expansin ISA de 8 bits, y
un microprocesador Intel 8088 corriendo a 4,77 MHz (con un zcalo
para coprocesador matemtico Intel 8087).

Las ocho ranuras de expansin eran un aumento de las cinco del IBM PC, aunque tres
de ellas eran utilizadas por el adaptador de la unidad de disquetes, el adaptador del
disco duro, y la tarjeta asncrona. Pronto se actualiz la especificacin bsica para
estandarizarla a 256KB de memoria RAM.

Haba dos versiones de la placa base del XT. La original poda admitir hasta 256kB en
la misma placa (en cuatro bloques de chips de 64kB), con un mximo de 640kB
alcanzados usando tarjetas de expansin. La segunda revisin de la placa, introducida
en 1986, poda admitir los 640kB enteros en la placa base (en dos bloques de chips de
256kb y dos bloques de 64kB). Las placas ms recientes podan ser adaptadas para
las "ltimas" especificaciones despus de un par de modificaciones menores. La
segunda revisin de la placa tena adems un IBM BIOS revisado, que inclua soporte
para el teclado expandido y reduca el tiempo de arranque a la mitad.

Los ltimos XTs venan con unidades de disquetes de media altura instaladas de
fbrica, as como con la opcin para un disco duro de 20MB y para el teclado
"expandido". Sin embargo, en 1985, algunas unidades fueron manufacturadas con solo
dos disqueteras de tamao completo y sin disco duro.

2.- CARACTERISTICAS DEL PROCESADOR 8088/8086


Bus de datos de 8 bits
Arquitectura interna de 16 bits
Direccionamiento de 1Mb
Clock de 5 MHz
Modo mximo y modo mnimo
Bus de direcciones y datos multiplexados

Poseen una arquitectura interna de 16 bits y pueden trabajar con operandos de 8 y 16


bits; una capacidad de direccionamiento de 20 bits (hasta 1 Mb) y comparten el mismo
juego de instrucciones.

El diseo de la familia del 8086 se basa en la compatibilidad y la creacin de sistemas


informticos integrados, por lo que disponen de diversos coprocesadores como el 8089
de E/S y el 8087, coprocesador matemtico de punto flotante. De acuerdo a esta
filosofa y para permitir la compatibilidad con los anteriores sistemas de 8 bits, el 8088
se dise con un bus de datos de 8 bits, lo cual le hace ms lento que el 8086, pues
ste es capaz de cargar una palabra ubicada en una direccin par en un solo ciclo de
memoria mientras el 8088 debe realizar dos ciclos leyendo cada vez un byte.

Disponen de 92 tipos de instrucciones, que pueden ejecutar con hasta 7 modos de


direccionamiento. Tienen una capacidad de direccionamiento en puertos de entrada y
salida de hasta 64K (65536 puertos), por lo que las mquinas construidas entorno a
estos microprocesadores no suelen emplear la entrada/salida por mapa de memoria.

Las frecuencias internas de reloj tpicas son 4.77 MHz en la versin 8086; 8 MHz en la
versin 8086-2 y 10 MHz en la 8086-1. Por lo que un PC estndar a 4,77 MHz puede
ejecutar de 20.000 a unos 0,5 millones de instrucciones por segundo, segn la
complejidad de las mismas (un 486 a 50 MHz, incluso sin memoria cach externa es
capaz de ejecutar entre 1,8 y 30 millones de estas instrucciones por segundo).

3.-FUNCIONAMIENTO EN GENERAL
El 8086 y el 8088 tienen internamente dos componentes, la Unidad de Interfaz del Bus
y la Unidad de ejecucin (Bus Interface Unit (BIU) y Execution Unit (EU)).

La Unidad de Ejecucin procesa las instrucciones del CPU. Est conformada por los
registros generales, los registros ndices y apuntadores, los flags, la unidad aritmtica
lgica, y la lgica de control que maneja todo el proceso para ejecutar las instrucciones.

La Unidad de Interfaz del Bus maneja la lectura y escritura desde y hacia la


memoria y los puertos de entrada/salida. Est conformada por los registros de
segmento, una cola de 4 bytes para instrucciones en el 8088 y de 6 en el 8086, y
lgica para controlar los buses externos del microprocesador.
La Unidad de Ejecucin y la Unidad de Interfaz del Bus estn interconectadas
mediante un bus interno.
Al ser inicializado el microprocesador, lo primero que hace es generar la direccin de
memoria 0000h, para el ROM BIOS. Luego activa el pin ALE, para que el los bits bajos
de la direccin (AD0-AD7) queden almacenados en el circuito de Bscula Cerrojo.
Luego de ello, activa el pin RD, con lo que recibe el dato correspondiente al cdigo de
operacin de la primera instruccin almacenada el ROM BIOS a travs de sus lneas
de datos (con ello se explica la necesidad del circuito bscula cerrojo). Una vez recibido
este primer dato, el microprocesador busca en su tabla de cdigos, a qu operacin se
refiere y segn ello, puede generar una nueva direccin al siguiente dato para
completar su operacin. Este ciclo se repite siempre, la variacin puede estar en que el
perifrico direccionado, puede ser ROM, RAM o un perifrico.

En caso que el microprocesador desee escribir en la memoria, se genera primero la


direccin, como en el caso anterior, slo que esta vez se ponen los datos en el bus de
datos y luego se activa el pin WR.

4.- SISTEMAS DESCRITOS POR BLOQUES Y POR CIRCUITOS


Diagrama de bloque de los microprocesadores Intel 8086 y 8088.

1 Bloque de registros de propsito general


2 Bloque de registros de segmento y registro IP
3 Sumador de direcciones
4 Bus de direcciones interno
5 Cola de instrucciones (4 bytes para el 8088 y 6 bytes para el 8086)
6 Unidad de control (muy simplificada)
7 Interfaz del bus
8 Bus de datos interno
9 Unidad aritmtico lgica (ALU)
10, 11, 12 Bus de direcciones, datos y control externos
+--\_/--+
GND 1| |40 Vcc (+5V)
<-- A14 2| |39 A15 -->
<-- A13 3| |38 A16 --> S3 -->
<-- A12 4| |37 A17 --> S4 -->
<-- A11 5| |36 A18 --> S5 -->
<-- A10 6| |35 A19 --> S6 -->
<-- A9 7| |34 !SSO....HIGH, -->
<-- A8 8| |33 MN/!MX <--
<-> D7 <-- A7 9| Intel |32 !RD -->
<-> D6 <-- A6 10| 8088 |31 HOLD....!RQ/!GTO <->
<-> D5 <-- A5 11| |30 HLDA</spanreen">!RQ/!GT1 <->
<-> D4 <-- A4 12| |29 !WR.....!LOOK -->
<-> D3 <-- A3 13| |28 M/!IO...!S2 -->
<-> D2 <-- A2 14| |27 DT/!R...!S1 -->
<-> D1 <-- A1 15| |26 !DEN....!S0 -->
<-> D0 <-- A0 16| |25 ALE.....QS0 -->
--> NMI 17| |24 !INTA...QS1 -->
-->INTR 18| |23 !TEST <--
--> CLK 19| |22 READY <--
GND 20| |21 RESET <--
+-------+

Los 40 pines del 8088 en modo mnimo tienen las siguientes funciones:

1. GND (Masa)
2. A14 (Bus de direcciones)
3. A13 (Bus de direcciones)
4. A12 (Bus de direcciones)
5. A11 (Bus de direcciones)
6. A10 (Bus de direcciones)
7. A9 (Bus de direcciones)
8. A8 (Bus de direcciones)
9. AD7 (Bus de direcciones y datos)
10. AD6 (Bus de direcciones y datos)
11. AD5 (Bus de direcciones y datos)
12. AD4 (Bus de direcciones y datos)
13. AD3 (Bus de direcciones y datos)
14. AD2 (Bus de direcciones y datos)
15. AD1 (Bus de direcciones y datos)
16. AD0 (Bus de direcciones y datos)
17. NMI (Entrada de interrupcin no enmascarable)
18. INTR (Entrada de interrupcin enmascarable)
19. CLK (Entrada de reloj generada por el 8284)
20. GND (Masa)
21. RESET (Para inicializar el 8088)
22. READY (Para sincronizar perifricos y memorias lentas)
23. /TEST
24. /INTA (El 8088 indica que reconoci la interrupcin)
25. ALE (Cuando est uno indica que salen direcciones por AD, en caso contrario,
es el bus de datos)
26. /DEN (Data enable: cuando vale cero debe habilitar los transceptores 8286 y
8287 (se conecta al pin de "output enable"), esto sirve para que no se mezclen
los datos y las direcciones).
27. DT/R (Data transmit/receive: se conecta al pin de direccin de los chips recin
indicados).
28. IO/M (Si vale 1: operaciones con ports, si vale 0: operaciones con la memoria)
29. /WR (Cuando vale cero hay una escritura)
30. HLDA (Hold Acknowledge: el 8088 reconoce el HOLD)
31. HOLD (Indica que otro integrado quiere aduearse del control de los buses,
generalmente se usa para DMA o acceso directo a memoria).
32. /RD (Cuando vale cero hay una lectura)
33. MN/MX (Cuando esta entrada est en estado alto, el 8088 est en modo
mnimo, en caso contrario est en modo mximo)
34. /SSO (Junto con IO/M y DT/R esta salida sirve para determinar estados del
8088)
35. A19/S6 (Bus de direcciones/bit de estado)
36. A18/S5 (Bus de direcciones/bit de estado)
37. A17/S4 (Bus de direcciones/bit de estado)
38. A16/S3 (Bus de direcciones/bit de estado)
39. A15 (Bus de direcciones)
40. Vcc (+5V)

5.- ESQUEMATICO DEL SISTEMA COMPLETO DE APLICACIN


De forma esquemtica podemos suponer que un procesador se compone de cinco
elementos:

Memoria
Unidad Artimtico-Lgica ALU ("Arithmetic and Logic Unit" )
Unidad de Control CU ("Control Unit" )
Bus interno
Conexiones con el exterior
6.- MUESTRA DE UNA MAINBOARD XT CON IDENTIFICACION DE
DISPOSITIVOS
PROCESADOR 8088

VELOCIDAD 12MHz

Chip Set Unidentified

Max. Onboard 640KB


DRAM

Cache None

BIOS Unidentified

DIMENSIONES 220mm x 220mm

I/O Opciones None


7.- REGISTROS DEL 8088
Los registros del i8086 e i8088 se basaron en el diseo del Intel 8080. El conjunto
de registros tambin es similar al del i8080, pero ampliados a 16 bits. Tanto el i8086
como el i8088 tienen cuatro registros de propsito general de 16 bits, que tambin
pueden ser accedidos como ocho registros de 8 bits, y tienen cuatro registros
ndices de 16 bits. Los registros de datos se usan a veces de forma implcita por las
instrucciones, haciendo ms difcil la organizacin de los registros para emplearlos con
valores temporales.

Los registros del procesador, se usan para contener los datos con que se est
trabajando ya que el acceso a los registros es mucho ms rpido que los accesos a
memoria. Se pueden realizar operaciones aritmticas y lgicas, comparaciones, entre
otras. Se pueden hacer estas operaciones con todos los registros excepto los de
segmento, el IP, y los flags.

7.1- Registros de Propsito General


Los registros de propsito general son el AX, BX, CX, y DX, de 16 bits. Cada uno de
ellos se divide en dos registros de 8 bits, llamados AH y AL, BH y BL, CH y CL, y, DH y
DL, H significando Hight (alto) y L significando Low (bajo), indicando la parte alta o la
parte baja del registro correspondiente de 16 bits (ver esquema). Un programa poda
usar tanto los registros de 16 bits como los registros de 8 bits. Aparte del uso general
de los registros para hacer clculos aritmticos y lgicos, existen instrucciones que
usan estos registros con un uso particular especializado, como se indica a
continuacin:

7.1.1Registro AX: El registro AX es el registro acumulador, es utilizado para operaciones


que implican entrada/salida, y multiplicacin y divisin (estas dos ltimas en conjunto
con el registro DX)

7.1.2 Registro BX: El registro BX es el registro base, y es el nico registro de propsito


general que puede ser un ndice para direccionamiento indexado

7.1.3 Registro CX: El registro CX es conocido como el registro contador. Puede contener
un valor para controlar el nmero de veces que un ciclo se repite o un valor para
corrimiento de bits

7.1.4 Registro DX: El registro DX es el registro de datos. En algunas operaciones se


indica mediante este registro el nmero de puerto de entrada/salida, y en las
operaciones de multiplicacin y divisin de 16 bits se utiliza junto con el acumulador AX
7.2 Registros ndice
Los registros SI y DI estn disponibles para direccionamiento indexado y para
operaciones de cadenas de caracteres.

7.1.1 Registro SI: El registro ndice fuente de 16 bits es requerido por algunas
operaciones con cadenas de caracteres. El SI est asociado con el segmento DS.

7.1.2 Registro DI: El registro ndice destino tambin es requerido por algunas
operaciones con cadenas de caracteres. El DI est asociado con el segmento ES.

7.3 Registros de punteros


Los registros SP (apuntador de pila) y BP (apuntador base) estn asociados con el
registro SS y permiten al sistema acceder a datos en el segmento de la pila.

7.3.1 Registro SP: El apuntador de pila de 16 bits est asociado con el segmento SS y
proporciona un valor de desplazamiento que se refiere a la palabra actual que est
siendo procesada en la pila. El sistema maneja de manera automtica este registro,
aunque el programa puede hacer ciertas manipulaciones con l.

7.3.2 Registro BP: El apuntador base de 16 bits facilita la referencia de parmetros


dentro de la pila.

7.4 Registros de Estado


Es un registro de 16 bits, de los cuales nueve sirven para indicar el estado actual de la
mquina y el resultado del procesamiento. Muchas instrucciones aritmticas y de
comparacin cambian el estado de las banderas y apoyndose en ellas se pueden
tomar decisiones para determinar la accin subsecuente.

La tabla contiene 16 posiciones (de 0 a 15), que son los 16 bits del registro de
banderas, numeradas de derecha a izquierda. La posicin 0 la encontraremos a la
derecha y la posicin 15 a la izquierda.

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

Los bits de las banderas son las siguientes:

OF (overflow, desbordamiento): Indica desbordamiento del bit de mayor orden


despus de una operacin aritmtica de nmeros con signo (1=existe overflow; 0=no
existe overflow). Para operaciones sin signo, no se toma en cuenta esta bandera.

DF (direccin): Controla la seleccin de incremento o decremento de los registros SI y


DI en las operaciones con cadenas de caracteres (1=decremento automtico;
0=incremento). La bandera DF se controla con las instrucciones STD y CLD.
IF (interrupcin): Indica que una interrupcin sea procesada o ignorada (1=habilita las
interrupciones; 0=deshabilita las interrupciones). El estado de la bandera IF se controla
con las instrucciones STI y CLI.

TF (trampa): Permite la operacin del procesador en modo de depuracin (paso a


paso)

SF (signo): Contiene el signo resultante de una operacin aritmtica (0=positivo;


1=negativo).

ZF (cero): Indica el resultado de una operacin aritmtica o de comparacin


(0=resultado diferente de cero; 1=resultado igual a cero).

AF (acarreo auxiliar): Contiene el acarreo del bit 3. Esta bandera se prueba con las
instrucciones DAA y DAS para ajustar el valor de AL despus de una suma o
resta BCD.

PF (paridad): Indica si el nmero de bits 1, del byte menos significativos de una


operacin, es par (0=nmero de bits 1 es impar; 1=nmero de bits 1 es par).

CF (acarreo): Contiene el acarreo del bit de mayor orden despus de una operacin
aritmtica; tambin almacena el contenido del ltimo bit en una operacin de
desplazamiento o de rotacin.

7.5 Registros de Segmento


Definen reas de 64 Kb dentro del espacio de direcciones de 1 Mb del 8086. Estas
reas pueden solaparse total o parcialmente. No es posible acceder a una posicin de
memoria no definida por algn segmento: si es preciso, habr de moverse alguno.

7.5.1 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. Para propsitos de programacin
normal, no se necesita referenciar el registro CS.

7.5.2 Registro DS: La direccin inicial de un segmento de datos de programa es


almacenada en el registro DS. Esta direccin, ms un valor de desplazamiento en una
instruccin, genera una referencia a la localidad de un byte especfico en el segmento
de datos.

7.5.3 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 del segmento de pila de un programa en el registro SS. Esta 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. Para propsitos de
programacin normal, no se necesita referenciar el registro SS.

7.5.4 Registro ES: Algunas operaciones con cadenas de caracteres utilizan el registro
extra de segmento para manejar el direccionamiento de memoria. El registro ES est
asociado con el registro DI (ndice). Un programa que requiere el uso del registro ES
puede inicializarlo con una direccin de segmento apropiada.

7.6 Registro Puntero de Instrucciones


El registro IP de 16 bits contiene el desplazamiento de direccin de la siguiente
instruccin que se ejecuta. El IP est asociado con el registro CS en el sentido de que
el IP indica la instruccin actual dentro del segmento de cdigo que se est ejecutando
actualmente en la memoria.

8.- MODOS DE DIRECCIONAMIENTO


En el 8086/8088, los parmetros (operadores) de una instruccin pueden ser de tres
tipos:

1. registros internos de la CPU,

2. valores inmediatos,

3. direcciones de memoria, de las que hay cinco tipos diferentes de representacin.

En total son siete las clases de parmetros que se pueden utilizar y conjuntamente
forman los llamados siete modos de direccionamiento.
1. Registros internos: el origen y destino de la operacin son los registros internos de la
CPU.

2. Valores inmediatos: en este modo, el origen de los datos (y slo el origen) es un


valor numrico.

3. Valores de memoria. Hay cinco modos de acceso a memoria:

3.1 Modo directo: Se indica la direccin de memoria a la que se quiere acceder.

3.2 Modo indirecto mediante registro: Es similar al modo anterior slo que el
valor del desplazamiento del operando no se indica directamente sino que se encuentra
en un registro de la CPU.

3.3 Modo relativo a base: Es unir los dos modos anteriores. Consiste en indicar
la posicin del operando utilizando como desplazamiento el valor de un registro
sumado con una cantidad constante.

3.4 Modo directo indexado: Idntico al anterior pero usando como registro de
desplazamiento el registro SI o el DI.

3.5 Modo indexado a base: Este es el modo ms complejo, y se podra decir que
es el resultado de unir los cuatro anteriores. En este modo, el desplazamiento del
operando se compone a partir de un registro que hace de base, un registro ndice y un
valor inmediato que se les suma.

Los procesadores 8086 y 8088 tenan los siguientes modos de direccionamiento:

Implcito. El dato est implcito en la propia instruciin. Ej. STC, STD y STI, (Set
Carry, Set Direcction y Set Interrupts) encienden el flag correspondiente indicado
en la propia instruccin. CBW (Convert Byte to Word) extiende el registro AL a
AX. Ni el AL ni el AX son especificados, CBW implcitamente trabaja sobre ellos.
Inmediato. El dato a operar est inmediatamente despus del opcode de la
instruccin. Ej, MOV AX, 5
Registro. El dato est en un segundo registro. Ej. MOV AX, BX. Aqu, el dato
est en el registro BX
Directo. La direccin del dato est en el campo de la direccin del opcode.
Ej. MOV AX, [100h]. Aqu se mueve (copia) el contenido de las direcciones 100h
y 101h al registro AX. En este caso se mueven dos bytes puesto que AX es de
16 bits. Si fuera MOV BL, [100h] se movera solo un byte pues BL es un registro
de 8 bits
Indirecto. El dato es especificado mediante una combinacin de registros ndice
y base, y puede haber un desplazamiento
o Base. Un registro base (BX o BP) tienen la direccin de donde se tomar
el dato. Ej. MOV AX, [BX]
o ndice. Un registro ndice (SI o SI) tienen la direccin de donde se tomar
el dato. Ej. MOV AX, [SI]
o Base + Desplazamiento. El dato se tomar de la direccin apuntada por
la suma de un registro base ms un desplazamiento. Ej. MOV AX, [BP +
7]
o ndice + Desplazamiento. El dato se tomar de la direccin apuntada por
la suma de un registro ndice ms un desplazamiento. Ej. MOV AX, [DI +
7]
o Base + ndice. El dato se tomar de la direccin apuntada por la suma de
un registro base ms un registro ndice. Ej. MOV AX, [BX + SI]
o Base + ndice + Desplazamiento. El dato se tomar de la direccin
apuntada por la suma de un registro base, ms un registro ndice, ms un
desplazamiento. Ej. MOV AX, [BX + SI + 9]

9.- SET DE INSTRUCCUIONES


Se pueden clasificar en los siguientes grupos:

9.1 Instrucciones de Transferencia de Datos.


Estas instrucciones mueven datos de una parte a otra del sistema; desde y hacia la
memoria principal, de y a los registros de datos, puertos de E/S y registros de
segmentacin.

Las instrucciones de transferencia de datos son las siguientes:

MOV transfiere

XCHG intercambia

IN entrada

OUT salida

XLAT traduce usando una tabla

LEA carga la direccin efectiva

LDS carga el segmento de datos

LES carga el segmento extra

LAHF carga los indicadores en AH


SAHF guarda AH en los indicadores

PUSH FUENTE (sp) fuente

POP DESTINO destino (sp)

9.2 Control de Bucles (instrucciones simples)


Estas posibilitan el grupo de control ms elemental de nuestros programas. Un bucle es
un bloque de cdigo que se ejecuta varias veces. Hay4 tipos de bucles bsicos:

Bucles sin fin


Bucles por conteo
Bucles hasta
Bucles mientras

Las instrucciones de control de bucles son las siguientes:

INC incrementar

DEC decrementar

LOOP realizar un bucle

LOOPZ,LOOPE realizar un bucle si es cero

LOOPNZ,LOOPNE realizar un bucle si no es cero

JCXZ salta si CX es cero

9.3 Instrucciones de Prueba, Comparacin y Saltos.


Este grupo es una continuacin del anterior, incluye las siguientes instrucciones:

TEST verifica

CMP compara

JMP salta

JE, JZ salta si es igual a cero

JNE, JNZ salta si no igual a cero

JS salta si signo negativo

JNS salta si signo no negativo

JP, JPE salta si paridad par


JNP, JOP salta si paridad impar

JO salta si hay capacidad excedida

JNO salta si no hay capacidad excedida

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

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

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

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

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

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

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

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

9.4 Instrucciones de Llamado y Retorno de Subrutinas.


Para que los programas resulten eficientes y legibles tanto en lenguaje ensamblador
como en lenguaje de alto nivel, resultan indispensables las subrutinas:

CALL llamada a subrutina

RET retorno al programa o subrutina que llam

9.5 Instrucciones Aritmticas.


Estas instrucciones son las que realiza directamente el 8086/8088

a. Grupo de adicin:

ADD suma

ADC suma con acarreo

AAA ajuste ASCII para la suma

DAA ajuste decimal para la suma

b. Grupo de sustraccin:

SUB resta
SBB resta con acarreo negativo

AAS ajuste ASCII para la resta

DAS ajuste decimal para la resta

c. Grupo de multiplicacin:

MUL multiplicacin

IMUL multiplicacin entera

AAM ajuste ASCII para la multiplicacin

d. Grupo de divisin:

DIV divisin

IDIV divisin entera

AAD ajuste ASCII para la divisin

e. Conversiones:

CBW pasar octeto a palabra

CWD pasar palabra a doble palabra

NEG negacin

f. Tratamiento de cadenas:

Permiten el movimiento, comparacin o bsqueda rpida en bloques de datos:

MOVC transferir carcter de una cadena

MOVW transferir palabra de una cadena

CMPC comparar carcter de una cadena

CMPW comparar palabra de una cadena

SCAC buscar carcter de una cadena

SCAW buscar palabra de una cadena

LODC cargar carcter de una cadena

LODW cargar palabra de una cadena


STOC guardar carcter de una cadena

STOW guardar palabra de una cadena

REP repetir

CLD poner a 0 el indicador de direccin

STD poner a 1 el indicador de direccin

9.6 Instrucciones Lgicas.


Son operaciones bit a bit que trabajan sobre octetos o palabras completas:

NOT negacin

AND producto lgico

OR suma lgica

XOR suma lgica exclusiva

9.7 Instrucciones de Desplazamiento, Rotacin y Adeudos.


Bsicamente permiten multiplicar y dividir por potencias de 2

SHL, SAL desplazar a la izquierda (desplazamiento aritmtico)

SHR desplazar a la derecha

SAR desplazamiento aritmtico a la derecha

ROL rotacin a la izquierda

ROR rotacin a la derecha

RCL rotacin con acarreo a la izquierda

RCR rotacin con acarreo a la derecha

CLC borrar acarreo

STC poner acarreo a 1

9.8 Instrucciones de Pila.


Una de las funciones de la pila del sistema es la de salvaguardar (conservar) datos (la
otra es la de salvaguardar las direcciones de retorno de las llamadas a subrutinas):

PUSH introducir
POP extraer

PUSHF introducir indicadores

POPF extraer indicadores

9.10 Instrucciones de Control del microprocesador.


Hay varias instrucciones para el control de la CPU, ya sea a ella sola, o en conjuncin
con otros procesadores:

NOP no operacin

HLT parada

WAIT espera

LOCK bloquea

ESC escape

9.11 Instrucciones de Interrupcin.


STI poner a 1 el indicador de interrupcin

CLI borrar el indicador de interrupcin

INT interrupcin

INTO interrupcin por capacidad excedida (desbordamiento)

IRET retorno de interrupcin

Las instrucciones de transferencia condicional del control del programa se pueden


clasificar en 3 grupos:

1. Instrucciones usadas para comparar dos enteros sin signo:

a. JA o JNBE. Salta si est arriba o salta si no est abajo o si no es igual (jump


if above o jump if not below or equal) El salto se efecta si la bandera ce CF = 0 o si la
bandera de ZF = 0

b. JAE o JNB. Salta si est arriba o es igual o salta si no est abajo (jump if above or
equal o jump if not below) El salto se efecta si CF = 0.

c. JB o JNAE. Salta si est abajo o salta si no est arriba o si no es igual (jump if below
or equal o jump if not above or equal) El salto se efecta si CF=1.
d. JBE o JNA. Salta si est abajo o si es igual o salta si no est arriba (jump if below or
equa o jump if not above) El salto se efecta si CF = 1.

e. JE o JZ. Salta si es igual o salta si es cero (jump equal o jump if zero) El salto se
efecta si ZF = 1 (tambin se aplica a comparaciones de enteros con signo)

f. JNE o JNZ. Salta si no es igual o salta si no es cero (jump if not equal o jump if not
zero) El salto se efecta si ZF = 0 (tambin se aplica a comparaciones de enteros con
signo)

2. Instrucciones usadas para comparar dos enteros con signo:

a. JG o JNLE. Salta si es ms grande o salta si no es menor o igual (jump if


greater o jump if not less or equal) El salto se efecta si ZF = 0 oOF = SF.

b. JGE o JNL. Salta si es ms grande o igual o salta si no es menor que (jump if


greater or equal o jump if not less) El salto se efecta si SF = OF.

c. JL o JNGE. Salta si es menor que o salta si no es mayor o igual (jump if less o jump
if not greater or equal) El salto se efecta si SF = OF.

d. JLE o JNG. Salta si es menor o igual o salta si no es ms grande (jump if less or


equal o jump if not greater) El salto se efecta si ZF = 1 o SF = OF.

3. Instrucciones usadas segn el estado de banderas:

a. JC Salta si hay acarreo (jump if carry) El salto se efecta si CF = 1.

b. JNC Salta si no hay acarreo (jump if not carry) El salto se efecta si CF = 0.

c. JNO Salta si no hay desbordamiento (jump if not overflow) El salto se efecta


si OF = 0.

d. JNP o JPO Salta si no hay paridad o salta si la paridad en non. El salto se efecta
si PF= 0.

e. JNS Salta si el signo est apagado (jump if not sign) El salto se efecta si SF = 0.

f. JO Salta si hay desbordamiento El salto se efecta si OF= 1.

g. JP o JPE Salta si hay paridad o salta si la paridad es par (jump if parity o jump if
parity even) El salto se efecta si PF = 1.

h. JS Salta si el signo est prendido El salto se efecta si SF = 1.


10.- LENGUAJE DE MAQUINA, MACROENSANBLADOR DEL 8088
El lenguaje de mquina est compuesto por una serie de instrucciones, que son las
nicas que pueden ser reconocidas y ejecutadas por el microprocesador. Este
lenguaje es un conjunto de nmeros que representan las operaciones que realiza el
microprocesador a travs de su circuitera interna. Estas instrucciones, por decirlo as,
estn grabadas o "alambradas" en el hardware y no pueden ser cambiadas. El nivel
ms bajo al que podemos aspirar a llegar en el control de un microprocesador es
precisamente el del lenguaje de mquina.

Ahora bien, siendo el lenguaje de mquina un conjunto de nmeros, cmo es capaz


el microprocesador de saber cundo un nmero representa una instruccin y cundo
un dato? El secreto de esto reside en la direccin de inicio de un programa y en
el estado del microprocesador. La direccin de inicio nos indica en qu localidad de
memoria comienza un programa, y en consecuencia que datos deberemos considerar
como instrucciones. El estado del microprocesador nos permite saber cundo ste
espera una instruccin y cundo ste espera un dato.

Obviamente, el lenguaje de mquina de un microprocesador no puede ser ejecutado


por otro microprocesador de arquitectura distinta, a menos que haya cierto tipo de
compatibilidad prevista. Por ejemplo, un 80486 es capaz de ejecutar lenguaje de
mquina propio y soporta el cdigo generado para microprocesadores anteriores de la
misma serie (desde un 8086 hasta un 80386). Por otra parte, un PowerPC es capaz de
ejecutar instrucciones de los microprocesadores Motorola 68xxx y de los Intel
80xx/80x86. En ambos casos, el diseo de los microprocesadores se hizo tratando de
mantener cierto nivel de compatibilidad con los desarrollados anteriormente. En el
segundo caso, este nivel de compatibilidad se extendi a los de otra marca. Sin
embargo, un 8088 no puede ejecutar cdigo de un 80186 o superiores, ya que los
procesadores ms avanzados poseen juegos de instrucciones y registros nuevos no
contenidos por un 8088. Un caso similar es la serie 68xxx, pero de ninguna manera
podemos esperar que un Intel ejecute cdigo de un Motorola y viceversa. Y esto no
tiene nada que ver con la compaa, ya que Intel desarrolla otros tipos de
microprocesadores como el 80860 y el iWARP, los cuales no pueden compartir cdigo
ni entre ellos ni entre los 80xx/80xxx.

Ahora bien, mientras que con el lenguaje de mquina, nosotros obtenemos un control
total del microprocesador, la programacin en este lenguaje resulta muy difcil y fcil
para cometer errores. No tanto por el hecho de que las instrucciones son slo nmeros,
sino porque se debe calcular y trabajar con las direcciones de memoria de los datos,
los saltos y las direcciones de llamadas a subrutinas, adems de que para poder hacer
ejecutable un programa, se deben enlazar las rutinas de run-time y servicios del
sistema operativo. Este proceso es al que se le denomina ensamblado de cdigo. Para
facilitar la elaboracin de programas a este nivel, se desarrollaron los Ensambladores y
el Lenguaje Ensamblador.

Existe una correspondencia 1 a 1 entre las instrucciones del lenguaje de mquina y las
del lenguaje ensamblador. Cada uno de los valores numricos del lenguaje de mquina
tiene una representacin simblica de 3 a 5 letras como instruccin del lenguaje
ensamblador. Adicionalmente, este lenguaje proporciona un conjunto de pseudo-
operaciones (tambin conocidas como directivas del ensamblador) que sirven para
definir datos, rutinas y todo tipo de informacin para que el programa ejecutable sea
creado de determinada forma y en determinado lugar.

Lenguaje de mquina es el sistema de cdigos directamente interpretable por un


circuito microprogramable, como el microprocesador de una computadora o
el microcontrolador de un autmata. Este lenguaje est compuesto por un conjunto de
instrucciones que determinan acciones a ser tomadas por la mquina.
Un programa consiste en una cadena de estas instrucciones de lenguaje de mquina
(ms los datos). Estas instrucciones son normalmente ejecutadas en secuencia, con
eventuales cambios de flujo causados por el propio programa o eventos externos. El
lenguaje de mquina es especfico de cada mquina o arquitectura de la mquina,
aunque el conjunto de instrucciones disponibles pueda ser similar entre ellas.

Los circuitos microprogramables son sistemas digitales, lo que significa que trabajan
con dos nicos niveles de tensin. Dichos niveles, por abstraccin, se simbolizan con el
cero, 0, y el uno, 1, por eso el lenguaje de mquina slo utiliza dichos signos. Esto
permite el empleo de las teoras del lgebra booleana y del sistema binario en el diseo
de este tipo de circuitos y en su programacin.

Lenguaje de mquina del Intel 8088. El cdigo de mquina en hexadecimal se resalta


en rojo, el equivalente en lenguaje ensamblador en magenta, y las direcciones de
memoria donde se encuentra el cdigo, en azul. Abajo se ve un texto en hexadecimal
y ASCII.
11.- DEBUGER Y SIMULADORES DEL 8088
Usamos el DEBUG para ejecutar el programa en lenguaje de mquina

DEBUG.EXE (o DEBUG.COM) es un programa DOS que permite a los programas de


16 bits que se ejecute una instruccin a la vez con pausas para buscar en los registros
y la memoria.

Ejecutarlo desde la lnea de comandos MS-DOS como:

DEBUG name.EXE

Donde nombre es el nombre del archivo ejecutable.

DEBUG tiene una interfaz de usuario de lnea de comandos.

Cada lnea comienza con una letra clave posiblemente seguida de otra informacin.

Todos los nmeros estn en hexadecimal.

Por lo general, puede omitir los espacios en blanco - a veces es necesario hacerlo.

El "mini-lenguaje ensamblador" en adelante slo entiende un cdigo op y nmeros


hexadecimales y registrar los nombres - que no entiende las etiquetas del programa.

A continuacin se muestra un resumen de comandos. Las piezas que comienzan con /


/ son las explicaciones no parte de los comandos. La notacin xxxx representa un
nmero hexadecimal arbitrario (podra ser menos dgitos).

q / / quit DEBUG

r / / buscar en los registros y la siguiente instruccin a ser ejecutada

/ u / o desmontaje del lenguaje de mquina de nuevo en asamblea.

Sin embargo, note:No hay etiquetas de direccin.Se dan las direcciones en


hexadecimal.

u xxxx / / desmonte a partir de la direccin xxxx

d xxxx / / volcado de memoria en formato hexadecimal y ASCII a partir de la direccin


xxxx

t / / Ejecutar una sola instruccin

p / / Trace travs de una llamada procedimiento o instruccin int.


g xxxx / / Ejecutar las instrucciones hasta que llegue a la instruccin en la direccin
xxxx. Si la ejecucin falla que las instrucciones de su programa puede salirse de
control.

g / / Ejecuta el programa hasta que sale (o nunca). Los valores de registro se muestran
no son los que dan al final de la ejecucin de su programa.

r nn / / Donde nn es un nombre de registro. Muestra el valor actual del registro y luego


a: Puede escribir un nuevo valor para el registro y, a continuacin, presione
ENTRAR. O simplemente se presiona Enter para salir del valor anterior sin cambios.

a / xxxx / Empieza a traducir las lneas de lenguaje ensamblador en ML y poner la


instruccin ML por primera vez en la direccin xxxx. Las lneas siguientes de AL irn a
las direcciones de la mquina posterior. Al pulsar Intro en una lnea vaca AL saldr de
este "mini-ensamblador modo".

e xxxx / / Inicia el examen de bytes individuales a partir de la uno a la direccin xxxx. Si


escribe un espacio que pasa a la siguiente byte. Si escribe un nmero hexadecimal, se
cambia el byte de edad en lo que ha escrito. Si se pulsa enter, sale este "examinar" el
modo.

NSSS / / Dnde sss es uno o ms caracteres ASCII dando un nombre de


archivo. Este sss registros como el nombre de archivo predeterminado .

l / / Esta es la carta de ell, NO la de un dgito. Esto carga el archivo con el nombre de


archivo predeterminado en la memoria. Si se trata de un archivo. Exe, que se carga
correctamente y establece las SS, CS e IP para el inicio del programa.

w / / Graba la memoria en el archivo con el nombre de archivo predeterminado . El


nmero de bytes escritos est dada por la divisin de entero de 32 bits entre los
registros BX y CX. BX es el ms alto en 15 bits, CX es el ms bajo en 15 bits. Esto
presenta problemas para crear un programa ejecutable.. Se puede utilizar para crear un
programa. Com.
Utilizando el emulador de un microprocesador
Si desea cargar el cdigo en el emulador, haga clic en Emular .
Pero tambin se puede utilizar para cargar ejecutables emulador incluso si usted no
tiene el cdigo fuente original. Seleccione Mostrar emulador desde el men del
emulador.
BIBLIOGRAFIA
Intel, Datasheet 8088 8-bit Hmos Microprocessor 8088/8088-2 , agosto 1990,
pag 1-7.
Ibm corp.
Ibm at technical reference. - 1984. 600 pginas.
IBM, Technical Reference Pc xt 8088 User Guide, Section Hardware
Ralf Brown.
Lenguaje Ensamblador de los 80XX

REFERENCIAS
http://www.configurarequipos.com/doc585.html
http://www.monografias.com/
http://www.alpertron.com.ar/8088.HTM
http://www.wikilearning.com/
http://atc.ugr.es/docencia/udigital/
http://www.emu8086.com/
http://www.datasheetcatalog.org/datasheet/Intel/mXrysuv.pdf
Esta direccin es un ensamblador para los 80xx: msx88.zip

Das könnte Ihnen auch gefallen