Documentos de Académico
Documentos de Profesional
Documentos de Cultura
ARQUITECTURA DE COMPUTADORAS
LABORATORIO
PC XT 8088-8086
PRÁCTICA #1
PC XT 8088-8086
INDICE
INTRODUCCIÓN...................................................................................................................................................3
CAP.1 - HARDWARE COMPUTADORA PERSONAL...................................................................................4
PC XT 8088-8086....................................................................................................................................................4
1. SISTEMAS QUE COMPONEN LA COMPUTADORA XT...............................................................4
2. CARACTERÍSTICAS DEL PROCESADOR 8088/8086......................................................................4
3. FUNCIONAMIENTO EN GENERAL...................................................................................................6
4. SISTEMA DESCRITO POR BLOQUES Y POR CIRCUITOS..........................................................7
5. ESQUEMÁTICO DEL SISTEMA COMPLETO SISTEMA DE APLICACIÓN.............................9
6. MUESTRA DE UNA MAINBOARD XT CON IDENTIFICACIÓN DE DISPOSITIVOS.
ETIQUETADO Y ACCESORIOS.................................................................................................................10
7. REGISTROS DEL 8088.........................................................................................................................12
Registros de propósito general......................................................................................................................13
Registros índice.............................................................................................................................................13
Registros Apuntadores..................................................................................................................................13
Registros de Banderas...................................................................................................................................13
Registros de Segmento..................................................................................................................................14
Registros Apuntador de Instrucciones.........................................................................................................15
8. MODOS DE DIRECCIONAMIENTO.................................................................................................15
9. SET DE INSTRUCCIONES DEL 8088................................................................................................17
1.1. Instrucciones de Transferencia de Datos.....................................................................................17
1.2. Instrucciones Aritméticas..............................................................................................................18
1.3. Lógico..............................................................................................................................................18
1.4. Manipulación de Cadenas.............................................................................................................19
1.5. Control de transferencia................................................................................................................19
1.6. Control del procesador..................................................................................................................19
10. LENGUAJE DE MÁQUINA, MACROENSAMBLADOR DEL 8088..........................................20
Macro Ensamblador IBM...........................................................................................................................20
Macro Ensamblador de Microsoft..............................................................................................................20
Turbo Editassm............................................................................................................................................20
Turbo Assembler..........................................................................................................................................21
11. DEBUGGER Y SIMULADORES DEL 8088..................................................................................21
CAP.2 - CODIFICACIÓN, DEBUG, EMU8086 (PROGRAMA: SUMA, PROMEDIO,
ORDENAMIENTO)............................................................................................................................................23
DIAGRAMA DE FLUJO:.....................................................................................................................................27
SIMULACIÓN DEBUG....................................................................................................................................29
SUMA PROMEDIO DIEZ NÚMEROS................................................................................................................30
SIMULACION EN EMU8086..........................................................................................................................31
2
PROGRAMA ORDENAMIENTO........................................................................................................................31
ALGORTMO BURBUJA..................................................................................................................................31
LISTADO DE INSTRUCCIONES UTILIZADAS...........................................................................................32
Ingresando datos a memoria...............................................................................................................................33
Ingresando datos a memoria...............................................................................................................................35
PROGRANA EMU8086....................................................................................................................................37
ORDENAMIENTO 5 NÚMEROS....................................................................................................................37
IDENTIFICACION LAS INTRUCCIONES UTILIZADAS............................................................................37
FUNCIONES AÑADIDAS POR EMU8086.INC.............................................................................................37
SIMULACIÓN DEBUG....................................................................................................................................39
ORDENAMIENTO 10 NÚMEROS..................................................................................................................39
SIMULACIÓN DEBUG......................................................................................................................................0
REFERENCIAS BIBLIOGRÁFICAS:................................................................................................................0
TAREA....................................................................................................................................................................1
3
INTRODUCCIÓN
El PC XT poseía Concretamente:
MICROPROCESADOR 8088:
El Intel 8088 es un microprocesador de alto rendimiento versión simplificada de su
antecesor, el 8086 que contaba con registros y bus de datos de 16 bits. El 8088 contaba
con registros de 16 bits, con un bus de datos de 8 bits y de direcciones de 20 bits. La
ventaja se encontraba en que el bus de 8 bits coincidía con el bus de datos de la placa
5
base. Sin embargo, se requería la ayuda de un Coprocesador Intel 8087 para operaciones
aritméticas de coma flotante, es implementado en canal N, carga de agotamiento, puerta
de silicio tecnología (HMOS-II), y empaquetado en un paquete CERDIP de 40 pines. El
procesador tiene atributos de microprocesadores de 8 y 16 bits. Es directamente
compatible con el software 8086 y el hardware y los periféricos 8080/8085.
MICROPROCESADOR 8086:
La CPU Intel 8086 de alto rendimiento de 16 bits está disponible en tres velocidades de
reloj: 5, 8 y 10 MHz. La CPU es también implementado en canal N, carga de
agotamiento, tecnología de puerta de silicio (HMOS-III), y empaquetado en un pin de 40
pines CERDIP o paquete de plástico. El 8086 funciona tanto en configuraciones de
procesador único como de procesador múltiple para lograr altos niveles de rendimiento.
8086 8088
Capacidad de direccionamiento Capacidad de direccionamiento directo 1
directo 1 MB de memoria. MB de memoria.
8 bits y 16 bits con y sin signo 8 bits y 16 bits con y sin signo aritmético
aritmético en binario o decimal en binario o decimal incluyendo
incluyendo multiplicar y dividir. multiplicar y dividir.
3. FUNCIONAMIENTO EN GENERAL
“La función básica de una computadora es ejecutar programas, el cual está 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
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.”
A8 – A15: Estas líneas son la salida de los bits A8 – A15 de dirección para memoria y
E/S en cada ciclo del bus. No están multiplexadas y permanecen estables durante el ciclo
del bus. En la PC, esta información de dirección se asegura (latched) y se convierte en los
bits A8 – A15 de dirección del bus del sistema.
A16/S3 – A19/S6: Al inicio de cada ciclo del bus para memoria, estas señales llevan los
bits A16 – A19 de dirección de memoria. Durante el resto del ciclo, presentan el estado
interno del 8088. Cuando S6 es bajo, S5 da el estado de habilitación de la bandera de
interrupción, y S4 y S3 se codifican para decir cual registro de segmento se está usando.
En la PC no se usa esta información de estado. Estas líneas se aseguran y se convierten en
los bits A16 – A19 de dirección del bus del sistema.
RQ/GT0: Es una señal bidireccional usada por otros maestros de bus local para solicitar
el uso del bus local. En la PC, esta línea se conecta a un enchufe de procesador auxiliar,
compatible con el coprocesador numérico 8087.
RQ/GT1: Realiza la misma función que RQ/GT0, pero tiene un nivel de prioridad más
bajo. En la PC no se usa.
LOCK: Se activa por una instrucción de seguro (lock) y permanece activa hasta el final
de la siguiente instrucción. Se usa para indicar a otros maestros de bus que no deben
intentar ganar el control del bus. Debido a que el diseño de la PC no es de bus
multimaestro, esta línea no se usa.
READY: Esta línea de entrada se usa para insertar estados de espera en los ciclos del bus
del 8088 y, así, extender la longitud del ciclo. En la PC, esta línea viene del reloj 8284A,
el cual lo sincroniza con el reloj del sistema. La PC usa la función READY para insertar
un estado de espera en todos los accesos de puerto de E/S y DMA, y proporciona una
función de generación de estados de espera en el bus del sistema.
RESET: Se usa para detener al microprocesador. En la PC, esta señal viene del reloj
8284A, el cual recibe su entrada de la fuente de energía del sistema. La fuente del sistema
genera una señal llamada energía buena, la cual indica que los niveles de energía están en
niveles adecuados y el RESET se puede remover del 8088.
QS0 y QS1: Estas líneas de salida dan el estado de la cola de instrucción interna. En la
PC, estas líneas están alambradas con el enchufe del procesador auxiliar de tal manera
que puede seguir el estado de la cola del 8088.
TEST: Este pin de entrada se prueba por la instrucción espera de prueba. Si está en bajo,
la ejecución continua; si está en alto, el 8088 espera en un estado de ocioso hasta que la
pata va a bajo. En la PC, se alambra con la salida BUSY del 8087.
S0, S1 y S2: Estas salidas presentan información del estado que pertenece al tipo de ciclo
de bus que será ejecutado. En la PC, estos bits se alambran al controlador de bus 8288,
donde se decodifican. Las salidas decodificadas del 8088 se convierten en las líneas de
control del bus del sistema.
Disquetera de PC XT y Controlador
Los registros de propósito 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 High (alto) y L significando Low (bajo), indicando la parte alta o la parte baja
del registro correspondiente de 16 bits (ver esquema). Un programa podía usar tanto los
registros de 16 bits como los registros de 8 bits. Aparte del uso general de los registros para
hacer cálculos aritméticos y lógicos, existen instrucciones que usan estos registros con un uso
particular especializado, como se indica a continuación:
Registro AX: El registro AX es el registro acumulador, es utilizado para operaciones
que implican entrada/salida, multiplicación y división (estas dos últimas en conjunto
con el registro DX)
Registro BX: El registro BX es el registro base, y es el único registro de propósito
general que puede ser un índice para direccionamiento indexado
Registro CX: El registro CX es conocido como el registro contador. Puede contener
un valor para controlar el número de veces que un ciclo se repite o un valor para
corrimiento de bits
Registro DX: El registro DX es el registro de datos. En algunas operaciones se indica
mediante este registro el número de puerto de entrada/salida, y en las operaciones de
multiplicación y división de 16 bits se utiliza junto con el acumulador AX
Registros índice
Los registros SI y DI están disponibles para direccionamiento indexado y para operaciones de
cadenas de caracteres.
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.
Registro DI: El registro índice destino también es requerido por algunas operaciones
con cadenas de caracteres. El DI está asociado con el segmento ES.
Registros Apuntadores
Los registros SP (apuntador de pila) y BP (apuntador base) están asociados con el registro SS
y permiten al sistema acceder a datos en el segmento de la pila.
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 automática este registro,
aunque el programa puede hacer ciertas manipulaciones con él.
Registro BP: El apuntador base de 16 bits facilita la referencia de parámetros dentro
de la pila.
Registros de Banderas
Es un registro de 16 bits, de los cuales nueve sirven para indicar el estado actual de la
máquina y el resultado del procesamiento. Muchas instrucciones aritméticas y de
comparación cambian el estado de las banderas y apoyándose en ellas se pueden tomar
decisiones para determinar la acción 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 posición 0 la encontraremos a la derecha y la posición
15 a la izquierda.
14
8. MODOS DE DIRECCIONAMIENTO
En el 8086/8088, los parámetros (operadores) de una instrucción pueden ser de tres tipos:
Registros internos de la CPU,
Valores inmediatos,
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.
16
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
o Base. Un registro base (BX o BP) tienen la dirección de donde se tomará
el dato.
Ej. MOV AX, [BX]
o Índice. Un registro índice (SI o SI) tienen la dirección de donde se tomará
el dato.
Ej. MOV AX, [SI]
o 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]
o Í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]
o 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]
o 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]
MOV Transfiere
XCHG Intercambia
IN Entrada
OUT Salida
XLAT Traduce usando una tabla
LEA carga la dirección efectiva
PUSH Banderas de empuje
18
POP Destino sp
LDS Carga el segmento de datos
LES Carga el segmento extra
LAHF Carga los indicadores en AH
SAHF Almacena AH en banderas
PUSHF Empuje de banderas
POPF Banderas pop
SUB Resta
SBB Resta con acarreo negativo
DEC Decremento
NEG Cambio de signo
CMP Compara
AAS Ajuste ASCII para sustraer
DAS Ajuste decimal para sustraer
MUL Multiplicación
IMUL Multiplicación entera
AAM Ajuste ASCII para multiplicar
DIV División
IDIV División entera
AAD Ajuste ASCII para dividir
CBW Convierte Byte a palabra
CWD Convierte palabra a doble palabra
1.3. Lógico
NOT Invierte
SHL/SAL Cambio lógico/Desplazamiento aritmético a la izquierda
SHR Cambio lógico a la derecha
SAR Cambio aritmético a la derecha
ROL Girar a la izquierda
ROR Girar a la derecha
RCL Rotación a través de acarreo a la izquierda
RCR Rotación a través de acarreo a la derecha
AND Producto lógico
TEST Revisa
OR Suma lógica
XOR Suma lógica exclusiva
19
ENSAMBLADORES Y MACROENSAMBLADORES:
De Borland Intl., es muy superior al Turbo Editassm. Trabaja de la misma forma, pero
proporciona una interfaz mucho más fácil de usar y un mayor conjunto de utilerías y
servicios.
En lo que se refiere a las presentes notas, nos enfocaremos al Microsoft Macro
Assembler v4.0. Los programas ejemplo han sido desarrollados con éste y está
garantizado su funcionamiento. Estos mismos programas posiblemente funcionen con
otros ensambladores sin cambios o con cambios mínimos cuando utilizan directivas o
pseudoinstrucciones.
Realmente la diferencia entre los ensambladores radica en la forma de generar el código
y en las directivas con que cuente, aunque estas diferencias son mínimas. El código
ensamblador no cambia puesto que los microprocesadores con los que se va a trabajar
son comunes. Así, todos los programas que se creen con un ensamblador en particular
podrán ser ensamblados en otro, cambiando las pseudo-operaciones no reconocidas por
el equivalente indicado en el manual de referencia del paquete empleado. El Microsoft
Macro Assembler v4.0 crea código ejecutable para procesadores 8086, 8088, 80186,
80188, 80286, 8087 y 80287. Además, es capaz de aprovechar las instrucciones del
80286 en la creación de código protegido y no protegido.
1) q // salga de DEBUG
2) r // mira los registros y la siguiente instrucción a ejecutar
3) u // Desmontar el lenguaje de máquina nuevamente en ensamblador. SIN
EMBARGO, NOTA:
Insertando valores (01, 02, 03, 04, 01) en la dirección 0200h, 0201h, 0202h,
0203h, 0204h de la memoria:
Programa en Debug:
Para insertar el código se utilizó el comando a.
Compilando:
Para copilar el programa se utilizó el comando u.
Resultado final
Verificamos que el puntero de programa este en 0100
25
Como vimos la suma de los valores es 0Bh lo cual es 11 en sistema decimal y está
almacenado en la posición 0205h.
También podemos observar que el promedio es 02 en decimal y hexadecimal y que además
está almacenado en la posición 0206h como habíamos indicado.
SUMA PROMEDIO DIEZ NÚMEROS
A continuación, mostramos el programa empleado para la suma y promedio de 10 números:
Insertando valores a sumar
Código empleado
26
Resultado:
Como vimos la suma de los valores es 18h lo cual es 24 en sistema decimal y está
almacenado en la posición 020Ah.
También podemos observar que el promedio es 02 en decimal y hexadecimal y que además
está almacenado en la posición 020Bh como habíamos indicado.
PROGRAMA EMU8086
SUMA PROMEDIO CINCO NÚMEROS
A continuación presentamos el diagrama de flujo del código que utilizaremos el programa
Emu8086, el cual nos permite realizar aplicaciones más complejas para el lenguaje
ensamblador.
Las funciones que se utilizaron para la elaboración de este programa son:
INT16h: Interrupción por teclado.
ADD: Permite sumar registros.
MOV: Mover el valor de memoria/ registro a memoria/registro.
DIV: Dividir registro al entre el registro cl.
INT21h: Permite llamar a la pantalla de comandos CMD.
CALL: Permite llamar procedimientos.
ADD: Permite sumar entre
registros. Funciones añadidas por la librería
emu8086.inc
DIAGRAMA DE FLUJO:
A continuación presentamos el diagrama de flujo del programa, el cual explica la lógica
empleada y que puede aplicarse a la suma y promedio de n números.
28
CODIGO ENSAMBLADOR
A continuación pasaremos a mostrar el código en lenguaje ensamblador:
NOTAS:
Se crea un vector “Suma” con los números ingresados.
La división para hallar el promedio se realiza en la línea 14 (div cl).
29
SIMULACIÓN DEBUG
El programa nos abrirá una ventana CMD, la cual nos pedirá que ingresemos los cinco
números. Una vez terminado de ejecutarse nos devolverá la suma y el promedio de estos
números.
Como vemos simulamos con los mismos valores que utilizamos en el programa hecho en Debug y
obtuvimos los mismos resultados.
30
SIMULACION EN EMU8086
Como podemos observar tenemos los mismos resultados que los obtenidos con el programa
empleado en Debug.
PROGRAMA ORDENAMIENTO
ALGORTMO BURBUJA
Este método consiste en acomodar el vector moviendo el mayor hasta la última casilla y
comenzando desde la casilla cero del vector hasta haber acomodado el número más
grande en la última posición.
Una vez acomodado el más grande, prosigue a encontrar y acomodar el siguiente más
grande comparando de nuevo los números desde el inicio del vector, y así sigue hasta
ordenar todo los elementos el arreglo.
Una manera simple de expresar el ordenamiento de burbuja en pseudocódigo es la
siguiente:
32
Es basado en este algoritmo que procedimos a armar nuestro código, el cual tiene como
finalidad devolvernos los numero entregados debidamente ordenados de mayor a menor.
PROGRAMA DEBUG
PROGRAMA ORDENAMIENTO 5 NÚMEROS
Basados en el método burbuja pasaremos a mostrar un programa que realiza el
ordenamiento de 5 números.
Ingresando datos a memoria
Copilando código
Resultados
Verificando que el puntero de programa este en 0106 que es donde inicia nuestro programa
35
Antes
Después
Copilando código
36
Resultados
Antes:
Después:
37
Se puede observar que ambos programas son iguales, solo varían el número de
iteraciones del bucle que compara los valores de los casilleros de memoria.
PROGRANA EMU8086
Para poder realizar el programa de ordenamiento en emu8086 procedimos a crear un vector
de n elementos, los cuales serán ordenados mediante nuestro programa y serán mostrados
en una pantalla mediante una interrupción de DOS.
ORDENAMIENTO 5 NÚMEROS
Para realizar el ordenado de 5 números se utilizaron, además de las antes
mencionadas, las siguientes instrucciones:
IDENTIFICACION LAS INTRUCCIONES UTILIZADAS
INT16h: Interrupción de teclado
INT21h: Permite llamar a la pantalla de comandos CMD.
CMP: Compara dos valores mediante resta.
LOOP: Crea un loop que tiene como contador a Cx.
JNGE: Salto si menor
DIV: Divide el registro Ax y el resultado lo almacena en Ax.
CALL: Permite llamar procedimientos.
ADD: Permite sumar entre registros.
FUNCIONES AÑADIDAS POR EMU8086.INC
PRINT ”_”: Permite mostrar textos en la ventana de comandos.
PRINT_NUM: Permite imprimir el numero almacenado en Ax.
SCAN_NUM: Permite identificar el número que se ha ingresado a la pantalla de
comandos y lo almacena en Cl.
A continuación pasaremos a mostrar el código que realizamos en el programa emu8086
38
39
SIMULACIÓN DEBUG
El programa al iniciarse nos pedirá que ingresemos cinco números, luego este los
ordenara y nos retornara los números de menor a mayor.
Como podemos observar tenemos el mismo resultado que el que obtuvimos utilizando el
programa debug.
ORDENAMIENTO 10 NÚMEROS
A continuación pasaremos a mostrar el código empleado para el ordenamiento de 10
números. Es importante aclarar que este es el mismo utilizado anteriormente, solo que se ha
variado el número de iteraciones del bucle.
40
SIMULACIÓN DEBUG
El programa al iniciarse nos pedirá que ingresemos cinco números, luego este los
ordenara y nos retornara los números de menor a mayor.
Como podemos observar tenemos el mismo resultado que el que obtuvimos utilizando
el programa debug.
REFERENCIAS BIBLIOGRÁFICAS:
I. https://www.alpertron.com.ar/8088.HTM
II. https://www.archive.ece.cmu.edu/~ece740/f11/lib/exe/fetch.php?media=wiki:8086-
datasheet.pdf
III. http://members.tripod.com/wingsze_liu/trabajos_A8.htm
IV. http://liliaevans.galeon.com/unidaduno.htm
V. http://core.ecu.edu/csci/wirthj/Assembly8088/debug.html
VI. https://www.digchip.com/datasheets/parts/datasheet/227/8088-pdf.php
1
TAREA
2. Periféricos de computadora
Una computadora puede calcular y procesar muy bien por sí misma, pero con
periféricos, puede compartir sus resultados y aceptar datos adicionales. Un
dispositivo periférico puede ser estándar, como un monitor que le permite ver lo
que está haciendo su computadora, o un mouse que mueve el cursor a diferentes
puntos de la pantalla o le permite realizar operaciones sin teclas complejas o
comandos. Las empresas pueden beneficiarse al encontrar los tipos correctos de
periféricos para las computadoras de su lugar de trabajo.