8088 Montesinos Ollachica Paye PradoFarfan

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 33

UNIVERSIDAD NACIONAL DE SAN AGUSTÍN DE AREQUIPA

FACULTAD DE INGENIERÍA DE PRODUCCIÓN Y SERVICIOS

PROGRAMA DE ESTUDIO INGENIERÍA ELECTRÓNICA

ARQUITECTURA DE COMPUTADORAS LABORATORIO

TURNO: “3” Lunes 8:50 - 10:30 am

NÚMERO DE GRUPO: G32

TÍTULO: Hardware Computadora Personal PC XT 8088-8086

TAREA 2

INTEGRANTES:
Apellidos y nombres CUI Firma

Montesinos Quispe Javier Pablo 20200312

Ollachica Arias, Eduardo Andres 20200313

Paye Huanca Erick Renato 20193010

Prado Farfan Quevedo, Jose Enrique 20190290

FECHA ENTREGA: 17/09/2023


1. Sistemas que componen la computadora XT 3

2. Características del procesador 8088/8086 4

3. Funcionamiento en general 4

4. Sistema descrito por bloques y por circuitos 6

Diagrama de bloques del procesador 8088 6

5. Esquemático del sistema completo Sistema de Aplicación. 8

6. Muestra de una Mainboard XT con identificación de dispositivos Etiquetado y


accesorios 9

7. Registros del 8088 9


7.1. Registros de Almacenamiento Temporal o de Datos: 9
7.2. Registros de Segmento: 10
7.3. Registros de la Pila: 10
7.4. Registros Índices: 10
7.5. Registros de Instrucción: 10
7.6. Registro de Banderas: 10

8. Modos de direccionamiento 11
a) Direccionamiento por Registro: 11
b) Direccionamiento Inmediato: 11
c) Direccionamiento Directo: 12
d) Direccionamiento indirecto por registro: 12
e) Direccionamiento Base Más Índice: 12
f) Direccionamiento Relativo por Registro: 13
g) Direccionamiento Relativo Base Más Índice: 13

Modos de Direccionamiento de Memoria de Programa: 13


a) Direccionamiento Directo a la Memoria del Programa: 13
b) Direccionamiento Relativo de Memoria de Programa: 13
c) Direccionamiento Indirecto de Memoria de Programa: 14
d) Direccionamiento a la Pila de Memoria: 14
e) Direccionamiento Implícito: 14

9. Set de instrucciones del 8088 14

10. Lenguaje máquina, macroensamblador del 8088 20


11. Debugger, y simuladores del 8088/8086 20
1. Sistemas que componen la computadora XT
El término "XT" proviene de las siglas de "eXtended Technology" que significa
"Tecnología eXtendida". Este estándar, conocido como XT, venía equipado de serie
con varios componentes clave. Contaba con 128KB de memoria RAM integrada y
una disquetera de 5 1/4" de doble cara y doble densidad, con una capacidad de
360KB.

Además, el XT incluía un disco duro Seagate de 10MB (ST-412), un adaptador


asíncrono (tarjeta serial) y una fuente de alimentación de 130W que suministraba
energía eléctrica a todos los componentes. La placa base presentaba ocho ranuras de
expansión ISA de 8 bits y era impulsada por un microprocesador Intel 8088 que
operaba a 4,77 MHz, con un zócalo para un coprocesador matemático Intel 8087.

Estas ocho ranuras de expansión representaban un incremento respecto a las cinco


ranuras del IBM PC original. Sin embargo, tres de ellas se utilizaban para el adaptador
de la unidad de disquetes, el adaptador del disco duro y la tarjeta asíncrona. Pronto se
actualizó la especificación básica para estandarizarla con una capacidad de memoria
RAM de 256KB.

Hubo dos versiones de la placa base del XT. La versión original tenía la capacidad de
admitir hasta 256KB en la misma placa, organizados en cuatro bloques de chips de
64KB. Esto permitía un máximo de 640KB utilizando tarjetas de expansión. En una
revisión posterior de la placa base introducida en 1986, se logró admitir los 640KB
completos en la placa base, organizados en dos bloques de chips de 256KB y dos
bloques de 64KB.

Con el tiempo, las placas más recientes podían ser adaptadas para cumplir con las
"últimas" especificaciones mediante unas pocas modificaciones menores. La segunda
revisión de la placa también incluía un BIOS revisado de IBM que añadía soporte
para el teclado expandido y reducía significativamente el tiempo de arranque.

En las últimas versiones de los XT, se incluían unidades de disquetes de media altura
de fábrica y ofrecían la opción de un disco duro de 20MB, así como un teclado
"expandido". Sin embargo, en 1985, algunas unidades fueron fabricadas únicamente
con dos disqueteras de tamaño completo y sin disco duro.

2. Características del procesador 8088/8086


El microprocesador 8088, una variante del 8086, se distingue principalmente por la
diferencia en el ancho del bus de datos. Mientras que el 8086 tiene tanto el bus interno
como externo de datos de 16 bits, el 8088 posee una ruta interna de datos de 16 bits,
pero su interfaz a memoria es de solo 8 bits. Es importante destacar que el código
escrito para uno puede ejecutarse en el otro sin necesidad de modificaciones.
No obstante, la disparidad en el ancho del bus no implica que el 8086 sea el doble de
rápido que el 8088. El 8088 ejecuta sus instrucciones desde una cola interna que se
llena rápidamente, permitiendo la superposición de ciclos de ejecución y búsqueda. Si
las instrucciones se ejecutan desde esta cola interna y no necesitan esperar un ciclo del
bus, su ejecución es tan rápida como podría ser en el 8086. En caso de ciclos de datos
de 16 bits, se requieren dos ciclos de memoria en el 8088, mientras que en el 8086
solo se necesita uno.

