Está en la página 1de 23

UNIVERSIDAD NACIONAL SAN AGUSTIN DE AREQUIPA

FACULTAD DE INGENIERIA DE PRODUCCION Y SERVICIOS


ESCUELA PROFESIONAL DE INGENIERIA ELECTRONICA

CURSO: ARQUITECTURA DE COMPUTADORAS


TURNO: ‘’C’’ VIERNES 7-8:40am HORAS
NUMERO DE GRUPO: 3
PC XT
INFORME PREVIO 1
ALUMNO:
-CCOLLA PARIAPAZA EDSON DARIO 20161847
-CRUZ HUACHACA YIMMY MANUEL 20162911

FECHA DE ENTREGA 26/04/2020

1
Contenido
1.- SISTEMAS QUE COMPONEN LA COMPUTADORA XT ..................................................4
2.- CARACTERISTICAS DEL PROCESADOR 8088/8086 ........................................................4
3.-FUNCIONAMIENTO EN GENERAL .................................................................................... 5
4.- SISTEMAS DESCRITOS POR BLOQUES Y POR CIRCUITOS ........................................ 6
5.- ESQUEMATICO DEL SISTEMA COMPLETO DE APLICACIÓN ................................... 9
6.- MUESTRA DE UNA DE UNA MAINBOARD XT CON IDENTIFICACION DE
DISPOSITIVOS............................................................................................................................10
7.- REGISTROS DEL 8088 ......................................................................................................... 10
7.1- Registros de Propósito General ................................................................................11
7.1.1Registro AX
7.1.2 Registro BX
7.1.3 Registro CX
7.1.4 Registro DX
7.2 Registros Índice ........................................................................................................11
7.1.1 Registro SI
7.1.2 Registro DI
7.3 Registros de punteros ...............................................................................................11
7.3.1 Registro SP
7.3.2 Registro BP
7.4 Registros de Estado .................................................................................................11
7.5 Registros de Segmento ............................................................................................11
7.5.1 Registro CS
7.5.2 Registro DS
7.5.3 Registro SS
7.5.4 Registroo ES
7.6 Registro Puntero de Instrucciones .........................................................................12
8.- MODOS DE DIRECCIONAMIENTO ..............................................................................13
9.- SET DE INSTRUCCUIONES ...........................................................................................15

2
9.1 Instrucciones de Transferencia de Datos....................................................................15
9.2 Control de Bucles (instrucciones simples) ................................................................15
9.3 Instrucciones de Prueba, Comparación y Saltos.........................................................15
9.4 Instrucciones de Llamado y Retorno de Subrutinas....................................................16
9.5 Instrucciones Aritméticas. ..........................................................................................16
9.6 Instrucciones Lógicas. ................................................................................................17
9.7 Instrucciones de Desplazamiento, Rotación y Adeudos.............................................17
9.8 Instrucciones de Pila...................................................................................................17
9.9 Instrucciones de Control del microprocesador............................................................17
9.10 Instrucciones de Interrupción....................................................................................18
10.- LENGUAJE LENGUAJE DE DE MAQUINA, MAQUINA, MACROENSANBLADOR
DEL MACROENSANBLADOR DEL 8088……………………………………………………19
11.- DEBUGER Y SIMULADORES DEL 8088 …………………………………………...…..20
BIBLIOGRAFIA ..........................................................................................................................23

3
1. SISTEMAS QUE COMPONEN LA COMPUTADORA XT
La IBM Personal Computer XT, conocida como la IBM XT o simplemente XT (eXtended
Technology), lanzada en 1983, tenía por componentes:

 La XT estándar venía de serie con 128KB de RAM, ampliable hasta 640KB


 Una disquetera de 5 ¼ ‘’ de doble densidad, de 360KB de tamaño completo
 Un disco duro Seagate de 10MB ( Seagate ST-412)
 Un adaptador asíncrono (tarjeta serial)
 Una fuente de alimentación de 130W q suministraba energía eléctrica a todos los
componentes.
 La placa base tenía ocho ranuras de expansión ISA de 8 bits, y un microprocesador Intel