Resumiendo las características clave del 8088:


● Arquitectura interna de 16 bits
● Admite 1 MB de memoria
● Realiza operaciones aritméticas con signo y sin signo de 8 y 16 bits en binario
y decimal, incluyendo multiplicación y división
● Dispone de 14 registros de 16 bits
● Ofrece interrupciones enmascarables y no enmascarables
● Presenta 24 modos de direccionamiento de operandos
● Facilita acceso directo a memoria
● Brinda soporte para coprocesadores de bus local
● Permite E/S mapeada en memoria
● Ejecuta operaciones de cadena.

3. Funcionamiento en general
La función fundamental de una computadora es ejecutar programas, los cuales
consisten en un conjunto de instrucciones almacenadas en memoria. La CPU es la
responsable de ejecutar estas instrucciones específicas del programa. Para comprender
este proceso, es esencial entender los detalles de la ejecución del programa, que se
puede dividir en dos etapas básicas para procesar una instrucción: la CPU lee (o
busca, en inglés "fetch") la instrucción de memoria y luego la ejecuta. La ejecución
del programa implica repetir este proceso de traer y ejecutar la instrucción.

La operación de búsqueda de una instrucción es común a todas las instrucciones y


consiste en leer la instrucción desde una ubicación de memoria. La ejecución de la
instrucción puede involucrar varias operaciones y dependerá de la naturaleza de dicha
instrucción.

El procesamiento de una instrucción se denomina ciclo de instrucción, que consta de


dos etapas: el ciclo de búsqueda y el ciclo de ejecución. La ejecución del programa
continúa de esta manera hasta que la computadora se apaga, se produce algún error o
se encuentra una instrucción que detiene la computadora.
Al inicio de cada ciclo de instrucción, la CPU busca o trae una instrucción de
memoria utilizando un registro llamado contador de programa (PC, por sus siglas en
inglés) para apuntar a la próxima instrucción que debe traer. La CPU, a menos que se
indique lo contrario, incrementa siempre el PC después de traer una instrucción para
determinar de dónde traer la siguiente instrucción en la secuencia (la siguiente
dirección de memoria).

La instrucción traída se almacena en un registro de la CPU llamado registro de


instrucción (IR). La CPU interpreta esta instrucción y realiza la acción requerida, que
puede ser de cuatro tipos:
● CPU - Memoria: Transferir datos entre la CPU y la memoria.
● CPU - E/S: Transferir datos hacia o desde dispositivos externos a través de los
módulos de Entrada/Salida (E/S).
● Procesamiento de datos: Realizar operaciones aritméticas o lógicas con los
datos.
● Control: Especificar cambios en la secuencia de ejecución, requiriendo que la
CPU ajuste el contador de programa al valor adecuado.

El ciclo de ejecución de una instrucción puede involucrar más de una referencia a la


memoria o, en su lugar, puede implicar una operación de E/S. Con estas
consideraciones en mente, la representación detallada del ciclo de instrucción se
proporciona en la figura siguiente. Para un ciclo de instrucción dado, algunos estados
pueden no ocurrir y otros pueden ocurrir más de una vez. Los estados incluyen:

● Cálculo de la dirección de la instrucción (IAC, por sus siglas en inglés,


Instruction Address Calculation): Determina la dirección de la próxima
instrucción a ejecutar.
● Búsqueda de instrucción (IF, por sus siglas en inglés, Instruction Fetch): La
CPU lee la instrucción desde su posición en memoria.
● Decodificación de la operación indicada en la instrucción (IOD, por sus siglas
en inglés, Instruction Operation Decoding): Analiza la instrucción para
determinar el tipo de operación a realizar y los operandos a utilizar.
● Cálculo de la dirección del operando (OAC, por sus siglas en inglés, Operand
Address Calculation): Si la instrucción implica una referencia a un operando
en memoria o disponible a través de E/S, determina la dirección del operando.
● Búsqueda de operando (OF, por sus siglas en inglés, Operand Fetch): Trae el
operando desde la memoria o lo lee desde el dispositivo de E/S.
● Operación con los datos (DO, por sus siglas en inglés, Data Operation):
Realiza la operación indicada en la instrucción.
● Almacenamiento del operando (OS, por sus siglas en inglés, Operand Store):
Escribe el resultado en memoria o lo envía a través de un dispositivo de E/S.

Los estados en la parte superior de la figura implican interacciones entre la CPU y la


memoria o el módulo de E/S. En contraste, los estados en la parte inferior solo
ocasionan operaciones internas en la CPU. El estado OAC aparece dos veces porque
una instrucción puede ocasionar una lectura, una escritura o ambas. Además, se
observa la posibilidad de múltiples operandos y resultados, ya que son necesarios en
algunas instrucciones.

4. Sistema descrito por bloques y por circuitos

Diagrama de bloques del procesador 8088

En cuanto a la circuitería 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:

IC Funcion

74LS373 Latch activado por nivel

74LS245 Amplificador bidireccional de 8 bits


74LS244 Amplificador de 8 bits

74LS138 Decodificador 3/8

75477 Amplificador Inversor

74LS175 Flipflop tipo D

74LS280 Generador de paridad

74LS08 Inversor

74LS32 Compuerta OR

74LS07 Buffer

74LS08 Compuerta AND


5. Esquemático del sistema completo Sistema de Aplicación.
6. Muestra de una Mainboard XT con identificación de dispositivos Etiquetado y
accesorios

7. Registros del 8088


El microprocesador cuenta con una serie de registros internos, denominados
"variables" fijas, que son fundamentales para el manejo de variables en memoria y
para su propio funcionamiento. Estos registros se dividen en distintas categorías según
su funcionalidad:

7.1. Registros de Almacenamiento Temporal o de Datos:


- AX (Registro Acumulador): Principalmente utilizado en operaciones
aritméticas como primer operando y también como registro de propósito
general a disposición del programador.
- BX (Registro Base): Empleado principalmente para indicar posiciones de
memoria (offset).
- CX (Registro Contador): Se utiliza como contador en operaciones repetitivas y
bucles.
- DX (Registro Dato): Actúa como registro auxiliar en operaciones aritméticas y
como contenedor de datos en instrucciones que implican comunicación con
puertos.

Cada uno de estos registros de 16 bits está subdividido en dos subregistros de 8 bits
(AL, AH, BL, BH, CL, CH, DL, DH) para permitir operaciones de tipo byte (8 bits) y
operaciones de 16 bits, brindando flexibilidad en el manejo de datos.
7.2. Registros de Segmento:
- CS (Code Segment): Utilizado junto con el registro IP para conocer la
posición de la instrucción actual en ejecución.
- DS (Data Segment): Indica la ubicación de los datos del programa en
ejecución.
- SS (Stack Segment): Define la zona de memoria utilizada como segmento de
pila.
- ES (Extra Segment): Se emplea como apuntador de memoria auxiliar en
operaciones complejas que requieren dos punteros de datos simultáneos.

7.3. Registros de la Pila:


- SP (Stack Pointer): Reservado para uso propio en operaciones de
manipulación de la pila.
- BP (Base Pointer): Utilizado como registro auxiliar.

7.4. Registros Índices:


- SI (Source Index): Actúa como puntero origen en operaciones de
desplazamiento de datos entre zonas de memoria.
- DI (Destination Index): Funciona como destino en operaciones de
desplazamiento de datos.

7.5. Registros de Instrucción:


- IP (Instruction Pointer): Utilizado por la CPU para conocer la posición relativa
a la base CS donde se encuentra la instrucción que se está ejecutando
actualmente.

7.6. Registro de Banderas:


El registro de banderas contiene varios bits que representan diferentes estados y
controles de operaciones, tales como acarreo, paridad, signo, entre otros, que son
esenciales para el control de flujo y operaciones. Cada bit tiene una función específica
en el control y monitoreo del estado actual de la operación en ejecución.

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.

8. Modos de direccionamiento

A continuación 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 instrucción
MOV destino, origen.

Se tienen los siguientes:

a) Direccionamiento por Registro:

Transfiere el contenido de un registro a otro del mismo tamaño. 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 código. Es rápido.

MOV AX, BX (AX <- BX)

b) Direccionamiento Inmediato:
Transfiere el dato que sigue al código de operación al registro especificado. Es
muy rápido porque se hace con información de la cola.

MOV AX,3456H (AX <- 3456H)

c) Direccionamiento Directo:

Se suma el desplazamiento dado al segmento de datos.


- 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 dirección 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 Más Índice:

Direcciona en forma indirecta los datos de memoria. Se usa un registro base


(BP o BX) más 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). También BP direcciona en pila y los otros en datos.

MOV [BX+4],AX (AX -> BX+4+DS x 10H)

g) Direccionamiento Relativo Base Más Índice:

Transfiere entre un registro y una dirección dada por un registro base más
índice más desplazamiento.

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

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 dirección con el código de operación. 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 ejecución en otro lado, según


el valor especificado luego del código de operación. Se usa para saltos cortos
intrasegmento.

JMP 2 (IP <- IP+2)


c) Direccionamiento Indirecto de Memoria de Programa:

La dirección 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 instrucción
CALL aprovecha la pila para salvar la dirección 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 próximo dato.
La parte baja se almacena en SP-2. Luego decrementa 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 Implícito:

El operando está implícito. HLT, LOCK, WAIT, DAA.

9. Set de instrucciones del 8088

- Instrucciones de transferencia de datos:

MOV transfiere

XCHGIN 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)

- Control de bucles (instrucciones simples):

- Instrucciones de llamado y retorno de subrutinas:

- Instrucciones Aritméticas:
- Instrucciones de prueba, comparación y saltos:

- Instrucciones lógicas:
- Instrucciones de desplazamiento, rotación y adeudos:

- Instrucciones de pila:

- Instrucciones de control del microprocesador:

- Instrucciones de interrupción:
- Instrucciones usadas para comparar dos enteros sin signo:

- Instrucciones usadas para comparar dos enteros con signo:

- Instrucciones usadas según el estado de banderas:


10. Lenguaje máquina, macroensamblador del 8088

El lenguaje de máquina incluye una variedad de lenguajes reconocidos y realizados por el


microprocesador. Es un conjunto de números representativos, comandos o funciones
realizadas por el microprocesador y registradas
a través del circuito dentro del hardware, no se puede modificar. Él

El microprocesador distingue los datos de una instrucción utilizando la dirección inicial de la


instrucción. Programa y estado del microprocesador. La dirección inicial de un programa
determinado. Ubicación de la memoria donde comienza el programa y el número a contar.
Como se indica con el lenguaje de máquina, tenemos control total sobre el procesador,

La programación en este lenguaje es difícil y propensa a errores. Facilitar