8088 corriendo a 4,77 MHz (con un zócalo para coprocesador matemático Intel 8087).
Esta computadora estaba basada en la IBM PC, solo que añadiendo un disco duro, 8 slots de
expansión en lugar de 5, aunque tres de ellas eran utilizadas por el adaptador de la unidad de
disquetes, el adaptador del disco duro, y la tarjeta asíncrona. Había dos versiones de la placa base
del XT. La original podía admitir hasta 256kB en la misma placa (en cuatro bloques de chips de
64kB), con un máximo de 640kB alcanzados usando tarjetas de expansión (2 bloques de 256KB +
2 bloques de 64KB). La segunda revisión de la placa tenía además un IBM BIOS revisado, que
incluía soporte para el teclado expandido y reducía el tiempo de arranque a la mitad.
2. CARACTERISTICAS DEL PROCESADOR 8088/8086
El microprocesador 8088 es una derivación 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 código 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 rápido que el 8088. El 8088
ejecuta sus instrucciones desde una cola interna la cual se llena tan pronto como hay una localidad
vacía; así, es posible que se traslapen los ciclos de ejecución y búsqueda. Con tal de que las
instrucciones se ejecuten de la cola interna y no tengan que esperar un ciclo del bus, su ejecución
es tan rápida 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 sólo tomará uno.
El diseño de la familia del 8086 se basa en la compatibilidad y la creación de sistemas informáticos
integrados, por lo que disponen de diversos coprocesadores como el 8089 de E/S y el 8087,
coprocesador matemático de punto flotante. De acuerdo a esta filosofía 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 más lento que el 8086, pues éste es capaz de cargar una palabra ubicada en una
dirección 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

4
hasta 64K (65536 puertos), por lo que las máquinas construidas entorno a estos microprocesadores
no suelen emplear la entrada/salida por mapa de memoria.
Las frecuencias internas de reloj típicas son 4.77 MHz en la versión 8086; 8 MHz en la versión
8086-2 y 10 MHz en la 8086-1. Por lo que un PC estándar a 4,77 MHz puede ejecutar de 20.000
a unos 0,5 millones de instrucciones por segundo, según 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).
 Arquitectura interna de 16 bits
 Soporta 1 MB de memoria
 Aritmética con signo y sin signo de 8 y 16 bits, tanto en binario como en decimal,
incluyendo multiplicación y división.
 14 registros de 16 bits.
 Interrupción 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.
 Clock de 5 MHz
3. FUNCIONAMIENTO GENERAL
La función básica de una computadora es ejecutar programas, los cuales están compuesto de un
conjunto de instrucciones almacenadas en memoria. La CPU es la encargada de ejecutar las
instrucciones específicas del programa. Para comprender esta función debe considerarse el detalle
del proceso de ejecución del programa. Desde el punto de vista más simple, se considera el
procesamiento de una instrucción en dos etapas: la CPU lee (busca, trae; “fetch” en inglés) la
instrucción de memoria y la ejecuta. La ejecución del programa consiste en la repetición del
proceso de traer y ejecutar la instrucción.
El 8086 y el 8088 tienen internamente dos componentes, la Unidad de Interfaz del Bus y la Unidad
de ejecución (Bus Interface Unit (BIU) y Execution Unit (EU)).
La Unidad de Ejecución procesa las instrucciones del CPU. Está conformada por los registros
generales, los registros índices y apuntadores, los flags, la unidad aritmética lógica, y la lógica 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 lógica para controlar los buses
externos del microprocesador.
 La Unidad de Ejecución y la Unidad de Interfaz del Bus están interconectadas mediante un
bus interno.

5
Al ser inicializado el microprocesador, lo primero que hace es generar la dirección de memoria
0000h, para el ROM BIOS. Luego activa el pin ALE, para que el los bits bajos de la dirección
(AD0-AD7) queden almacenados en el circuito de Báscula Cerrojo. Luego de ello, activa el pin
RD, con lo que recibe el dato correspondiente al código de operación de la primera instrucción
almacenada el ROM BIOS a través de sus líneas de datos (con ello se explica la necesidad del
circuito báscula cerrojo). Una vez recibido este primer dato, el microprocesador busca en su tabla
de códigos, a qué operación se refiere y según ello, puede generar una nueva dirección al siguiente
dato para completar su operación. Este ciclo se repite siempre, la variación puede estar en que el
periférico direccionado, puede ser ROM, RAM o un periférico.
En caso que el microprocesador desee escribir en la memoria, se genera primero la dirección, como
en el caso anterior, sólo que esta vez se ponen los datos en el bus de datos y luego se activa el pin
WR.
4. SISTEMA DESCRITO POR BLOQUES Y POR CIRCUITOS
4.1.Diagrama de bloques de los microprocesadores Intel 8086/8088

1 Bloque de registros de propósito general


2 Bloque de registros de segmento y registro IP
3 Sumador de direcciones
4 Bus de direcciones internos