desarrollo de programas en este nivel, se han desarrollado ensambladores y el lenguaje
Ensamblador. Existe una correspondencia uno a uno entre las instrucciones en lenguaje
máquina y ensamblador. El valor numérico de cada idioma. La máquina tiene un símbolo de
3 a 5 letras como instrucción de idioma.
ensamblador. Los circuitos microprogramables son sistemas digitales. Esto permite utilizar las
teorías del álgebra de Boole y los sistemas binarios en este tipo de diseño de circuitos y su
programación.

11. Debugger, y simuladores del 8088/8086

El DEBUG es utilizado para ejecutar un programa en lenguaje máquina. DEBUG.EXE 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.
DEBUG tiene una interfaz de usuario de línea de comandos, donde cada línea comienza
con una letra “clave” que posiblemente esté seguida de otra información. El “mini lenguaje
ensamblador” solo entenderá un código op y hexadecimales. Aquí una muestra de los
comandos.
UNIVERSIDAD NACIONAL DE SAN AGUSTÍN DE AREQUIPA

FACULTAD DE INGENIERÍA DE PRODUCCIÓN Y SERVICIOS

PROGRAMA DE ESTUDIO INGENIERÍA ELECTRÓNICA

ARQUITECTURA DE COMPUTADORAS LABORATORIO

TURNO: “3” Lunes 8:50 - 10:30 am

NÚMERO DE GRUPO: G32

TÍTULO: Hardware Computadora Personal PC XT 8088-8086

TAREA 2

INTEGRANTES:
Apellidos y nombres CUI Firma

Montesinos Quispe Javier Pablo 20200312

Ollachica Arias, Eduardo Andres 20200313

Paye Huanca Erick Renato 20193010

Prado Farfan Quevedo, Jose Enrique 20190290

FECHA ENTREGA: 17/09/2023


ÍNDICE

DESCRIPCIÓN DE LOS PINES………………………………………………………………………………………2

PINES EN MODO MÍNIMO O MÁXIMO………………………………………………………………….2

PINES EN MODO SOLO MÍNIMO…………………………………………………………………………4

PINES EN MODO SOLO MÁXIMO………………………………………………………………………...5

RESUMEN DEL CONJUNTO DE INSTRUCCIONES ……………………………………………………………..7

1
DESCRIPCIÓN DE LOS PINES

Las siguientes descripciones de funciones de pines son para sistemas 8088 en modo mínimo o máximo. El "bus local" en
estas descripciones es la conexión de interfaz de bus multiplexada directa al 8088 (sin tener en cuenta los búferes de bus
adicionales).

SÍMBOLO N° DE PIN TIPO NOMBRE Y FUNCIÓN

AD7-AD0 9-16 I/O ADDRESS DATA BUS (dirección de bus de datos): Estas líneas constituyen la dirección
de I/O de la memoria multiplexada en el tiempo (T1) y el bus de datos (T2, T3, Tw, T4).
Estas líneas se activan en valor ALTO y flota a 3 estados APAGADO durante el
reconocimiento de interrupción y el bus local "reconocimiento de espera".

A15-A8 2-8,39 O ADDRESS BUS (dirección de bus): Estas líneas proporcionan los bits de dirección 8 a 15
para todo el ciclo del bus (T1–T4). Estas líneas no tienen que estar bloqueadas por ALE
para seguir siendo válidas. A15–A8 están activas en ALTO y flotan a 3 estados APAGADO
durante el reconocimiento de interrupción y el “reconocimiento en espera” del bus local.

A19/S6, 35-38 O ADDRESS/STATUS: Durante T1, estas son las cuatro líneas de dirección más importantes
A18/S5, para las operaciones de memoria. Durante las operaciones de I/O, estas líneas están en
A17/S4, BAJO. Durante las operaciones de memoria y I/O, la información de estado disponible en
A16/S3 estas líneas durante T2, T3, Tw y T4S6 siempre es baja. El estado del bit indicador de
habilitación de interrupción (S5) se actualiza al comienzo de cada ciclo de reloj. S4 y S3
están codificados como se muestra.

Esta información indica qué registro de segmento se está utilizando actualmente para
acceder a los datos.

Estas líneas flotan hasta el estado APAGADO de 3 estados durante el "reconocimiento de


retención" del bus local.

RD 32 O READ: La luz estroboscópica de lectura indica que el procesador está realizando un ciclo
de lectura de memoria o E/S, según el estado del pin IO/M o S2. Esta señal se utiliza para
leer dispositivos que residen en el bus local 8088. RD está activo en BAJO durante T2, T3
y Tw de cualquier ciclo de lectura y se garantiza que permanecerá en ALTO en T2 hasta
que el bus local 8088 haya flotado.

Esta señal flota a 3 estados APAGADO en "reconocimiento de espera".

2
READY 22 I READY: Es el reconocimiento de la memoria direccionada o del dispositivo de I/O de que
completará la transferencia de datos. La señal RDY de la memoria o de I/O es sincronizada
por el generador de reloj 8284 para formar LISTO. Esta señal es ALTA activa. La entrada
8088 READY no está sincronizada. No se garantiza el funcionamiento correcto si no se
cumplen los tiempos de configuración y mantenimiento.

INTR 18 I INTERRUPT REQUEST: Es una entrada activada por nivel que se muestrea durante el
último ciclo de reloj de cada instrucción para determinar si el procesador debe entrar en una
operación de reconocimiento de interrupción. Una subrutina se vectoriza a través de una
tabla de búsqueda de vectores de interrupción ubicada en la memoria del sistema. Se puede
enmascarar internamente mediante el restablecimiento del software del bit de habilitación
de interrupción. INTR está sincronizado internamente. Esta señal es ALTA activa.

TEST 23 I TEST: La entrada es examinada por la instrucción "esperar prueba". Si la entrada de


PRUEBA es BAJA, la ejecución continúa; de lo contrario, el procesador espera en un
estado "inactivo". Esta entrada se sincroniza internamente durante cada ciclo de reloj en el
frente de CLK.

NMI 17 I NON-MASKABLE INTERRUPT: Es una entrada activada por flanco que provoca una
interrupción de tipo 2. Una subrutina se vectoriza a través de una tabla de búsqueda de
vectores de interrupción ubicada en la memoria del sistema. NMI no es enmascarable
internamente por software. Una transición de BAJO a ALTO inicia la interrupción al final
de la instrucción actual. Esta entrada está sincronizada internamente

RESET 21 I RESET: Hace que el procesador finalice inmediatamente su actividad actual. La señal
debe estar activa ALTA durante al menos cuatro ciclos de reloj. Reinicia la ejecución como
se describe en la descripción del conjunto de instrucciones cuando RESET devuelve LOW,
RESET está sincronizado internamente.

CLK 19 I CLOCK: Proporciona la temporización básica para el procesador y el controlador de bus.


Es asimétrico con un ciclo de trabajo del 33 % para proporcionar una sincronización interna
optimizada.

Vcc 40 Vcc: Es el pin de fuente de alimentación de +5V ±10%

GND 1, 20 GND: Son los pines de tierra.

MN/MX 33 I MINIMUM/MAXIMUM: Indica en qué modo operará el procesador. Los dos modos se
describen en las siguientes secciones.

3
Las siguientes descripciones de funciones de pines son para el modo mínimo 8088 (es decir, MN/MX = Vcc). Solo
se describen las funciones de los pines que son exclusivas del modo mínimo; todas las demás funciones de los pines
son como se describe arriba

SÍMBOLO N° DE PIN TIPO NOMBRE Y FUNCIÓN

IO/M 18 O STATUS LINE: Es un modo máximo invertido S2. Se utiliza para


distinguir un acceso a memoria de un acceso de I/O. IO/M se vuelve
válido en el T4 anterior a un ciclo de compra y sigue siendo válido hasta
el T4 final del ciclo (I/O = ALTO, M = BAJO). IO/M flota a 3 estados
APAGADO en bus local "retención de reconocimiento".

WR 29 O WRITE: La luz estroboscópica indica que el procesador está realizando


un ciclo de E/S de memoria de escritura, según el estado de la señal de
I/O. WR está activo para T2, T3 y Tw de cualquier ciclo de escritura.
Está activo en BAJO y flota a 3 estados APAGADO en el bus local
"reconocimiento de retención".

INTA 24 O INTA: Se utiliza como una luz estroboscópica de lectura para los ciclos
de reconocimiento de interrupción. Está activo en BAJO durante T2, T3
y Tw de cada ciclo de reconocimiento de interrupción.

ALE 25 O ADDRESS LATCH ENABLE: Lo proporciona el procesador para


bloquear la dirección en un pestillo de dirección. Es un pulso ALTO
activo durante el reloj bajo de T1 de cualquier ciclo de bus. Tenga en
cuenta que ALE nunca flota.

DT/R 27 O DATA TRANSMIT RECEIVE: Se necesita en un sistema mínimo que


desee utilizar un transceptor de bus de datos. Se utiliza para controlar la
dirección del flujo de datos a través del transceptor. Lógicamente, DT/R
es equivalente a la temporización S1 en el modo máximo, y su
temporización es la misma que para IO/M (T=HIGH, R=LOW). Esta
señal flota a 3 estados APAGADO en "reconocimiento de retención"
local.

DEN 29 O DATA ENABLE: Se proporciona como una habilitación de salida para


el transceptor de bus de datos en un sistema mínimo que utiliza el
transceptor. DEN está activo en BAJO durante cada acceso a memoria y
I/O y para ciclos INTA. Para un ciclo de lectura o INTA está activo desde
la mitad de T2 hasta la mitad de T4, mientras que para un ciclo de
escritura está activo desde el comienzo de T2 hasta la mitad de T4. DEN
flota a 3 estados APAGADO durante el "reconocimiento de espera" del
bus local.

HOLD, 31, 30 I, O HOLD: Indica que otro maestro está solicitando un bus local "en
HLDA espera". Para ser reconocido, HOLD debe estar activo en ALTO. El
procesador que recibe la solicitud de "retención" emitirá HLDA (ALTO)
como reconocimiento en medio de un ciclo de reloj T4 o Ti.
Simultáneamente con la emisión de HLDA, el procesador hará flotar el
bus local y las líneas de control. Después de que se detecta que HOLD
está en BAJO, el procesador reduce HLDA y cuando el procesador
necesita ejecutar otro ciclo, volverá a activar el bus local y las líneas de
control HOLD y HLDA tienen resistencias pull-up internas.
Hold no es una entrada asíncrona. Se debe proporcionar sincronización
externa si el sistema no puede garantizar el tiempo de configuración.

4
SSO 34 O STATUS LINE: Es lógicamente equivalente a SO en el modo máximo.
La combinación de SSO, IO/M y DT/R permite que el sistema
decodifique completamente el estado actual del ciclo del bus.