6
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 aritmético lógica (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 mínimo 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)

7
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 interrupción no enmascarable)
18-INTR (Entrada de interrupción enmascarable)
19-CLK (Entrada de reloj generada por el 8284)
20-GND (Masa)
21-RESET (Para inicializar el 8088)
22-READY (Para sincronizar periféricos y memorias lentas)
23-/TEST
24-/INTA (El 8088 indica que reconoció la interrupción)
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 dirección de los chips recién 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 adueñarse 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 mínimo, en caso
contrario está en modo máximo)
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)

8
5. ESQUEMATICO DEL SISTEMA COMPLETO SISTEMA DE APLICACIÓN

9
6. Muestra de una mainboard XT con identificación de dispositivos, etiquetado y accesorios

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 función concreta. En seguida se dan detallan cada
uno de estos registros, divididos según áreas de funcionalidad:
a. Registros de Almacenamiento Temporal o de Datos:
Se tiene:
 AX (Registro Acumulador): Es usado sobre todo en operaciones aritméticas
como primer operando y también como registro de propósito general a
disposición del programador.

10
 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 aritméticas y
como contenedor de datos a la hora de usar instrucciones de comunicación de
puertos.
Estos cuatro registros, como todos los restantes, son de 16 bits, pero para permitir la
realización 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
según lo que se precise. En los demás registros esta subdivisión no es posible.
b. Registros de 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:
 SP (Stack Pointer): Es el registro que se reserva el procesador para uso propio
en instrucciones de manipulación de la pila.
 BP (Base Pointer): Se usa como registro auxiliar.
c. Registros de segmento:
Son cuatro registros de 16 bits usados para indicar direcciones de memoria:
 CS (Code Segment): Este registro es usado por el procesador, junto con el
registro IP, para conocer dónde está la instrucción actual que está siendo
ejecutada.
 DS (Data Segment): Se usa para indicar dónde están todos los datos del
programa en ejecución.
 SS (Stack Segment): En este registro se indica al procesador dónde 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 simultáneos.
d. Registros Indices:
Se utilizan como desplazamientos complementarios para DS y ES a la hora de indicar
la posición donde se encuentran los datos a los que se desea acceder. Son:
 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.

11
e. Registros de instrucción:
Sólo hay uno, el registro IP (Instruction Pointer), es usado por la CPU para conocer la
posición relativa a la base CS donde se encuentra la instrucción que se está ejecutando
actualmente. Este registro no puede ser modificado directamente por parte del
programador. Este puntero cambia su contenido automáticamente cada vez que se
ejecuta una instrucción o cuando se salta a otro punto del programa mediante una
instrucción de salto.
f. Registro de banderas:
Este registro es usado para tener el control de estado y control de las operaciones. La
mayoría 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 operación aritmética.
Bit 1: No usado.
Bit 2 - PF (Parity Flag): Cuando está a 1, indica que hay un número 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 operación de tipo BCD.
Bit 5: No usado.
Bit 6 - ZF (Zero Flag): Indica si se ha producido un resultado cero o una comparación
con operadores iguales.
Bit 7 - SF (Sign Flag): Indica si se ha producido un resultado negativo o comparación
menor.
Bit 8 - TF (Trap Flag): Es la bandera de atrape, usada en procesos de depuración de
código.
Bit 9 - IF (Interrupt Flag): Si está a 1, indica que está permitida la generación de
interrupciones hardware que generan algunos periféricos, 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 aritmético.
Bit 12 al 15: No usados.
La Figura mostrada a continuación muestra el Conjunto de Registros del 8088:

12
8. MODOS DE DIRECCIONAMIENTO
En el 8086/8088, los parámetros (operadores) de una instrucción 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 representación.
En total son siete las clases de parámetros que se pueden utilizar y conjuntamente forman los
llamados siete modos de direccionamiento.

1. Registros internos: el origen y destino de la operación son los registros internos de la CPU.
2. Valores inmediatos: en este modo, el origen de los datos (y sólo el origen) es un valor numérico.