Las siguientes descripciones de funciones de pines son para el sistema 8088/8288 en modo máximo (es decir,
MN/MX=GND). Solo se describen las funciones de los pines que son exclusivas del modo máximo; todas las demás
áreas pinfunctions descritas anteriormente.

SÍMBOLO N° DE PIN TIPO NOMBRE Y FUNCIÓN

S2, S1, S0 26-28 O STATUS: Está activo durante el reloj alto de T4, T1 y T2, y regresa al
estado pasivo (1, 1, 1) durante T3 o durante Tw cuando READY está en
ALTO. Este estado es utilizado por el controlador de bus 8288 para
generar todas las señales de control de acceso a E/S y memoria.
Cualquier cambio de S2, S1 o S0 durante T4 se usa para indicar el
comienzo de un ciclo de bus, y el regreso al estado pasivo en T3 y Tw
se usa para indicar el final de un ciclo de bus. Estas señales flotan a 3
estados APAGADO durante el "reconocimiento de retención". Durante
el primer ciclo de reloj después de que RESET se activa, estas señales
están activas en ALTO. Después de este primer reloj, flotan a 3 estados
APAGADO.

RQ/GT0, 30,31 I/O REQUEST/GRANT: Los pines son utilizados por otros maestros de
RQ/GT1 bus local para obligar al procesador a liberar el bus local al final del
ciclo de bus actual del procesador. Cada pin es bidireccional y RQ/GT0
tiene mayor prioridad que RQ/GT1, RQ/GT tiene una resistencia
pull-up interna, por lo que puede dejarse sin conectar. La secuencia de
solicitud de concesión es la siguiente.
1. Un pulso de un CLK de ancho desde otro maestro de bus local indica
una solicitud de bus local ("retener") al 8088 (pulso 1).
2. Durante un ciclo de reloj T4 o TI, un pulso de un reloj de ancho
desde el 8088 hasta el maestro solicitante (pulso 2) indica que el 8088
ha permitido que el bus local flote y que entrará en el estado de
"reconocimiento de espera" en el next CLKLa unidad de interfaz de bus
de la CPU se desconecta lógicamente del bus local durante el
''reconocimiento de espera''. Se aplican las mismas reglas que para
HOLDHOLDA cuando se libera el bus.
3. Un pulso de un CLK de ancho desde el maestro solicitante indica al
8088 (pulso 3) que la solicitud de "retención" está a punto de finalizar y
que el 8088 puede reclamar el bus local en el próximo CLK. Luego, la
CPU ingresa a T4.
Cada intercambio maestro-maestro del bus local es una secuencia de
tres pulsos. Debe haber un ciclo CLK inactivo después de cada
intercambio de bus. Los pulsos están activos en BAJO.

5
Si la solicitud se realiza mientras la CPU está realizando un ciclo de
memoria, liberará el bus local durante el T4 del ciclo cuando se
cumplan todas las condiciones siguientes:
1. La solicitud ocurre en T2 o antes.
2. El ciclo actual no es la parte inferior de una palabra.
3. El ciclo actual no es el primer reconocimiento de una secuencia de
reconocimiento de interrupción.
4. Una instrucción bloqueada no se está ejecutando actualmente.
Si el bus local está inactivo cuando se realiza la solicitud, se producirán
dos eventos posibles:
1. El autobús local se liberará durante el próximo reloj.
2. Un ciclo de memoria comenzará dentro de 3 relojes. Ahora se aplican
las cuatro reglas para un ciclo de memoria actualmente activo con la
condición número 1 ya satisfecha.

LOCK 29 O LOCK: Indica que otros maestros del bus del sistema no deben obtener
el control del bus del sistema mientras LOCK está activo (BAJO). La
señal LOCK se activa mediante la instrucción de prefijo "LOCK" y
permanece activa hasta la finalización de la siguiente instrucción. Esta
señal está activa en BAJO y flota a 3 estados apagados en
"reconocimiento de retención".

QS1, QS0 24,25 O QUEUE STATUS: Proporcione el estado para permitir el seguimiento
externo de la cola de instrucciones 8088 interna.
El estado de la cola es válido durante el ciclo CLK después del cual se
realiza la operación de la cola.

— 34 O El pin 34 siempre está alto en modo máximo.

6
8088

8086/8088 Instruction Set Summary


RESUMEN DEL CONJUNTO DE
INSTRUCCIONES
Mnemonic and
Instruction Code
Description
DATA TRANSFER
MOV e Move: 76543210 76543210 76543210 76543210

Register/Memory to/from Register 100010dw mod reg r/m

Immediate to Register/Memory 1100011w mod 0 0 0 r/m data data if w e 1

Immediate to Register 1 0 1 1 w reg data data if w e 1

Memory to Accumulator 1010000w addr-low addr-high

Accumulator to Memory 1010001w addr-low addr-high

Register/Memory to Segment Register 10001110 mod 0 reg r/m

Segment Register to Register/Memory 10001100 mod 0 reg r/m

PUSH e Push:

Register/Memory 11111111 mod 1 1 0 r/m

Register 0 1 0 1 0 reg

Segment Register 0 0 0 reg 1 1 0

POP e Pop:

Register/Memory 10001111 mod 0 0 0 r/m

Register 0 1 0 1 1 reg

Segment Register 0 0 0 reg 1 1 1

XCHG e Exchange:

Register/Memory with Register 1000011w mod reg r/m

Register with Accumulator 1 0 0 1 0 reg

IN e Input from:
Fixed Port 1110010w port
Variable Port 1110110w

OUT e Output to:


Fixed Port 1110011w port
Variable Port 1110111w
XLAT e Translate Byte to AL 11010111

LEA e Load EA to Register 10001101 mod reg r/m


LDS e Load Pointer to DS 11000101 mod reg r/m
LES e Load Pointer to ES 11000100 mod reg r/m
LAHF e Load AH with Flags 10011111
SAHF e Store AH into Flags 10011110
PUSHF e Push Flags 10011100
POPF e Pop Flags 10011101

26

7
8088

8086/8088 Instruction
RESUMEN DELSet Summary
CONJUNTO DE (Continued)
INSTRUCCIONES
Mnemonic and
Instruction Code
Description

ARITHMETIC 76543210 76543210 76543210 76543210


ADD e Add:

Reg./Memory with Register to Either 000000dw mod reg r/m


Immediate to Register/Memory 100000sw mod 0 0 0 r/m data data if s:w e 01
Immediate to Accumulator 0000010w data data if w e 1

ADC e Add with Carry:


Reg./Memory with Register to Either 000100dw mod reg r/m
Immediate to Register/Memory 100000sw mod 0 1 0 r/m data data if s:w e 01
Immediate to Accumulator 0001010w data data if w e 1

INC e Increment:
Register/Memory 1111111w mod 0 0 0 r/m
Register 0 1 0 0 0 reg
AAA e ASCII Adjust for Add 00110111
BAA e Decimal Adjust for Add 00100111
SUB e Subtract:
Reg./Memory and Register to Either 001010dw mod reg r/m
Immediate from Register/Memory 100000sw mod 1 0 1 r/m data data if s:w e 01
Immediate from Accumulator 0010110w data data if w e 1

SSB e Subtract with Borrow

Reg./Memory and Register to Either 000110dw mod reg r/m


Immediate from Register/Memory 100000sw mod 0 1 1 r/m data data if s:w e 01

Immediate from Accumulator 000111w data data if w e 1

DEC e Decrement:
Register/memory 1111111w mod 0 0 1 r/m
Register 0 1 0 0 1 reg
NEG e Change sign 1111011w mod 0 1 1 r/m
CMP e Compare:
Register/Memory and Register 001110dw mod reg r/m

Immediate with Register/Memory 100000sw mod 1 1 1 r/m data data if s:w e 01


Immediate with Accumulator 0011110w data data if w e 1
AAS e ASCII Adjust for Subtract 00111111
DAS e Decimal Adjust for Subtract 00101111
MUL e Multiply (Unsigned) 1111011w mod 1 0 0 r/m
IMUL e Integer Multiply (Signed) 1111011w mod 1 0 1 r/m
AAM e ASCII Adjust for Multiply 11010100 00001010
DIV e Divide (Unsigned) 1111011w mod 1 1 0 r/m
IDIV e Integer Divide (Signed) 1111011w mod 1 1 1 r/m
AAD e ASCII Adjust for Divide 11010101 00001010
CBW e Convert Byte to Word 10011000
CWD e Convert Word to Double Word 10011001

27

8
8088

8086/8088 Instruction
RESUMEN DELSet Summary
CONJUNTO DE (Continued)
INSTRUCCIONES
Mnemonic and
Instruction Code
Description
LOGIC 76543210 76543210 76543210 76543210
NOT e Invert 1111011w mod 0 1 0 r/m

SHL/SAL e Shift Logical/Arithmetic Left 110100vw mod 1 0 0 r/m


SHR e Shift Logical Right 110100vw mod 1 0 1 r/m
SAR e Shift Arithmetic Right 110100vw mod 1 1 1 r/m
ROL e Rotate Left 110100vw mod 0 0 0 r/m
ROR e Rotate Right 110100vw mod 0 0 1 r/m
RCL e Rotate Through Carry Flag Left 110100vw mod 0 1 0 r/m
RCR e Rotate Through Carry Right 110100vw mod 0 1 1 r/m

AND e And:
Reg./Memory and Register to Either 001000dw mod reg r/m
Immediate to Register/Memory 1000000w mod 1 0 0 r/m data data if w e 1
Immediate to Accumulator 0010010w data data if w e 1
TEST e And Function to Flags. No Result:
Register/Memory and Register 1000010w mod reg r/m

Immediate Data and Register/Memory 1111011w mod 0 0 0 r/m data data if w e 1


Immediate Data and Accumulator 1010100w data data if w e 1

OR e Or:
Reg./Memory and Register to Either 000010dw mod reg r/m
Immediate to Register/Memory 1000000w mod 0 0 1 r/m data data if w e 1
Immediate to Accumulator 0000110w data data if w e 1

XOR e Exclusive or:

Reg./Memory and Register to Either 001100dw mod reg r/m

Immediate to Register/Memory 1000000w mod 1 1 0 r/m data data if w e 1

Immediate to Accumulator 0011010w data data if w e 1

STRING MANIPULATION

REP e Repeat 1111001z

MOVS e Move Byte/Word 1010010w

CMPS e Compare Byte/Word 1010011w

SCAS e Scan Byte/Word 1010111w

LODS e Load Byte/Wd to AL/AX 1010110w

STOS e Stor Byte/Wd from AL/A 1010101w

CONTROL TRANSFER
CALL e Call:

Direct Within Segment 11101000 disp-low disp-high


Indirect Within Segment 11111111 mod 0 1 0 r/m

Direct Intersegment 10011010 offset-low offset-high

seg-low seg-high

Indirect Intersegment 11111111 mod 0 1 1 r/m

28

9
8088