13
3. Valores de memoria. Hay cinco modos de acceso a memoria:
3.1 Modo directo: Se indica la dirección de memoria a la que se quiere acceder.
3.2 Modo indirecto mediante registro: Es similar al modo anterior sólo 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 posición
del operando utilizando como desplazamiento el valor de un registro sumado con una cantidad
constante.
3.4 Modo directo indexado: Idéntico al anterior pero usando como registro de
desplazamiento el registro SI o el DI.
3.5 Modo indexado a base: Este es el modo más complejo, y se podría 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 tenían los siguientes modos de direccionamiento:
 Implícito. El dato está implícito en la propia instruciión. Ej. STC, STD y STI, (Set Carry,
Set Direcction y Set Interrupts) encienden el flag correspondiente indicado en la propia
instrucción. CBW (Convert Byte to Word) extiende el registro AL a AX. Ni el AL ni el
AX son especificados, CBW implícitamente trabaja sobre ellos.
 Inmediato. El dato a operar está inmediatamente después del opcode de la instrucción. 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 dirección del dato está en el campo de la dirección 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 movería solo un byte pues BL es un registro de 8 bits
 Indirecto. El dato es especificado mediante una combinación de registros índice y base, y
puede haber un desplazamiento
 Base. Un registro base (BX o BP) tienen la dirección de donde se tomará el dato. Ej.
MOV AX, [BX]
 Índice. Un registro índice (SI o SI) tienen la dirección de donde se tomará el dato. Ej.
MOV AX, [SI]
 Base + Desplazamiento. El dato se tomará de la dirección apuntada por la suma de un
registro base más un desplazamiento. Ej. MOV AX, [BP + 7]
 Índice + Desplazamiento. El dato se tomará de la dirección apuntada por la suma de un
registro índice más un desplazamiento. Ej. MOV AX, [DI + 7]
 Base + Índice. El dato se tomará de la dirección apuntada por la suma de un registro
base más un registro índice. Ej. MOV AX, [BX + SI]
 Base + Índice + Desplazamiento. El dato se tomará de la dirección apuntada por la
suma de un registro base, más un registro índice, más un desplazamiento. Ej. MOV
AX, [BX + SI + 9]

14
9. Set de instrucciones del 8088
Se pueden clasificar en los siguientes grupos:
a. 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 segmentación.
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 dirección 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)
b. Control de Bucles (instrucciones simples).
Estas posibilitan el grupo de control más elemental de nuestros programas. Un bucle es un
bloque de código que se ejecuta varias veces. Hay4 tipos de bucles básicos:
 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
c. Instrucciones de Prueba, Comparación y Saltos.
Este grupo es una continuación 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

15
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)
d. 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ó
e. Instrucciones Aritméticas.
Estas instrucciones son las que realiza directamente el 8086/8088
a. Grupo de adicion:
ADD suma
ADC suma con acarreo
AAA ajuste ASCII para la suma
DAA ajuste decimal para la suma
b. Grupo de sustracción:
SUB resta
SBB resta con acarreo negativo
AAS ajuste ASCII para la resta
DAS ajuste decimal para la resta
c. Grupo de multiplicación:
MUL multiplicación
IMUL multiplicación entera
AAM ajuste ASCII para la multiplicación
d. Grupo de división:
DIV división
IDIV división entera
AAD ajuste ASCII para la división
e. Conversiones
CBW pasar octeto a palabra
CWD pasar palabra a doble palabra
NEG negación

16
f. Tratamiento de cadenas
Permiten el movimiento, comparación o búsqueda rápida en bloques de datos:
MOVC transferir carácter de una cadena
MOVW transferir palabra de una cadena
CMPC comparar carácter de una cadena
CMPW comparar palabra de una cadena
SCAC buscar carácter de una cadena
SCAW buscar palabra de una cadena
LODC cargar carácter de una cadena
LODW cargar palabra de una cadena
STOC guardar carácter de una cadena
STOW guardar palabra de una cadena
REP repetir
CLD poner a 0 el indicador de dirección
STD poner a 1 el indicador de dirección
f. Instrucciones Lógicas.
Son operaciones bit a bit que trabajan sobre octetos o palabras completas:
NOT negación
AND producto lógico
OR suma lógica
XOR suma lógica exclusiva
g. Instrucciones de Desplazamiento, Rotación y Adeudos.
Básicamente permiten multiplicar y dividir por potencias de 2
SHL, SAL desplazar a la izquierda (desplazamiento aritmético)
SHR desplazar a la derecha
SAR desplazamiento aritmético a la derecha
ROL rotación a la izquierda
ROR rotación a la derecha
RCL rotación con acarreo a la izquierda
RCR rotación con acarreo a la derecha
CLC borrar acarreo
STC poner acarreo a 1
h. 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
i. Instrucciones de Control del microprocesador.
Hay varias instrucciones para el control de la CPU, ya sea a ella sola, o en conjunción con
otros procesadores:

17
NOP no operación
HLT parada
WAIT espera
LOCK bloquea
ESC escape
j. Instrucciones de Interrupción.
STI poner a 1 el indicador de interrupción
CLI borrar el indicador de interrupción
INT interrupción
INTO interrupción por capacidad excedida (desbordamiento)
IRET retorno de interrupción
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 efectúa 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 efectúa 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 efectúa 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 efectúa 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 efectúa
si ZF = 1 (también 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 efectúa si ZF = 0 (también se aplica a comparaciones de enteros con signo)

2. Instrucciones usadas para comparar dos enteros con signo:


a. JG o JNLE. Salta si es más grande o salta si no es menor o igual (jump if greater o jump
if not less or equal) El salto se efectúa si ZF = 0 oOF = SF.
b. JGE o JNL. Salta si es más grande o igual o salta si no es menor que (jump if greater
or equal o jump if not less) El salto se efectúa 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 efectúa si SF = OF.
d. JLE o JNG. Salta si es menor o igual o salta si no es más grande (jump if less or equal
o jump if not greater) El salto se efectúa si ZF = 1 o SF = OF.

3. Instrucciones usadas según el estado de banderas:


a. JC Salta si hay acarreo (jump if carry) El salto se efectúa si CF = 1.
b. JNC Salta si no hay acarreo (jump if not carry) El salto se efectúa si CF = 0.

18
c. JNO Salta si no hay desbordamiento (jump if not overflow) El salto se efectúa si OF =
0.
d. JNP o JPO Salta si no hay paridad o salta si la paridad en non. El salto se efectúa si PF=
0.
e. JNS Salta si el signo está apagado (jump if not sign) El salto se efectúa si SF = 0.
f. JO Salta si hay desbordamiento El salto se efectúa 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 efectúa si PF = 1.
h. JS Salta si el signo está prendido El salto se efectúa si SF = 1.

10. LENGUAJE DE MAQUINA, MACROENSANBLADOR DEL 8088


El lenguaje máquina es el único que entiende directamente la computadora, utiliza el alfabeto
binario que consta de los dos únicos símbolos 0 y 1, denominados bits (abreviatura inglesa de
dígitos binarios). El lenguaje máquina es el único que entiende directamente la computadora,
utiliza el alfabeto binario que consta de los dos únicos símbolos 0 y 1, denominados bits
(abreviatura inglesa de dígitos binarios). Fue el primer lenguaje utilizado en la programación de
computadoras, pero dejó de utilizarse por su dificultad y complicación, siendo sustituido por otros
lenguajes más fáciles de aprender y utilizar, que además reducen la posibilidad de cometer errores.
Ahora bien, siendo el lenguaje de máquina un conjunto de números, ¿cómo es capaz el
microprocesador de saber cuándo un número representa una instrucción y cuándo un dato? El
secreto de esto reside en la dirección de inicio de un programa y en el estado del microprocesador.
La dirección 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 cuándo éste espera una instrucción y cuándo éste espera un dato.
Obviamente, el lenguaje de máquina 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 máquina propio y soporta el código
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 diseño 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 código de un 80186 o superiores, ya que los procesadores más 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 código de un Motorola y
viceversa. Y esto no tiene nada que ver con la compañía, ya que Intel desarrolla otros tipos de
microprocesadores como el 80860 y el iWARP, los cuales no pueden compartir código ni entre
ellos ni entre los 80xx/80xxx.
Ahora bien, mientras que con el lenguaje de máquina, nosotros obtenemos un control total del
microprocesador, la programación en este lenguaje resulta muy difícil y fácil para cometer errores.
No tanto por el hecho de que las instrucciones son sólo números, sino porque se debe calcular y

19
trabajar con las direcciones de memoria de los datos, los saltos y las direcciones de llamadas a
subrutinas, además 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 código. Para
facilitar la elaboración 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 máquina y las del lenguaje
ensamblador. Cada uno de los valores numéricos del lenguaje de máquina tiene una representación
simbólica de 3 a 5 letras como instrucción del lenguaje ensamblador. Adicionalmente, este
lenguaje proporciona un conjunto de pseudooperaciones (también conocidas como directivas del
ensamblador) que sirven para definir datos, rutinas y todo tipo de información para que el programa
ejecutable sea creado de determinada forma y en determinado lugar.
Lenguaje de máquina es el sistema de códigos directamente interpretable por un circuito
microprogramable, como el microprocesador de una computadora o el microcontrolador de un
autómata. Este lenguaje está compuesto por un conjunto de instrucciones que determinan acciones
a ser tomadas por la máquina. Un programa consiste en una cadena de estas instrucciones de
lenguaje de máquina (más 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 máquina es específico de cada máquina o arquitectura de la máquina, 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 tensión. Dichos niveles, por abstracción, se simbolizan con el cero, 0, y el uno,
1, por eso el lenguaje de máquina sólo utiliza dichos signos. Esto permite el empleo de las teorías
del álgebra booleana y del sistema binario en el diseño de este tipo de circuitos y en su
programación.
11. Debuger y simuladores del 8088
Usamos el DEBUG para ejecutar el programa en lenguaje de máquina
DEBUG.EXE (o DEBUG.COM) es un programa DOS que permite a los programas de 16 bits que
se ejecute una instrucción a la vez con pausas para buscar en los registros y la memoria.
Ejecutarlo desde la línea de comandos MS-DOS como:
DEBUG name.EXE
Donde nombre es el nombre del archivo ejecutable.
DEBUG tiene una interfaz de usuario de línea de comandos.
Cada línea comienza con una letra clave posiblemente seguida de otra información.
Todos los números están en hexadecimal.
Por lo general, puede omitir los espacios en blanco - a veces es necesario hacerlo.
20
El "mini-lenguaje ensamblador" en adelante sólo entiende un código op y números hexadecimales
y registrar los nombres - que no entiende las etiquetas del programa.
A continuación se muestra un resumen de comandos. Las piezas que comienzan con / / son las
explicaciones no parte de los comandos. La notación xxxx representa un número hexadecimal
arbitrario (podría ser menos dígitos).
q / / quit DEBUG
r / / buscar en los registros y la siguiente instrucción a ser ejecutada
/ u / o desmontaje del lenguaje de máquina de nuevo en asamblea.
Sin embargo, note:No hay etiquetas de dirección.Se dan las direcciones en hexadecimal.
u xxxx / / desmonte a partir de la dirección xxxx
d xxxx / / volcado de memoria en formato hexadecimal y ASCII a partir de la dirección xxxx
t / / Ejecutar una sola instrucción
p / / Trace través de una llamada procedimiento o instrucción int.
g xxxx / / Ejecutar las instrucciones hasta que llegue a la instrucción en la dirección xxxx. Si la
ejecución 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 ejecución 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 continuación, presione ENTRAR. O simplemente se
presiona Enter para salir del valor anterior sin cambios.
a / xxxx / Empieza a traducir las líneas de lenguaje ensamblador en ML y poner la instrucción ML
por primera vez en la dirección xxxx. Las líneas siguientes de AL irán a las direcciones de la
máquina posterior. Al pulsar Intro en una línea vacía AL saldrá de este "mini-ensamblador modo".
e xxxx / / Inicia el examen de bytes individuales a partir de la uno a la dirección xxxx. Si escribe
un espacio que pasa a la siguiente byte. Si escribe un número hexadecimal, se cambia el byte de
edad en lo que ha escrito. Si se pulsa enter, sale este "examinar" el modo.
NSSS / / ¿Dónde sss es uno o más 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 dígito. 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 número de
bytes escritos está dada por la división de entero de 32 bits entre los registros BX y CX. BX es el

21
más alto en 15 bits, CX es el más bajo en 15 bits. Esto presenta problemas para crear un programa
ejecutable.. Se puede utilizar para crear un programa.

Utilizando el emulador de un microprocesador


Si desea cargar el código en el emulador, haga clic en Emular . Pero también se puede utilizar para
cargar ejecutables emulador incluso si usted no tiene el código fuente original. Seleccione Mostrar
emulador desde el menú del emulador.

22
Bibliografía
Los microprocesadores 8086 y 8088, Dario Alejandro Alpern, www.alpertron.com.ar/8088.HTM
Descripción de los componentes del sistema mínimo del microprocesador Intel,
www.members.tripod.com/wingsze_liu/trabajos_A8.htm
Arquitectura del procesador 8086-8088, www.monografias.com/trabajos104/arquitectura-del-
8086-8088/arquitectura-del-8086-8088.shtml
Caracteristicas del microprocesador 8086, www.techlandia.com/caracteristicas-del-
microprocesador-8086-lista_46568/
Instrucciones y directivas de 8086 y 8088, dario alejando Alpert,
www.alpertron.ar/INST8088.HTM
Capitulo V: El lenguaje ensamblador del 80x86, www.galia.fc.uaslp.mx/-
cantocar/ARQUI_COM_II/LIBRO%20IBM-PC/05.htm

23

También podría gustarte