8086/8088 Instruction
RESUMEN DELSet Summary
CONJUNTO DE (Continued)
INSTRUCCIONES
Mnemonic and
Instruction Code
Description

JMP e Unconditional Jump: 76543210 76543210 76543210

Direct Within Segment 11101001 disp-low disp-high

Direct Within Segment-Short 11101011 disp

Indirect Within Segment 11111111 mod 1 0 0 r/m

Direct Intersegment 11101010 offset-low offset-high

seg-low seg-high

Indirect Intersegment 11111111 mod 1 0 1 r/m

RET e Return from CALL:


Within Segment 11000011

Within Seg Adding Immed to SP 11000010 data-low data-high

Intersegment 11001011

Intersegment Adding Immediate to SP 11001010 data-low data-high

JE/JZ e Jump on Equal/Zero 01110100 disp


JL/JNGE e Jump on Less/Not Greater 01111100 disp
or Equal
JLE/JNG e Jump on Less or Equal/ 01111110 disp
Not Greater
JB/JNAE e Jump on Below/Not Above 01110010 disp
or Equal
JBE/JNA e Jump on Below or Equal/ 01110110 disp
Not Above
JP/JPE e Jump on Parity/Parity Even 01111010 disp

JO e Jump on Overflow 01110000 disp

JS e Jump on Sign 01111000 disp

JNE/JNZ e Jump on Not Equal/Not Zero 01110101 disp

JNL/JGE e Jump on Not Less/Greater 01111101 disp


or Equal
JNLE/JG e Jump on Not Less or Equal/ 01111111 disp
Greater
JNB/JAE e Jump on Not Below/Above 01110011 disp
or Equal
JNBE/JA e Jump on Not Below or 01110111 disp
Equal/Above
JNP/JPO e Jump on Not Par/Par Odd 01111011 disp

JNO e Jump on Not Overflow 01110001 disp

JNS e Jump on Not Sign 01111001 disp


LOOP e Loop CX Times 11100010 disp

LOOPZ/LOOPE e Loop While Zero/Equal 11100001 disp

LOOPNZ/LOOPNE e Loop While Not 11100000 disp


Zero/Equal
JCXZ e Jump on CX Zero 11100011 disp

INT e Interrupt

Type Specified 11001101 type

Type 3 11001100

INTO e Interrupt on Overflow 11001110

IRET e Interrupt Return 11001111

29

10
8088

8086/8088 Instruction
RESUMEN DEL Set Summary
CONJUNTO DE (Continued)
INSTRUCCIONES
Mnemonic and
Instruction Code
Description
76543210 76543210
PROCESSOR CONTROL

CLC e Clear Carry 11111000

CMC e Complement Carry 11110101

STC e Set Carry 11111001

CLD e Clear Direction 11111100

STD e Set Direction 11111101


CLI e Clear Interrupt 11111010

STI e Set Interrupt 11111011

HLT e Halt 11110100

WAIT e Wait 10011011

ESC e Escape (to External Device) 11011xxx mod x x x r/m

LOCK e Bus Lock Prefix 11110000

REG is assigned according to the following table:


NOTES:
AL e 8-bit accumulator 16-Bit (w e 1) 8-Bit (w e 0) Segment
AX e 16-bit accumulator 000 AX 000 AL 00 ES
CX e Count register 001 CX 001 CL 01 CS
DS e Data segment 010 DX 010 DL 10 SS
ES e Extra segment
011 BX 011 BL 11 DS
Above/below refers to unsigned value
Greater e more positive:
100 SP 100 AH
Less e less positive (more negative) signed values 101 BP 101 CH
if d e 1 then ‘‘to’’ reg; if d e 0 then ‘‘from’’ reg 110 SI 110 DH
if w e 1 then word instruction; if w e 0 then byte 111 DI 111 BH
instruction
Instructions which reference the flag register file as a 16-bit
if mod e 11 then r/m is treated as a REG field
object use the symbol FLAGS to represent the file:
if mod e 00 then DISP e 0*, disp-low and disp-high are
FLAGS e
absent
X:X:X:X:(OF):(DF):(IF):(TF):(SF):(ZF):X:(AF):X:(PF):X:(CF)
if mod e 01 then DISP e disp-low sign-extended to
16 bits, disp-high is absent Mnemonics © Intel, 1978
if mod e 10 then DISP e disp-high; disp-low
if r/m e 000 then EA e (BX) a (SI) a DISP
if r/m e 001 then EA e (BX) a (DI) a DISP DATA SHEET REVISION REVIEW
if r/m e 010 then EA e (BP) a (SI) a DISP
if r/m e 011 then EA e (BP) a (DI) a DISP The following list represents key differences be-
if r/m e 100 then EA e (SI) a DISP
tween this and the -005 data sheet. Please review
if r/m e 101 then EA e (DI) a DISP
if r/m e 110 then EA e (BP) a DISP* this summary carefully.
if r/m e 111 then EA e (BX) a DISP 1. The Intel 8088 implementation technology
DISP follows 2nd byte of instruction (before data if re- (HMOS) has been changed to (HMOS-II).
quired)
*except if mod e 00 and r/m e then EA e disp-high:
disp-low.
if s:w e 01 then 16 bits of immediate data form the oper-
and
if s:w e 11 then an immediate data byte is sign extended
to form the 16-bit operand
if v e 0 then ‘‘count’’ e 1; if v e 1 then ‘‘count’’ in (CL)
register
x e don’t care
z is used for string primitives for comparison with ZF FLAG
SEGMENT OVERRIDE PREFIX
0 0 1 reg 1 1 0

30

11

También podría gustarte