UAM5688
UAM5688
UAM5688
/
CARRERA : LICENCIADO EN COMPUTACI~N.
MATRICULA : 90323070
INTRODUCCION................................................................................................................................. 2
EDITOR............................................................................................................................................ 29
COMPONENTES G ~ F I C O................................................................................................................
S 30
MENUS............................................................................................................................................. 30
MICROAYUDA ................................................................................................................................... 31
VENTANADEL SIMUIADOR................................................................................................................ 32
REGISTROS APUNTADORES E iNDlCES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
REGISTROS DE SEGMENTO. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
MODOSDE DIRECCIONAMIENTO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
Registros Internos del Microprocesador ............................................................................................ 37
EJEMPLOS DE APLICACIdN: ............................................................................................................... 37
Carga de datos: ................................................................................................................................. 37
.......................
INFORMACIóN TÉCNICA DEL FUNCIONAMIENTO INTERNO DEL SOFTWARE 49
INFORMACldN TÉCNICA DEL FUNCIONAMIENTO
INTERNO DEL SOFTWARE (MANUAL
TÉCNICO) .............50
Arquitectura InternaBAsica del SistemaMínimo 8088 ...................................................................... 50
Ciclo de Fetkh. (algoritmo llamadoSiguiente-click, localizado en la forma 1. frm) ............................. 50
PROCEDIMIENTO DE EDICIóN DEPROGRAMAS............................................................................. 65
CONCLUSIONES .............................................................................................................................. 66
APENDICE......................................................................................................................................... 67
Codigo Fuente................................................................................................................................... 67
BlBLlOGRAFlA................................................................................................................................ 123
INTRODUCCI~N.
El nacimiento del microprocesador ha sido uno de los avances signiticativos que cambio la historia de la
humanidad, hoy en &a se ha convertido en indispensable porque se utiliza en áreas de vital importancia parael
ser humano.
El microprocesador 8088 es predecesor de una gran familia, esto se da porqué actualmente está familia de
microprocesadoreses la más empleada comercialmente enel mundo. Porlo anterior es necesario que lasnuevas
generaciones de estudiantesrelacionados con el desarrollo en computacióna bajo nivel, cotlozcan el
funcionamiento de esta familia. Se estudia al microprocesador 8088 porque conocido su funcionamiento, es fácil
de aprenderel funcionamiento delos demás elementos de esa familia.
La tecnología actual hace posibley necesario que el aprendizaje en el ámbito computacional se haga más
eficiente,
hacibndolo más dinhico, interesante y agradable. Paraaprender el funcionamiento
de un
microprooesador se puede emplear el apoyo de una herramienta que virtualmente funcione como un micro
procesador, proporcionando información gráfica de cada uno de sus componentes, así como de proporcionar
le proporcione. Est6 herramienta sele comce como simulador
resultados, según las condiciones iniciales que se
de rnicroprocesador.
ResePia Histótica, comenzando por una descripción tecnol6gicaevolutiva del microprocesador a Iravés del
liempo,desde su invención,abarcando su desarrollo temoldgico hasta el quecompete en esteproyecto,
mencionando induso los más recientes.
Arquileckrra del microprocesador, permitiráuna comprensión más fácil al estudiante, dados sus esquemas y
diagramas simplificandosu esktdio y funciones atrgveZ del despliegue de cuadros dedialago con el fin de e>cplicar
cada componente.
Informaci6n thcnica del funcionamiento interno del software. manual t4cnico y del usuario, conlormado para
poder realizar consultas y el estudio dela r e d i c i h del simulador.
Condusiones personalesy el &digo del sistema. Conformadopor el &diga fuente del simulador
c
Simulador del Sistema Mínimo Intel 8088
Proyecto Terminal
INTEL 3000
La familia3000deINTELconstituye un procesadormicroprogramableconstituidoconelementos de 2 bits
concatenables para ampliar la longitud de palabra. Esta realizado en tecnología Schottky TTL con lo que se alcanzan
ciclos de microinstrucciones de 160 ns. La arquitectura es tal que permite confeccionar un calculador de palabra de
cualquier longitud en incrementos de 2 bits, añadiendo hardware complementario, se consiguen mejores características
incluso la de velocidad.
El microprograma se almacena en ROM bipolares convencionales. El chip 3001, que es la unidad de control del
microprograma (MPU), genera la secuencia de direcciones de ROM analizando la microinstrucción actual, los bits de
estado y 8 bits de la macroinstrucción extraída del almacenamiento principal. La MPU es capaz de realizar hasta 16
tipos distintos de bifurcación pero no tiene previsto realizar bifurcaciones guardando dirección de retorno, con lo que
quedan inhabilitadas las subrutinas en el microprograma. (De todas formas existen métodos para manejar rutinas con
hardwareexterno).E!chipquecompleta el procesadores el 3002, ElementoProcesadorCentral(CPE).CadaCPE
contiene una unidadaritmética(ALU)de 2 bits, unregistrodedireccióndememoria,unacumuladory 11 registros
generales. Dispone de salidas de carry para generar ripple-carry o look-ahead.Una característica poco usual de la CPE
es que incluye un bus de mascaras, el bus K. El acumulador y el bus de entrada de la ALU son enmascaradas por el
bus K que realiza la función lógica y con ellos.
Cada microinstrucción mueve datos desde un bus de entrada especificado o desde un registro, hacia un destino
seleccionado, a través de la ALU. La microinstrucción incluye el código de función de la ALU, bits de control de estado,
ysaltoscondicionaleshacia la próximamicroinstrucción,ytodo ello seejecutaen un Únicociclo de 160ns.
Disponiendo hardware externo, concretamente un conjunto de latches entre ROM y CPE. la ejacución puede sola;?arse
con la extracción (fetch) de la siguiente microinstrucción. Con ello los ciclos c ' ? microinstrticcior;es quedan reducidos a
120 ns.
INTEL 4004
El Intel 4004 es elprimermicroprocesadoraparecidoenelmercadoymiembrode la familiaMCS-4,conjunto
microcornputador de 4 bits. La estructura de direccionado es tal que existe diferenciación entre programas y datos,
tantodesde el punto de vistadelmediodealmacenamientocomodelsistemadedireccionado. El MCS-4puede
parecer a primera vista difícil de manejar dadas sus características, perouna vez que ha sido asimilado se convierte en
un potente y completo conjunto. El MCS-4 esta constituido por chips que realizan las funciones de CPU, RAM y ROM
(con entradas y salidas en el mismo chip) y pueden ser interconectados con varios medios de almacenamiento. Las
comunicaciones entre los chips se realizan a través de un Único bus de 4 bits, lo cual permite que todos los chips del
MCS-4esténrealizadosencircuitosintegradosdual-inlinede 16 patillas; peroestoescausadeque el ciclode
instrucción sea lento ya que debe recurrirse a un uso multiplexado del bus, y los tiempos de ejecución son 10.8 o 21.6
microsegundos ( según las instrucciones de que se trate). El microprocesador tiene un conjunto de registros para uso
general constituido por 16 registros de 4 bits además de un acumulador, también de 4 bits. Las direcciones de retorno
se almacenan en un stack de 4 posiciopes, en el cual el dígito seleccionado 8': el contador de programa actual. El stack
ypor lo tanto el contadordeprogramaesde12 bits con lo cual la capacidaddedireccionadoesde4Kbitsde
programa. Las instrucciones no pueden hacer referencia a datos por medio de un direccionado directo: únicamente se
dispone del modo de direccionado indirecto a traves de registro. Para seleccionar un dato almacenado es necesaria
una secuencia entera de instrucciones. Únicamente una cuidadosa colocación de los datos en la memoria RAM puede
hacer menos difícil el direccionado.
INTEL 4040
De la misma forma
que la experiencia
con el 8008fue
utilizada
por Intel para
desarrollar un modelo
perfeccionado, el 8080, por la experiencia con el 4004 se crearon las especificaciones para el 4040. De todas formas
no hay una relación de proporcionalidadentre8008-8080y4004-4040. El 4040siguesiendounchip P-MOS de
Alejandro Montejo 4
Simulador del Sistema Mínimo I n t e l 8088
Proyecto Terminal
velocidad lenta, ahora bien la mayoría de los defectos del 4004 han sido solventados en el. El 4040 comparado con el
4004 ofrece las siguientes diferencias:
4004 4040
Cápsula 16 Terminales 24 Terminales
Espacio en ROM 4K 8K
Numero De Registros 16 24
Instrucciones Lógicas NO SI
Interrupciones NO SI
Instrucciones HALT NO SI
Stack De Dirección De Retorno 4*'12 8* 12
El espacio de memoria para programa ha sido ampliada de 4 K a 8 K creando un nuevo banco de memoria (el
4004 solo tenia un banco de 4 K y el 4040 tiene dos bancos de 4 K ). Dado que el direccionado en las llamadas a rutina
y en lasbifurcacionessiguesiendoatravésderegistrosde12 bits, se hancreadoinstruccionesespecialesde
bifurcación y de llamadas a rutinas entre bancos. Las interrupciones se manejan creando una llamada a subrutina a
una dirección fija de12 bits, pero sin alterar el registro de selección de banco; es necesario pues suplicar en cada
banco las partes iniciales de las subrutina de atención a las interrupciones. Las direcciones de retorno de subrutina se
almacenanen un stack de 8posiciones,con lo que se admitenhastasieteniveles de subrutina.Paraquelas
interrupcionespuedanseratendidasconvienedejarsiempreunniveldechipdeentradaysalida para utilización
universal.
El 8008 es el microprocesador de 8 bits, introducido por Intel después del 4004. Esta realizado con tecnología P-
MOS y tiene una velocidad de operación de unos 20 micro segundos por instrucción; existe una versión mejorada del
mismo, el 8008-1, que realiza las instrucciones en 12.5 micro segundos. La CPU esta organizada internamente como
uncomputadorde 7 registros.Unodeelloses el acumuladorqueeselregistroporelcualpasantodaslas
instruccionesaritméticasydeentradalsalida. El 8008nosoportainstruccionescondireccionamientodirectode
memoria, por lo que todas las referencias a memoria deben hacerse a través de 2 registros de la unidad central. Para
extraer un datos d memoria, el programa debe cargar 2 registros específicos de la CPU con la dirección del dato. Esto
significaquedebenutilizarsepor lo menos 3 instruccionesparacargarundatodememoriaen el acumulador. El
encapsulado en 16 patillas obliga a que todos los datos y direcciones viajen por un Único bus bidireccional de 8 bits.
Lasdirecciones, que sonde14 bits, necesitandosciclosconsecutivos para serenviadashacia el exterior,y en el
entorno del chip debe disponerse de los múltiplexores y latches necesarios para almacenar la dirección. El sistema de
interrupcióndel8008esunmodelodesencillez.Cuandollegaunapeticióndeinterrupción,elprocesadoracaba la
instrucción en cursoeinhibe la incrementacióndelcontadordeprograma,puesemite una señalindicandoqueha
reconocido la interrupción y seguidamente procede a una fase normal de extracción de la próxima instrucción. Unos
circuitosexterioresactivadospor la señal de interrupciónreconocidafuerzanentonces en el bus de datosuna
instrucción, y esta instrucción externa, que generalmente es una llamada a rutina, queda intercalada en la secuencia
delprograma. El 8008presenta un problemaenelmanejodeinterrupciones.Cuandollega una interrupciónes
necesario salvar registros de memoria pero para ello se precisa el uso de los registros de índice, con lo que solo hay
dos soluciones, que son: reservar dos registros al uso exclusivo de las interrupciones o bien utilizar algún truco de tipo
hardware. Esto es una muestra de los efectos secundarios de un sistema de dkeccionado poco elaborado. La aparición
del 8080 ha solucionado la mayoria de estos problemas y por otra parteha beneficiado a la familia 8008 ya que el 8080
ha aparecidoconvarioschipsperiféricoquesonasímismoaplicablesal8008yquesimplificanotablemente la
circuiteria externa del microprocesador.
Alejandro Montejo 5
Simulador del Sistema Minimo I n t e l 8088
Proyecto Terminal
El chip se alimenta con una única tensión de 5 V y existe en una versión patilla a patilla compatible, pero con
EPROM en vez de ROM. Esta versión, 8748, es muy interesante para la realización de prototipos o series cortas, por la
facilidad que ofrece la modificación de la memoria de programa. En cambiola versión 8048 ofrece ventajas económicas
importantes en las series largas. Existe así mismo otra versión 8035, sin memoria de programa para aplicaciones en
quesedeseaajustarexactamente la memoriadelsistemaa la memorianecesariautilizandoROMexternas.Los
8048/8748/8035pueden utilizar lineas deentradalsalidacomolíneasdecomunicaciónconelementosdememoria
externoscuandosedeseaexpandir la capacidadpropiadelchip.Paraeste fin hay una seriededispositivos
directamente conectables sin necesidad de ningún circuito auxiliar. 8243 Extensión de entrada y salidas. Extensión de
la memoria de datos (módulos de 256 * 8 de RAM).8355/8755 Extensión de memoria de programa (módulos de 2 K * 8
de ROM/EPROM). La máxima capacidad de memoria direccionable es de 4K de memoria de programa y 1088 octetos
de memoria de datos. La CPU del 8048 ejecuta un repertorio de 90 instrucciones que incluyen aritmética BCD y que
están codificadas en forma muy eficiente, ocupando solo uno o dos octetos y ejecutándose en uno o dos ciclos de
maquina (2.5 mslciclo). La CPU acepta una interrupción y dispone de un stack de 8 niveles para almacenamiento de
las direcciones de retorno de llamadas a rutina. Las instrucciones del 8038 no ofrecen ningún tipo de compatibilidad
con los de lasseries4000u8000. No obstante, el sistemadedesarrolloMDS-800disponedesoftwarepara
aplicaciones al sistema 48, incluyendo editor ensamblador y monitor para puesta a punto de programas junto con un
emulador en tiemporealdelsistemacon8048(ICE-48). El ultimomiembrode la familiaMSC-48es el 8049,es
compatible pin a pin con los demás miembros de la familia y dispone de2K ROM, y 128 octetos RAM.
INTEL 8080
Este microprocesador de INTEL ha dado nombre a la llamada segunda generación de microprocesadores. aunque
desde el puntodevista de la programaciónescompatibleconsupredecesorsuarquitecturaessubstancialmente
distinta. Nació de la experiencia adquirida con el 8008,8080 ha solucionado todos los inconvenientes mencionados en
la anterior descripción del 8008. Los cambios mas substanciales entre ambos microprocesadores son: en primer lugar
encapsulado en 40patillas en vezde 18, lo quepermitedisponer en paralelo los buses de datosydirecciones
evitándose la necesidaddemultiplexados;ensegundolugar, la utilizaciónde la tecnologiaN-MOSenvez de la P-
MOS. En total, gracias a estas dos circunstancias, la velocidad del 8080 se ha multiplicado por diez. Por otra parte, el
repertorio de instrucciones se ha enriquecido notablemente: por ejemplo, ademas de todas la instrucciones del 8008 se
incluye de aritméticadecimal,saltosindirectos,operacionessobreregistrosydatosdememoria de doblelongitud.
Instrucciones con referencia directa a memoria, instrucciones de manejo de stack, etc. Estructuralmente el 8080 tiene 3
registros de 16 bits y un acumulador. El conjunto de registros puede verse también como siete registros de 8 bits. El
8080 incluye un puntero de stack que se utiliza para crear un stack en memoria y guardar las direcciones de retorno y
datos. Pueden señalarse dos inconvenientes en le 8080 desde el punto de vista del programador se hecha en falta la
ausencia de direccionado indexado y, desde el punto de vista de hardware, es molesta la necesidad que tiene de tres
tensiones de alimentación. Intel ofrece para el 8080 gran cantidad de chips que simplifican la construcción de sistemas
conestemicroprocesador.Entreellos se encuentran:RAM,ROMyPROMdediversasconfiguracionesytamaños,
driver de bus, circuitos de interface de aplicación personal, interface para comunicaciones, generador dereloj, etc.
INTEL 8085
Microprocesador de 8 bits con una estructura y conjunto de instrucciones 100% compatible con el 8080. Se trata
de una versiónmejoradadel8080,peroqueparticipabásicamentedetodassuscaracteristicas.Lasventajasque
ofrece son las siguientes:
a) Más prestaciones
En la velocidad de proceso (ciclo básico de instrucción de 1.3 microsegundos en vez de 2 micro
segundos )
En el sistema de interrupciones (además de la interrupción del sistema 8080, presenta 3 líneas de
interrupción adicionalmente enmascarables por programa y 1 línea de interrupción de alta prioridad
1
b) Mayorsimplicidad de uso
Alimentación a una sola tensión ( 5 V en vez de 5.12 y-12 ).
Generador de reloj incluido en el chip.
Alejandro Montejo 6
Simulador del Sistema Minimo I n t e l 8088
Proyecto Terminal
Decodificador de estados incluido en el chip ( En el sistema 8080 la señales de control para acceso a memoria y
periféricosseemitenpor el busdedatoscodificadosrequiriéndose la utilizacióndeuncircuitoauxiliar,8228, para
almacenar y codificar las señales de control; en el sistema 8085 la función del 8228 esta incluida en el chip y la señal
de control sale directamente por patillas determinadas dela pastilla).
El 8085 esta encapsulado, al igual que el 8080, en una pastilla de 40 patillas, por lo que para poder ofrecer la
señales de control que ofrece el 8085 se ha multiplexado el bus de datos. El bus de direcciones es solo de 8 líneas por
lo que se envían los 8 bits bajos de dirección, y los 8 bits altos se envían por el bus de datos, esto da lugar a que
haya que disponer unos biestables fuera del chip que memorizan la parte alta de la dirección. De todas formas, Intel
ofrece toda una serie de productos de memoria y E/Sdirectamente conectables al 8085 que incluyen los biestables de
dirección alta.Estos dispositivos, orientados específicamente al 8085 son:
4 8155 256*8 RAM, 2*8 16 ports programables y 1 temporizador de 14 bits.
4 8355 2 K * 8 bits ROM y 2 ports de 8 bits programables
+ 8755 2 K * 8 bits EPROM y 2 ports de 8 bits programables
Conelusodeestosdispositivospuederealizarseunsistemacompletocon3chips(CPU8085,memoriade
programa 8355, memoria de datos 8155 y E/S en los anteriores 8155 y 8355). Además del 8085 soporta toda la familia
de productosdelsistema8080(RAM,ROM,EPROM,circuitosdecontroldememoriaycircuitosdecontrolde
periféricos).
INTEL 8086
Es el iniciador de una nueva generación de micro Procesadores de altas prestaciones juntamente con el 28000 y
MC68000, que se distinguen por su nueva arquitectura, ciclos de instrucción por debajo del micro segundo y espacios
dedireccionadodelordende los Mbytes.El8086tieneunalongituddepalabrade16 bits y una capacidadde
direccionamiento de un Megabyte. Contiene internamente un sistema de segmentación de la memoria y puede trabajar
en tres espacios de direccionado, para código, datos y stack. No dispone sin embargo de diferenciación entre modo
sistemaymodoprogramapresentandoalgunaslimitacionespara su utilizacióndeambientesmúlti - usuarios. La
arquitectura del 8086 consiste en dos procesadores asincronos, uno se encarga de la interfase con el bus y contiene
una cola en la que se puede guardar hasta 6 octetos extraídos de la memoria con anticipación, ebotro procesador es el
encargado dela ejecucióndelasinstrucciones.Talarquitecturatienelaventajadequepermite una velocidad de
ejecución de instrucciones extremadamente alta sin exigir que la memoria sea de tiempo de acceso muy pequeño. Su
arquitectura junto a su tecnología H-MOS de gran velocidad permite conseguir un ciclo de instrucción de 400 ns. El
8086 es capaz de soportar configuraciones multiprocesador, disponiendo de las señales LOCK y TESTpara protección
y sincronización. El repertorio de instrucciones es muy completo y potente, incluye multiplicación y división, permite el
manejo de diversos tipos de datos (BCD, bit, octeto, palabra, cadena) y diversos modos de direccionado (24 en total).
El 8086dispone de una ampliagamadecircuitosadicionalesquecomplementan la familiaentre los quesepuede
destacar el 8089quees un controladordecanalconaccesodirectoamemoriayquecontiene una unidadcentral
basada en el propio8086coninstruccionesespecializadaspara la ejecucióndeprogramasdecanal. El soporte
hardware y software para el desarrollo es así mismo muy completo, incluye compiladores de PLM86, ensamblador y el
programa de conversión CONV-86 para compatibilidad con los sistemas 8080 y 8085.
( lnterfaz d e M e m o r l a
BUS-B de
uccioner
-
Unldad Interface
de BUS
Unidad de e)ecuc~ón y
control del slstema
I Yrl I YL
I
I BH I BL I
Unidad
elecucl
Alejandro Montejo 7
I
Simulador del Sistema Mínimo Intel 8088
Proyecto Terminal
INTEL 8088
Se iniciará la exposición de la máquina convencional con el Intel 8088, el "cerebro" de la IBM PC y sus clones, y
como tal, sin duda la CPU de uso mas extendido en el mundo. En el nivel de la máquina convencional, el 8088 y el
8086 sonidénticos,demodoque lo quesemencioneacercadelprimeroaplicaporigualalotro. El 8088 puede
direccionar 220 bytes, numerados de manera consecutiva apartir de O.
Las instrucciones operan ya sea en palabras de 8 o de 16 bits. No se necesita que las palabras inicien en un bit
par, aun cuando el 8086 es un poco más eficiente si esto sucede.
Con 220 bytes de memoria, el 8088 necesita en realidad de direcciones de 20 bits para el direccionamiento de
memoria. Ya que los registros y todo lo demás en la máquina usa palabras de 16 bits, los números de 20 bits son
sumamente inadecuados. Para resolver este problema, los diseñadores de la CPU recurrieron al recupo de usar un
kludge (que en la jerga de cómputo significa una forma torpe y poco elegante de hacer algo). El kludge consistió en
introducir cuatro registros de segmento (códigos, datos, pila y extra), cada una conteniendo una dirección de memoria
que apunta a la base de un segmento de 64K.
Cada registro de segmento apunta a alguna parte dentro del espacio de direccionamiento de 220 bytes. Toda
extracción de instrucciones se hace en forma relativa al registro de segmento de código. Por ejemplo, se éste apunta a
la dirección 96 O 0 0 y el contador de programatiene un valorde 1 204,la siguienteinstrucciónseráextraída de la
dirección 97 204.Con este valor en el registro de segmento de código, se podrán extraer las instrucciones ubicadas en
el rango de direcciones de 96 O00 a 161 535 . Para accesar una instrucción fuera de este rango deberá modificarse el
registro de segmento de código.
Este esquema significa que en cualquier instante, se puede accesar un máximo de 256K de memoria sin cambiar
ningúnregistro de segmento.Algunoscompiladoreslimitan el código(lasinstrucciones)de los programasa 64K y
otros a 64K para los datos y pilas, a fin de evitar la sobrecarga asociada con la carga y almacenamiento constante de
los registros de segmento o la utilización del registro de segmento extra. En teoría, los registros de segmento deberían
tener una dimensión de 20 bits a efecto de apuntar a cualquier dirección dentro del espacio de direccionamiento de 220
bytes. No obstante, como se mencionó anteriormente, el 8088 no está muy bien equipado para trabajar con números
de 20 bits. Este problema se resolvió haciendo que todos los registros de segmento apuntaran sólo a direcciones que
fueran múltiplos de 16 bytes, de modo que los cuatro bits de orden inferior son cero y no tienen que ser almacenados.
De ahí que los registros de segmento contengan sólo 16 bits superiores de las direcciones de20 bits.
El registro DX se usa como una extensión de AX para las instrucciones de multiplicación y división, y almacena la
mitad superior de un producto o dividendo de 32 bits.
Los registros A 0 y AD se usan para operaciones con cadenas de caracteres. Una operación de este tipo requiere
de una dirección de fuente, especificada por el registro A 0 dentro del segmento de datos, y un destino, dado por el
registro AD dentro del segmento extra. Por ejemplo, una instrucción pudiera mover cierto número de bytes de la fuente
al destino.
Alejandro Montejo 8
Simulador del Sistema Mínimo I n t e l 8088
Proyecto Terminal
Por lo regular, los registros AB y AP se emplean para direccionar las pilas. AB apunta a la base de la pila actual y
AP a la parte más alta. Una variable local al procedimiento actual se direcciona normalmente dando el desplazamiento
de AB (ya que no es posible especificar direcciones relativas a AP).
I
Acontinuación,vienen los cuatroregistrosdesegmentodescritosconanterioridad,seguidosdelcontadorde
programa, el cual apunta a la instrucción siguiente (relativa al inicio del segmento de código).
Los dos últimos registros son el AI (Apuntador de Instrucciones) y el de BANDERAS, que en la mayoría de otras
máquinas se denomina Contador de Programa y PEP (Palabra de Estado del Programa). Como hemos visto antes, el
elemento contador del programa apunta a la siguiente instrucción a ejecutar, así que es pocolo que se puede agregar.
Por otra parte, el registro de BANDERAS es nuevo y no es exactamente un registro normal, sino un conjunto de
bits a los que se asigna un valor, se les borra o se verifican por medio de diversas instrucciones. En forma breve, estos
bits tienen el siguientesignificado:el bit Rdetermina la direcciónenlasoperacionesdecadena; el bit I, habilita
interrupciones; y el bit T, habilita desvíos para rastreo, que se utilizan para efectos de depuración.
A los bits restantes se les llama con frecuencia códigos de condición, ya que adquieren su valor con diferentes
instrucciones, dependiendo de las diversas condiciones que pueden surgir (resultado negativo, cero, etc.) El bit D toma
el valor de 1 cuando ocurre un Desbordamiento en el resultado de una operación aritmética. El bit de signo S toma
también valores con las instrucciones aritméticas, 1 para resultados negativos y O para positivos. En forma similar, el bit
Z toma el valor de 1 para resultados con valor de cero, y el valor deO para resultados diferentes de cero. Los bits A y C
representan los acarreos de la parte media y extrema de los operandos, respectivamente. Por último, el bit P indica la
Paridad (non o par) del resultado de una instrucción aritmética. Existen además siete bits que no tienen uso en el 8088,
aunque algunos de ellos se utilizan en los sucesores de este.
En el juego de instrucciones del 8088, muchas de ellas hacen referencia a uno o dos operandos, ya sea en los
registros o en memoria. Por ejemplo, la instrucción INC incrementa (suma 1 a) su operando; ADD suma el operando
fuente al destino. Algunas tienen variantes íntimamente relacionadas; por ejemplo, las intrusiones de desplazamiento
pueden hacerlo hacia la izquierda o la derecha y pueden tratar al bit de signo de manera especial o no hacerlo. La
mayorpartede las instruccionestienenunavariedaddecodificaciones,dependiendode la naturalezade los
operandos.
Los campos src sonorígenes o fuentedeinformaciónyno se modifican;encontraste, los campos dst son
destinosypor lo general las instruccionesmodificansucontenido.Existenreglasacercadequesepuedeser una
fuente o un destino, las cuales varían de instrucción a instrucción, en forma en cierto modo errática. La mayoría de las
instruccionestienendosvariantes,unaqueoperaenpalabrasde 16 bits yotraqueoperaenbytesde 8 bits y se
diferencian por medio de un bit en la propia instrucción.
Por conveniencia, se han dividido las instrucciones en varios grupos. El primero contiene aquellas que mueven
datosalrededor dela máquina,entrelosregistros, la memoriay la pila. El segundogrupohaceoperaciones
aritméticas, tanto con signo como sin él. Para las multiplicaciones y divisiones, el producto o dividendo de 32 bits se
almacena en los registros AX (la parte de orden inferior) y en DX (la parte de orden superior).
En el tercer grupo realiza la aritmética Decimal Codificado en Binario (BCD), tratando a cada byte como dos partes
de 4 bits. Cada parte contiene un dígito decimal (O al 9) y las combinaciones de bits de la I010 y 11 11 no se utilizan.
De ahí que un entero de 16 bits puede almacenar un número entre O y 9999. Aunque esta forma de almacenamiento es
ineficiente, elimina la necesidad de convertir entradas decimales a binario y regresar de nuevo a decimalpara la salida.
Estas instrucciones se usan para realizar las operaciones aritméticas con números BCD.
Las instrucciones booleanas y las de desplazamientolrotación,manipulan en varias formas los bits en una palabra
o en un byte. Se incluyen diversas combinaciones.
Alejandro Montejo 9
Simuladordel Sistema Mínimo I n t e l 8088
Proyecto Terminal
El 8088 tiene algunas instrucciones para cargar, almacenar, mover, comparar y examinar cadenasde caracteres o
palabras.Estas,puedentenercomoprefijounbyteespecialllamadoREP, el cualhaceque la instrucciónserepita
hastaalcanzar una determinadacondición,comoen el registro CX que sé decrementadespués de cadaiteración,
hasta llegar a O. En esta forma, bloques arbitrarios de datos se pueden mover, comparar,etc.
HLDA I
T
CLK
T
RST
T
READ,
T *
M N ~ X
GNDVCC
Procesador 8088
El 8088 (y también el 80286 y el 80386) tiene cierto numero de prefijos de instrucciones, de los cuales ya se ha
mencionado REP. Cadaunodeestosprefijosesunbyteespecialquepuedeprecedera lamayoríade las
instrucciones.REPocasionaque la instrucciónquelesigueserepita,como se mencionóconanterioridad;LOCK
reservael bus para la instruccióncompleta,parapermitir la sincronizacióndemultiprocesos.Otrosprefijosseusan
paraforzara una instrucciónaqueextraigasuoperandode la pila o delsegmentoextra,envezdehacerlodel
segmento de datos.
No obstante lo anterior, los dos modos son idénticos. El mayor cambio en este nivel estáen el direccionamiento de
memoria.Enmodo real, de80286 al igualqueel8088tieneunespacio lineal dedireccionesde 1M. En modo
protegido,tiene 16 384segmentos,cadaunohastade64Kbytesdelargo.Durante el diseño del 80286surgió la
cuestióndecómopermitirque los programasusaranestamemoriaadicionalsinmodificar la máquinademanera
radical.
Alejandro Montejo 10
Simulador del Sistema Mínimo Intel 8088
Proyecto Terminal
El enfoque que requería de tamaño poco apropiado para los registros de segmento se descartó. En lugar de éste,
se uso un método más complejo. Los registros de segmento se mantuvieron en 16 bits, pero en vez de representar
apuntadores de 20 bits, los registros representan indices (llamados selectores) dentro de tablas del sistema. De modo
que cargar el valor de 2 en DS, no significa que el segmentodedatosse inicie en la dirección 32, sino que dicho
segmento está apuntando por una segunda entrada en determinada tabla. Cada entrada contiene un apuntador de 24
bits y otra información.
Además del conjunto de instrucciones del 8088, el 80286 tiene algunas adicionales que los diseriadores olvidaron
en la primeravuelta. La mayoríadeestasinstruccioneshacenposiblerealizaroperacionesclavescon un menor
número de instrucciones que en el 8088. Además, se han relajado algunas de las reglas más ortodoxas respecto a qué
operandos se permitenenquéinstrucciones.Porejemplo, la instrucciónPUSHpuedeahoratener una constante
como operando. En el 8088, PUSH sólo puede tener operandos de registro y de memoria, pero no constantes. Este
cambio, hace más eficiente el pasar constantes como parámetros para las subrutinas. La instrucción PUSHA realiza la
función de apilar los registros AX, CX,DX,BX,SP, BP, SI yDIeneseorden,POPA,recupera los registros
almacenados. Estas instrucciones se utilizan normalmente por las rutinas de interrupción para almacenar el estado de
la máquina antes de proceder a manejarla interrupción.
Las instrucciones ENTER y LEAVE ejecutan las acciones necesarias cuando se da entrada a un procedimiento, o
se sale de él. Por medio de instrucciones especiales para llevar a cabo las acciones a un tiempo, la entrada o salida a
un procedimiento se puede hacer más rápido.
BOUND realiza verificaciones de la frontera de los arreglos. AI igual que en el resto de las nuevas instrucciones,
ésta se incluye con fines de optimización, ya queelmismotrabajo se puederealizarcon una secuenciade
instrucciones del 8088, aunque en forma más lenta.
INTEL 80386
El 80286 tiene dos limitaciones fundamentales que condujeron a Intel a desarrollar el 80386. Primero, el 80286 es
una CPU de 16 bits con registros, operandos e instrucciones de 16 bits. Para muchas aplicaciones se necesita de una
CPU de 32 bits. Y segundo, el modelo de memoriaconsistentedemuchossegmentosde 64K resulta una gran
molestia. El problema no es el número de segmentos (16 384), que es más que suficiente, sino su tamario tan reducido
(64K). El 80386 elimina estos problemas y, al mismo tiempc, agrega algunas características adicionales que lo hacen
considerablemente más poderoso que el 80286, además de ser mucho más rápido.
Durante el diseño del 80386, Intel realizó un gran esfuerzo para mantener la compatibilidad con el 088 y el 80286,
a fin de permitir que corriera los programas binarios existentes para las versiones anteriores.
Los modos real y protegido están disponibles en el 80386 y operan en forma muy parecida a como lo hacen en el
80286. Existe, sin embargo, un modo nuevo, el modo virtual, que es un punto intermedio entre los dos anteriores. AI
igual que el modo real, su intención es la de correr antiguos programas binarios del8088.
La diferencia está en que en el modo real, un programa puede hacer lo mismo que en el 8088, incluyendo cambios
de registros de segmento, operaciones de EIS. etc. Esto le proporciona un poder más que suficiente para colapsar el
sistema. En modo virtual, todas las instrucciones normales trabajan igual que en el 8088, pero las instrucciones que en
potencia pueden hacer caer al sistema, tales como las de EIS, no se ejecutan. En vez de ello, ocasionan "desvíos" en
elsistemaoperativo,lascualespuedenemular(simular)dichasinstrucciones.Comoresultado,esposibletener
ejecutando al mismotiempovariosprogramasdel 8088, cadaunoprotegidode los otros.y el sistemaoperativo
protegido de todos ellos.
Alejandro Montejo 11
Simulador del Sistema Mínimo I n t e l 8088
Proyecto Terminal
Muchas de las computadoras basadas en el procesador 80386 utilizan UNlX como su sistema operativo nativo y
proporcionanmúltiplesventanasa los usuarios.Enuna o másdeestasventanas,elusuariopuedeejecutarviejos
programas en MS-DOS. Este truco se logra haciendo que UNlX cambie al modo virtual antesde iniciar un programa en
MS-DOS. Todos los intentos del programa de realizar operaciones de E/S, escribir en la RAM de video, etc.; ocasionan
"desvíos" al sistema UNIX, el cual realiza el trabajo deseado y regresa el control al programa MS-DOS. Así, diversos
programas en MS-DOS pueden correren forma simultánea bajo un ambiente UNlX y accesar archivos UNIX.
Una de las principales metas del 80386 fue la de deshacerse del límite de 64K por segmento, conservando la
compatibilidadcon los programasdel80286quemanejansegmentosdedichalongitud.Estelogro, en apariencia
imposible, se alcanzó de una manera muy habilidosa. Tanto el 80286 como el 80386 utilizan selectores en sus registros
desegmento.Enesencia,cadaselectores sólo uníndicedentrodelasdostablas de 8Kdedescriptoresde
segmentos. Cada descriptor contiene la dirección, su tamaiio, código de protección, así como otra información.
En el 80386, se tomó un bit que no se utilizaba en cada descriptor, para indicar si se trataba de un segmento de
16 o de 32 bits. En los segmentos de 16 bits, la dirección máxima es de 64K y todas las operaciones que manipulaban
palabras lo hacen en 16 bits. En los segmentosde 32 bits, la direcciónmáximaes4G(232bytes,cercade4mil
millones),ytodaslasoperacionesquemanipulanpalabras lo hacenen 32 bits. También es posibleignorarestos
valores instrucción por instrucción, insertando un prefijo antes de ésta. Se permite que un programa utilice una mezcla
de segmentos de 16 y 32 bits.
Una de las consecuencias obvias de tener un espacio de direcciones de 246 bytes, es que los apuntadores deben
tener por lo menos 46 bits de largo; una dimensión grande e inconveniente. Para la mayoría de las aplicaciones esto es
demasiado. En cambio, muchos programas para el 80386 usan simplemente un solo segmento de 232 bytes. A este
modelo se le conoce con el nombre de "Modo Motorola", ya que los espacios de direcciones de sus microprocesadores
constan de un solo segmento de 232 bytes.
Un programa para el 80386, cuando utiliza varios segmentos, está restringido a un solo segmento para código,
datosy pila en cadamomento, al igualquesucedeenel8088.Tambiéncomoen el 8088,existeunregistro de
segmentoextra, para hacerposibleelaccesotemporalaotrosegmento.Enel80386 se incluyendosregistrosde
segmento más, FS y GS para reducir el número de veces que se debe cargar un registro de segmento. De esta forma,
se pueden accesar hasta seis segmentos sin tener que cambiar ningún registro de segmento.
Además de proporcionar un mayor espacio de direcciones, la otra gran ventaja del 80386 es la de poder realizar
operaciones aritméticas en 8, 16 y 32 bits; los registros se han ampliado a 32 bits y conservan los nombres de los
registros de 16 bits, agregándoles una "E: (de extendido) al principio. En un segmento de 32 bits, una instrucción que
mueve una palabraa AX/EAX, la moverá a EAX, a menos queun prefijo específico indique lo contrario.
Aunque no era necesario, Intel decidió cambiar en el 80386 la forma de direccionar la memoria. En los segmentos
de 16 bits, todo funciona igual que en el 8088 o el 80286. Sin embargo, en los segmentos de 32 bits se presenta todo
un nuevoconjunto de posibilidades(modos)dedireccionamiento.Estosincluyenformaseficientesdeaccesar
elementos de un arreglo y otras características. Las instrucciones requieren de campos de modo de direccionamiento
para especificar en dónde se encuentran sus operandos;en los registros, en memoria, en la pilao en alguna otra parte.
Alejandro Montejo 12
Simulador del Sistema Mínimo Intel 8088
Proyecto Terminal
MOV xx mueve items de datos pequeños a otras mayores, con o sin extensión de signo. Las instrucción SETcc es en
realidad un conjunto de 30 instrucciones, cada una de las cuales almacena un byte en el registro de destino. Este bit
contiene un O oun 1, dependiendo de I estado de los bits en diversos códigos de condición. Esta instrucción es a veces
de utilidad para los disefiadores de compiladores,al momento de evaluar las expresiones booleanas.
Por último, las instrucciones SHxD son desplazamientos de 32 bits y las instrucciones Lxx se utilizan para cargar
registros de segmento.
Alejandro Montejo 13
Simulador d e l Sistema Minim Intel 8088
Proyedo Teminal
Microprocesador
Recuperar I Decodificar I Ejecutar I Recuperar I Decodificar I Ejecutar
Canal Ocupado 1 Ocioso I Ocupado I Ocupado 1 Ocioso I Ocupado I
Microprocesador Recuperar I Decodifica 1 Ejecuta I Recuperar I Decodifica
Canal de control
El canal de control suministra señales de control que hacen que en la memoria o el
espacio de E/S efectúen una operación de lecturao de escritura .
control
de
Canal 3 RD, WR IO/M
1 I I
I
El anchodelcanaldedatosdeterminacuantosbytessetransfierena la vezentre el microprocesadory la
memoria, y el ancho de canal de direcciones determina cuanta memoria puede dirrecionarel microprocesador.
LA MEMORIA Y EL MICROPROCESADOR
El espacio de direccionamientodeunsistemabasadoen un microprocesador,sedenominamemorialógica o
memoria fisica. La memorialógicaeselsistemadememoria tal ycomo lo veo un programador,mientrasque la
memoria fisica es la estructura real en el hardware de la memoria.
Memoria lógica
El espacio de memoria lógica es el mismo en todos los microprocesadores Intel, la memoria lógica se enumera por
bytes, en la siguiente figura se observa el mapa de memoria lógica del microprocesadorIntel 8088.
FFFFF
FFFFE
FFFFD
00002
00001
00000
La memoria lógica del 8088 empieza en la localidad OOOOOH y llega hasta la FFFFFH.
Como sabemos este intervalo de direcciones especifica 1 Mega debites de memoria disponible en este sistema
Cuando este
microprocesador
dirreciona
una
palabra
de 16 bits en la memoria,
seaccesan
dos
bytes
consecutivos en la memoria
*
MODELO DE PROGRAMACI~N
La programación requiere un entendimiento claro de la estructura de los registros del microprocesador, por lo cual
en la siguiente figura se observa el arreglo de registros internos del microprocesador.
Alejandro Montejo 16
Simulador del Sistema Minimo I n t e l 8088
Proyecto Terminal
bits bits
AH AX AL Acumulador
BH BX BL Índice base
I cx I CH I
I
CL I Contador
DX DH DL Datos
SP Apuntador a pila
BP Apuntador a base
DI Índice destino
SI Índice fuente
IP Apuntador de
instrucciones
Banderas
Segmento de código
DS Segmento de datos
ES Segmento extra
SS
AX (Acumu1ador):Conserva el resultado temporal después de una operación aritmética o lógica. A este registro
también se le direcciona como registros de 8 bits (AH,AL).
BX (Base): Conserva la dirección base (desplazamiento) de los datos que hay en la memoria o la dirección base
de una tabla de datos referenciados por la instrucción ara convertir (XLAT). A este registro también se le direcciona
como registros de 8 bits (BH,BL).
CX(Contador):Contiene el conteodeciertasinstruccionesparacorrimientos(CL)yrotacionesdelnumerode
bytes (CX) para las operaciones repetidas de cadena y un contador. (CX) para la instrucción LOOP. A este registro
también se le direcciona como registros de 8 bits (CH,CL).
DX (Datos): Es un registro de uso general que también contiene la parte más significativa de un producto después
de una multiplicación de 16 bits; la parte más significativa del dividendo antes de la división y el número de puerto de
E/Spara una instrucción variable de E/S. A este registro también sele direcciona como registros de 8 bits (DH,DL).
Alejandro Montejo 17
Simulador del Sistema Mínimo I n t e l 8081
Proyecto Termina
SP ( Apuntador a pila ): Este registro se emplea para direccionar datos a la pila de memoria de (LIFO).
BP (Apuntador a base): Es un apuntador deuso general que se utiliza a menudo para dirrecionar a una matriz
de datos en una pila de memoria.
SI (Índice fuente) : Se emplea para direccionar datos fuente en forma indirecta para utilizarlos conlas
instrucciones de cadenas o arreglos.
DI (Índice de datos): Se emplea para dirrecionar datos destino en forma indirecta para utilizarlos con las
instrucciones de cadenaso arreglos.
Registros de segmento
Los registros de segmento, generan direcciones en la memoria junto conotros registros.
CS ( código ): El segmento de código es una porción de la memoria que tiene los programas y procedimientos
utilizados por los programas. Elregistro de segmento de código define la dirección inicial de la sección de memoria
que tiene el código. En modo real ,define el inicio de una sección de 64K bytes. segmento de código esta limitado
en el 8088 a una longitudde 64Kbytes.
DS ( datos ): El segmento de datos es una sección de la memoria que contiene la mayor parte de los datos
utilizados por un programa. Se les caceas en el segmento de datos con un desplazamiento o con el contenido de
otros registros que tiene la dirección del desplazamiento.
ES(segmento extra): El segmento extra de datos lo utilizan algunas instrucciones para cadenas.
Segmentos y desplazamientos
Una dirección de segmento mas una dirección de desplazamiento,generan una dirección en la memoria en el
modo real. Cabe señalar que todas las direcciones en la memoria en modo real se componen de una dirección de
segmento mas un desplazamiento. El segmento ubicado en uno de los registros de segmento del microprocesador,
define la dirección inicialde cualquier segmentodememoriade64K bytes. La dirección de desplazamiento
seleccione una localidad dentro del segmento de memoria de 64k bytes.
por ejemplo:
CS:IP
Donde CS: direcciona el principio del segmento de código dentro del mapa de memoria.
El registro de segmento de pila hace referencia a los datos de la pila por medio del segmento de pila y por la
localidad de la memoria a la cual dirreciona el apuntador de la pila (SP) o el apuntador de base.
Segmento Desplazamiento
cs IP
SS S P 6 BP
DS BX, DI, SI o un numero de 16 bits
ES DI para instrucciones de cadena
El microprocesador 8088 permite tener cuatro segmentosde memoria; Sedebede tener en cuenta que los
segmentos de memoria pueden tocarse o incluso traslaparse si no se requieren 64K bytes de memoria para un
segmento, en la siguiente-figura se muestran los segmentos del 8088.
FFFFF
3FFFF
ESSegmento
extra
30000
2FFFF
SS:Segmento
de pila
20000
1FFFF
CSSegmento
de datos
I O000
-
OFFFF
CSSegmento
de eddigo
o0000
Segmento de
Datos
-
I
t
! Segmento de
Código
Coniunto de Instrucciones
Existen seis categorías de instrucciones para el 8088 las cuales son:
Transferencia de datos.
El conjunto de instruccionespara el 8088incluyeinstrucciones parala transferenciadedatosquetransfieren
bytes, y palabras, de datos entre la memoria y los registros del microprocesador.
Aritméticas.
El 8088 puede sumar, restar y multiplicar ydividir datos como bytes y palabras.
Transferencia de Programa.
Las instrucciones para transferencia de programa incluyen brinco, llamadas (CALL) y para retorno
Manipulación de Bits.
Las instrucciones para la manipulación de bits binarios se utilizan para controlar los datos hasta el nivel de bits.
Estas instrucciones incluyen operaciones lógicas, corrimientos y rotaciones.
Instrucciones de cadenas.
Las instrucciones para cadenas o arreglos se emplean para manipular cadenas de datos en la memoria. Cada
cadena consta, ya sea, de bytes o de palabras y tiene hasta 64K bytes de longitud. En las instrucciones para la cadena
se emplean los registros SI y DI para dirrecionar los datos y el registro CX par conmutar el número de bytes o de
palabras.
Las instrucciones para el control del procesador habilitan y deshabilitan las interrupciones, modifican los bits de
bandera y sincronizan los eventos externos.
Alejandro Montejo 21
Simulador del Sistema Mínimo Intel 8088
Proyecto Terminal
División de datos:
ARCHIVO: DIVIDE1 .MEM
ARCHIVO: DIVIDE2.MEM
Resta de datos:
ARCHIVO: RESTA1 .MEM
Transferencia de
datos
IN Mete datos al acumulador desde un dispositivo de
EIS
LEA Carga la dirección efectiva
MOV Carga byte, palabra
POP Recupera una palabra de la pila
PUSH Salva las palabras en la pila
Aritméticas
ADD Suma datos entre registros o la memoria y otro
registro
CMP Compara datos
DEC Decrementa
DIV Divisiónsin signo
IDIV División con signo
IMUL Multiplicación con signo
INC Incrementa
MUL Multiplica con signo
SUB Resta datos entre los registros y la memoria u otro
registro
Manipulación de Bits
AND Y ( AND) lógica
NOT Invertir (comdemento a uno)
I OR I O lógica
Instruccionesde
Cadenas
CMPS ComDaración entre memoria v memoria
LODS Cargar el acumulador
MOVS Mover de memoria a memoria
SCAS Comparación entre la memoria y el acumulador
STOS Almacenar en el acumulador
Transferencia de
programa
CALL Llama a un mocedimiento
I JMP CERCANO
JMP LEJANO I
Saltaa otra partedel programa dentro del mismo
segmento
Saltaa otra parte del programa en otro segmento
LOOP I ReDite ciclo CX veces
I RET I Retorna de un procedimiento
1
I
Alejandro Montejo Rubio
23
Simulador del Sistema Mínimo Intel 8088
Proyecto Terminal
OBJETIVO :
0 Simular el funcionamiento de manera "virtual" de un sistema mínimo ( Intel 8088 )
sin requerirlo físicamente.
0 Realizar una herramienta útil y didáctica para el aprendizaje en la utilizacióny
manipulación de lasinstrucciones básicas del micro procesador 8088, así como el
aprendizaje del comportamiento y manejo de la memoria por parte del procesador.
JUSTlFlCAClON
Debido al avance tecnológico de las ultimas dos décadas, la ciencia de la electrónica y el desarrollo acelerado de
los ordenadores, han tomado un papel muy importante en desarrollo productivo del mundo, debido a estola enseñanza
en nuestro país implemento los planes y programas para desarrollar el estudio y aprendizaje de dicha ciencia; Por lo
cualdichodesarrollo ha llevadoa la docenciaatomaraccionesdeenseñanza,lascualesse han visto un poco
limitadas ya que no existen programas computacionales que faciliten la practica directamente en una computadora de
los temasplaneadosdeacuerdoa los planesdeestudios.Espor ello queen la actualidad el desarrollode
herramientas y tutoriales gráficos, es primordial para lograr una enseñanza optima, que permita al alumno practicar en
un alto porcentaje la teoría impartida por el docente a un bajo *costo. Por lo que la propuesta de nuestro proyecto esta
encaminada a fortalecer los conocimientos teóricos que el docente imparte, con una herramienta gráfica, que le permita
al usuario o alumno practicar y auto evaluarse así como obtener ayuda en línea. Dicha propuesta esta basada en la
realización de un simulador gráfico del sistema mínimo (cuyo microprocesador es el 8088) el cual nos permita realizar
laboresdeprogramación en el sistemahexadecimal,utilizandolasprincipalesinstruccionesque nos otorga el
microprocesador 8088.
Se menciona bajo costo porque en la actualidad en la mayoria de las instituciones (si no es que todas) cuentan
con un laboratorio de computadoras. Lo Único que falta es el software. Software de nivel y calidad, y además hecho en
México y por mexicanos calificados y altamente competitivos.
La gran mayoria de las empresas dedicadas al desarrollo de software en México se preocupan más por software
de tipo administrativo, que por el software educativo. Existe si, pero de mala calidad,no visual y en ambiente DOS.
PROPOSITO :
El presente proyecto presentado tiene la finalidad de proporcionar una herramienta y ejemplos necesarios para
una adecuadaexplotacióndelsistemamínimo (Intel 8088), asi comodepoderproporcionar una herramientade
aprendizaje y experimentación para los alumnos con materias enfocadas ala lngenieria en Electrónica o áreas afines.
Además de esto el usuario tendrá ayuda en línea que le permiten conocer las funciones del sistema mínimo así
como ejemplos incluidos.
Alejandro Montejo 24
Simulador del Sistema Mínimo Intel 8088
Proyecto Terminal
Hardware
Comenzando desde
laes specificacioney
saseñaladacsona n t e r i o r i d a d(,R e q u i s i t o
indispensable: contar con Windows 3 . * ) , primero se deberá ingresar en Windows:
e l i c o n o o archivo de “Principal”,posteriormente se
deberá s e l e c c i o n a r e l i c o n o l l a m a d o “ A d m i n i s t r a d o rde
archivos”, aquí se desplegara una ventana, en donde se
tiene q u e e s p e c i f i c a r l a u n i d a d e n l a c u a l se encuentra
e l sistema ( U n i d a d A:\ o B:\según sea e l caso),una vez
que se muestren los archivos existentes de l a unidad de
discoasignada,
Seleccionar “Archivo”, y después
“Ejecutar” .
*Nota* (cabe hacermención que como casi ya es dedominiogeneral,Windowsbrindahastatresopciones
diferentes de realizar una selección u opción (Por mediode las barras de menús, las llamadas rápidas que se realizan
con la letra subrayada ysimultáneamente la tecla ALT y los iconos). Para nuestro casonosabocaremos a la
utilización de iconos en la mayoría de los casos. Estas opciones también se aplican para la nuevaversiónde
Windows 95 e inclusive en esta versión existen mas opciones de Ejecución.
Otra opción es que en el m o m e n t o d e s e l e c c i o n a r e l a r c h i v o “ S e t u p . e x e ” , se presione
d o sv e c e se lb o t ó ni z q u i e r d od e lr a t ó n .E s t o ,a u t o m á t i c a m e n t ee j e c u t a r áe lp r o g r a m ad e
instalación seleccionado. Posteriormente aparecerá una ventana que pedirá la confirmación
de la ejecución del sistema (tiene que marcar “Aceptar” 1. En breve aparecerá una ventana
indicando la ejecución de SETUP:EXE. La pantalla de instalación del Simulador del sistema
m í n i m o 8088 solicitará al usuario especifique si el archivo y/o la ruta son correctos ( solo
p r e s i o n e C o n t i n u a r 1.
* Win95.
U n av e za c c e s a d oW i n d o w s ir a lb o t ó nd ei n i c i os i t u a d oe nl ab a r r ad eh e r r a m i e n t a s
s i t u a d o ( p o r lo g e n e r a l ) e n l a p a r t e i n f e r i o r i z q u i e r d a d e l a p a n t a l l a
Figura 1
A continuaciónseabriráunaventanamostrandoloselementos del escritorio,
seleccione "Ejecutar"
Figura 2 Figura 3
En las figurasanteriores se muestra paso apaso el procedimientoarealizar para la ejecucióndelprograma,
desde el menu de Ejecución (figura I), así como la ventana de opción de la Figura 2, en la cual se le introducirá la ruta
de acceso y el nombre del archivo a ejecutar, en caso de ignorar dichos dato, (como se supone es el caso, ya que es la
primera vez que se va a correr dicho programa) se recomienda seleccione la opción de Examinar:
Figura 4
Ahora seleccione el Archivo de programa llamado "Setup.exe" y oprima Abrir, esto lo regresará a la ventana de
Ejecutar, seleccione "Aceptar 'I.
En estos instantes se comenzará a cargar el proyecto en su Disco Duro con la dirección preestablecida C:\ (con la
opción de cambiar dicha ruta de instalación, si as¡ se desea).
Se ira mostrando el porcentaje de instalación cargado del disco 1 y posteriormente se pedirá que se inserte el
disco siguiente en orden numérico, una vez concluida la instalación oprima "Aceptar" nuevamente en la pantalla que
aparecerá.
En el Escritorio o Pantalla principal de Windows se generará el icono correspondiente al simulador, el cual llevara
el nombre de "SIMULADOR", selecciónelo y haga doble click enel ratón para ejecutar el sistema.
Por medio del presente Manual se pretende daral Usuario un bosquejo delo que el sistema puede realizar.
Alejandro Montejo 26
Simulador del Sistema Mínimo I n t e l 8088
Proyecto Terminal
En el encontrara la descripción de cada una de las ventanas con las que se encontrara a lo largo del sistema, así
como,unabreveexplicaciónde lo querealizacadauno de los botonesyfunciones con los quecuentandichas
ventanas.
Presentación
AI inicio del sistema se desplegara una ventana de presentación en la que encontrara el nombre del sistema, esta
ventana se desaparecerá en un instante para dar paso a la portada.
Portada
En ella encontrara tres botones rotulados con las siguientes etiquetas:
Alumno : AI hacer un clic sobre este botón Ud. encontrara el nombre del alumno responsable de la realización del
presente proyecto.
Asesor : AI presionar este botón se desplegara el nombre del profesor encargado de la sinodalia y responsable
de realizar las correcciones pertinentes al sistema
Ejecutar : Cuando Ud. presiona esté botón se iniciara la ejecución del simulador
del sistema minimo 8088
Terminar : Con este botón Ud. regresara nuevamente al ambiente de Windows sin entrar al sistema.
Alejandro Montejo 27
Simulador del Sistema Minimo Intel 8088
Proyecto Terminal
Una vez que oprimió el botón de ejecutar la ventana que a continuación se desplegara la podemos desglosar en
cuatro bloques:
0 Editor
0 ComponentesGráficos
0 Menús
0 Microavuda
Editor
Este editor cuenta con los Rotulados:
Instrucciones : Esta etiqueta cuenta con dos botones rotulados con dos pequeñas flechas
Flecha hacia abajo izquierda: Muestra las instrucciones con las cuales cuenta el sistema.
Flecha hacia arriba izquierda: Muestra las instrucciones con las cuales cuenta el sistema
Enter : AI oprimir este botón se acepta la instrucción que se haya elegido simulando al "Enter" de su máquina
Registros : Esta etiquetado con dos botones rotulados con dos pequeñas flechas.
Flecha hacia abajo derecha: Muestra los registros sobre los cuales se puede realizar una operación en
ensamblador
Flecha hacia arriba derecha: Muestra los registros sobre los cuales se puede realizar una operación en
ensamblador
Teclado : AI oprimir cualquiera de estos botones, el resultado que se obtendra es el que trae rotulado
Botón Ejecutar: Muestra la pantalla de microprocesador interno, en la cual se muestra las operaciones internas de
ejecución, el cual también se puede activar por la combinación de teclas ALT + E
Botón Reset: Limpia la memoria y pone dirección editar con el valor de cero, el cual tambien se puede activar por
la combinación de teclas ALT + R
Componentes Gráficos
Al hacer un clic sobre cualquier componente gráfico se abre una ventanala cual muestra un zoom del componente
y muestrainformacióntécnicadelmismorelevante,as¡comosu uso máscomún enla creación de circuitos
electrónicos.
Menús
La ventana cuenta con una barra de menús formada por tres títulos que son:
Archivo : Se puede activar vía barra de menú o por la combinación de teclas ALT +
A, este menú cuenta con cuatro subménus que son:
Abrir (Ctrl+A): El cual abre un archivo editado y lo carga en memoria.
Guardar(CTRL + G): El cual guarda el contenidode un archivoeditadoen
memoria.
MicroAvuda.
Esta se muestra en la parte baja de la ventana, al colocarse sobre cualquier componente indicara que función
realiza.
Alejandro Montejo 31
Simulador del Sistema Mínimo Intel 8088
Proyecto Terminal
0 La caja de texto que se encuentra del lado derecho dela etiqueta anterior nos muestra el porcentaje de archivo
que se ha cargado enmemoria.
Como Ud. podrá apreciar en esta ventana es dondese realiza la programación enel lenguaje ensamblador, para
lo cual se le darán una serie de pasos para queel desempeño del sistema sea el óptimo. Están desactivadas las teclas
de registro y de valor, lo primero que tendráque hacer es introducir el valor de alguna de las instrucciones con las
que cuenta el sistema por medio de las flechas izquierdas de edición, oprimiendo el botón de "Enter" para que
dichas instrucciones sean aceptadas. En el caso de que la instrucción emplee registro o valor estos deberán ser
introducidos ya sea por flechas derechas de edición o por medio del teclado, deberá de oprimir la tecla de "Enter"
para que estos valores sean aceptados
Repetir los primeros pasos mientrasdesea seguir editando, en caso contrario su programa editado se guardara
tecleando la combinación deCTRL + G o en su defecto abriendo el menú de Archivo y elegir la opción de guardar.
La Dirección deEditar se ira incrementando de acuerdoal valor en bytes entre instrucción e instrucción. Para iniciar
el programa deberá de oprimir el botón de Ejecutar, el cual le abrirá la ventana del simulador. Si desea cargar un
programa que ya editó, basta con oprimir la combinación de teclas CTRL + A, o por medio del menú Archivo
eligiendo la opción de Abrir. Para Resetear (Limpiar) Este botón es utilizado en el caso de que Ud. desea limpiar su
memoria de cualquier programa que este editando, y que no haya sido guardado previamente. Algunos ejemplos de
programas en ensamblador se muestran al final deesté capitulo.
Ventana de Simulador
En esta ventana se observará los registros internos del microprocesador, el bus de direcciones, el bus de datos,
mapa gráfico de la memoria, así como, botones de control.
Registros Internos: Todos los registros internos al tiempo de cargar esta ventana se lnicializa a cero, excepto los
registros de segmento que se cargan con su respectivo valor, de segmento estos registros pueden ser modificados
antes de la ejecución, excepto los registros de segmento.
A X (Acumu1ador):Conserva el resultado temporal después de una operación aritmética o lógica. A este registro
también se le direcciona como registros de 8 bits (AH,AL).
BX (Base): Conserva la dirección base (desplazamiento) de los datos que hay en la memoria o la dirección base
de una tabla de datos referenciados por la instrucción ara convertir (XLAT). A este registro también se le direcciona
como registros de 8 bits (BH,BL).
SP ( Apuntador a pila 1: Este registro se emplea para direccionar datos a la pila de memoria de (LIFO) .
BP (Apuntador a base): Es un apuntador de uso general que se utiliza a menudo para direccionar a una matriz de
datos en una pila de memoria.
SI (indice
fuente): Se emplea para
direccionar datos
fuente
enforma
indirecta para
utilizarlos con las
instrucciones de cadenas o arreglos.
IP ( Apuntador de instrucciones 1: Se utiliza siempre para direccionar a la siguiente instrucción que va a ejecutar
el microprocesador. Para formar la localidad real de la siguiente instrucción se suma el contenido de IP con CS (por)
10H. Cabe señalar que se puede realizar direccionamiento indirecto de datos por medio de estos registros excepto
con el apuntador a instrucción ( IP 1.
Registros de segmento
Los registros de segmento, generan direcciones en la memoria junto con otros registros.
CS ( código 1: El segmento de código es una porción de la memoria que tiene los programas y procedimientos
utilizados por los programas. El registro de segmento de código define la dirección inicial de la sección de memoria
que tiene el c6digo. En modo real , define el inicio de una sección de 64 K bytes. segmento de código esta limitado
en el 8088 a una longitud de 6 4 Kbytes. Definido en el segmento 0000.
Alejandro Rubio 33
Simulador del Sistema Minimo Intel 8088
Proyecto Terminal
ES(segrnent0 extra): El segmento extra de datos lo utilizan algunas instrucciones para cadenas. Definido en el
segmento OCOO
SS (segmento de pila): El segmento de pila define la superficie de la memoria utilizada para la pila. La ubicación
del punto inicial de entrada a la pila, se determina por el registro apuntador de la pila. El registro BP tambien direcciona
los datos que hay dentro del segmento de pila. Definido en el segmento0800.
Modos de Direccionamiento
El 8088 dispone de muchos modos de direccionamiento que proporcionan diferentes modos de acceder operando,
los mas comunes son:
Cada vez que Ud. ejecute el comando de abrir un nuevo archivo deberá de actualizar la Dirección a Editar
Alejandro Montejo 35
Simulador del Sistema Mínimo I n t e l 8088
Proyecto Terminal
Ejemplos de aplicación:
Con estos ejemplos se podrá dar cuenta del resultado obtenidoal realizarse las operaciones asignadas
Carga de datos:
ARCHIVO: CARGA1 .MEM
Direccionamiento
ARCHIVO:CARGA2,MEM
Se le asignara un valor doble a memoria
00022h
DI
MOV I Inmediato I 03 I OD I O0 I 22
ARCHIVO: CARGA3.MEM
ARCHIVO: CARGA4.MEM
Reaistro I 02 I
MOV SI BX Registro 02 oc o9
BXMOV Ax Registro 02 o9 08
DXMOV BP Registro 02 OB OE
DI MOV Ax Registro 02 OA 08
MOV SI BX Registro 02 oc o9
DI MOV SI Reaistro 02 OD nc
ARCHIVO: CARGA5.MEM
INS
dirección
DS I bits
8REG
AH0012h
MOV
Directo
C.ins
04
Ofsset Ofsset
Direccionamiento C.reg
Hi
O0
Lo
12 01
I
&
AL1254h
MOV Directo 04 12 54 O0
BL5FDDh
MOV
Directo
04 5F DD~ I 02
"
BH2365h
MOV 23
04 Directo 65 03
CH12AAh
MOV
Directo04 AA 12 05
AH ADFFMOV
Directo04 FF AD 01
BL FD89MOV FD
04 Directo 89 02
CH 5632MOV Directo 04 56 32 05
DH 2364 MOV Directo 04 23 64 07
CL1236hMOV
Directo04 12 36 04
ARCHIVO: CARGA6.MEM
INS
0012h
MOV
dirección
DS I 16 bits
REG
Ax Directo
C.ins
04
Ofsset Ofsset
Direccionamiento C.reg
Hi
O0
Lo
12 08
ARCHIVO: CARGA7.MEM
ARCHIVO: CARGA8.MEM
INS
MOV
I Reg
bits
AX
[ DS
Dirm
0012h Directo
C.ins
05 08
Ofsset Ofsset
Direccionamiento
C.reg Hi
O0
Lo
12
BX 1254h MOVDirecto 05 O9 12 54
cx 5FDDh MOV
Directo 05 OA 5F DD
SI 5263h MOVDirecto 05 OC I
52 63 ~~
1236h
DIMOV Directo 05 OD 12 36
Suma de datos:
ARCHIVO: SUMA1 .MEM
ARCHIVO: SUMA2.MEM
DATO
Dato
INS REG 16 C.ins Dato Hi
Direccionamiento
C.reg Lo
Bits
AX 2533h Inmediato
ADD08 08
~~ .. 25
" 33
"
ARCHIVO: SUMA3.MEM
ARCHIVO: SUMA4.MEM
ARCHIVO: SUMA5MEM
ARCHIVO: RESTA2.MEM
ARCHIVO: RESTA3.MEM
ARCHIVO: RESTA4.MEM
INS
SUB
I REG
AX
1 REG
16 bits
DS
Direccionamiento
Registro
Cód
Ins
10
Cód I Cód.Re I
BP BX SUB Registro 10
CX SUB cs Registro 10
BX DX SUB Registro 10 OB I O9 "1
BP SUB cs Registro 10
DS DI SUB Registro 10
SUB SI SS Registro 10
SUB AX ES Registro 10
SUB SI DI Registro 10 oc OD
SUB DI AX Registro 10 OD
ARCHIVO: RESTA5.MEM
Producto de datos:
ARCHIVO: PRODUCTO1 .MEM
ARCHIVO: PRODUCT02.MEM
I I I
I
Incremento de datos:
ARCHIVO: INCRE1.MEM
ARCHIVO: INCRE2.MEM
Decremento de datos:
ARCHIVO: DECREl .MEM
ARCHIVO: DECRE2.MEM
0002hJMP I Directo I 18 I O0
I
02 I
Apilamiento de datos:
ARCHIVO: PUSH1.MEM
ARCHIVO: PUSH2.MEM
Desapilamiento de datos:
ARCHIVO: POP1 .MEM
POP Inmediato I 1B I OA I
DX POP 1B OB
POP SI Inmediato 1B oc
BX POP 1B o9
POP cx Inmediato 1B OA
POP Ax Inmediato 1B 08
DX POP 1B OB
POP DI Inmediato 1B OD
ARCHIVO: POP2.MEM
A partir del estudio de la arquitectura básica, de un sistema mínimo utilizando el microprocesador de la familia
Intel, se realizó un análisis que nos permitió implementar una herramienta interactiva para poder realizar simulaciones
en lenguaje ensamblador.
Partiendo de la propuesta de realizar una herramienta que nos permitiera simular programas en lenguaje
ensamblador a nivel microprocesador interno, se desarrolló unsistema basado en la arquitectura de un
microprocesador de la familia Intel.
La figura muestra el proceso básico del trabajo del microprocesador, a este ciclo se le conoce con el nombre de
ciclo de fetch. Cuyo algoritmo se muestra a continuación.
2.-El microprocesador decodifica el codigo leido dememoria mediante un algoritmo llamado decodifica().
localizado en la formal
0 0 0 0 0
00000000000000000000
""""""""""""""""""""""-
11111111111111111111
F F F F F
El sistema de memoria esta dividido en bloques los cuales están definidos de la siguiente manera.
t 8 bits
FFFFF
FOOOO
OFFFF
00000
La memoria Eprom esta definida en un segmento de 64 k mediante un inicio en la dirección de Memoria(983040)
hasta Memoria(l048575) sin uso dentro del sistema.
La memoria libre sin uso dentro del sistema esta definida en el segmentode inicio de Memoria(65536) hasta
Memoria(983039).
La memoria Ram esta segmentada en tres segmentos que son los siguientes:
Una vez expuesto las características de la memoria , me corresponde detallar la manera de introducir las
instrucciones ha memoria así como, la ejecución de las mismas.
Las instrucciones están escritas enunarchivo de texto llamado microinstrucciones.lst, este archivo esta
compuesto por una secuencia de líneas las cuales son:
- Nombre de la Instrucción.
- Tabla de verdad.
- Número de microinstrucciones.
- Microinstrucciones.
En d o n d eN o m b r ed el ai n s t r u c c i ó ne su nd a t oq u es ei n t r o d u c i r áe nu na r r e g l ol l a m a d o
mnemónico de tipo Cadena.
Ejemplo:
Las líneas subsecuentes determinan las microinstrucciones que ejecuta una instrucción.
En
siguiente
la pagina
se
muestra
una
tabla
con
las
microinstrucciones
que
se
i m pIdementaron en el desarrollo, así como una descripción breve de su funcionamiento.
Microinstruciones Función
DETECTA Detecta origen Y destino de la instrucción
BUSDATOS=ORIGEN Asigna al bus de datos lo que se encuentra en el registro origen
DESTINO=BUSDATOS Asigna al registro destino loque hay en el bus de datos
ASIGNA Asigna al registro destino loque hay en el registro origen
DATASEGMENT Inicializa la Dosición de la memoria enel semento de datos
ASIGNA=MEMORIA I
I
I
Alejandro Montejo Rubio 52
Simulador del Sistema Minimo Intel 8088
Proyecto Terminal
Instrucción Función
NO P Esta instrucción no hace nada
FFFFFFF
O
MOV R8 DATO8 Carga un registro de 8 bits con un
VFVFFFF dato de 8 bits.
3
DETECTA
BUSDATOS=ORIGEN
DESTINO=BUSDATOS
53
Alejandro Montejo Rubio
Simulador del Sistema Mínimo Intel 8088
Proyecto Terminal
I contenido de un registro de 3 ó 16
DATASEGMENT bits.
DETECTA
MAR=DIRECCION
BUSDATOS=ORIGEN
ASIGNA=MEMORIA
I
BUSDATOS=ORIGEN
SUMA
ADD
R8 R8 Suma el contenido
de un registro
VVFFFFF de 8 bits otro
el contenido
de
registro de 8 bits.
DETECTA
54
Alejandro Montejo Rubio
Simulador del Sistema Minimo I n t e l 8088
c Proyecto Terminal
B
DATASEGMENT dirección
de 8 bits cre la
DETECTA memoria,queseencuentraen
DIVIDEMEM segmento
el de datos.
Poniendo el cociente enAL y el
residuo enAH
SUB R8 DATO8 Resta el contenidoun
de
VFVFFFF registro
de 8 bits
con
el
3 contenidodeunregistrode 8
DETECTA bits.
BUSDATOS=ORIGEN
RESTA
SUB R8 R8 Resta
contenido
el un
de
VVFFFFF registro de 8 bitscon
el
2 contenido deunregistrode 8
DETECTA bits.
RESTA
MUL R8 Multiplica
contenido
el del
VFFFFFF registro AL con el contenido de
2 registro
un de 8 bits. El
DETECTA producto lo depositaen
el
MULTIPLICA
registro AX.
MUL MEM Multiplica
contenido
el del
FFFFFVV registro AL con el contenido de
3 unadireccióndememoriadel
DATASEGMENT segmento de datos. y el
DETECTA
MULTIPLICAMEM producto lo deposita en
el
registro AX.
INC R8 Incrementa el contenido en una
VFFFFFF unidaddelregistrode 8 bits ó
2 16 bits
DETECTA
INCREMENTA
En seguida se muestra el contenido del archivo de ayuda, formado porlos archivos ayuda.rtf, y ayuda.hpj
Ayuda.hpj
: Se requiere Compilar en hc 3.1
lOPTlONSl
errorlog = Erroresxrr
Alejandro Montejo 57
Simulador del Sistema Mínimo Intel 8088
Proyecto Terminal
"
RQGT.
NMI INT
RST n
+ o
3
o_
ALU de 16 brts
- 4
%
READY
reglstros de
-
n
banderas
dpMX m
a
D
GND 4
VCC
so-S2 .
unidad de apuntador
interriaz
LOCK de BUS
D T F D m ,ALE
INTA,liZi;,AD15 A I 9156
m ADO A16153
0 SimuladorSIMULADOR
0 MicroInternoMIC
0 EiemplosEjeMPLOS
0 HistorialHISTORIA
MICRO INTER:NO
En esta sección se muestra una explicación del Microprocesador Interno, considerando
su comportamiento en una
ejecución así como las características propias del mismo.
Micro InternoINTERNO
RegistrosREGISTROS
Mapa de memoriaMAPA
Ventana de Simulador
En esta ventana se observará los registros internos del microprocesador, el bus de direcciones, el bus de datos,
mapa gráfico de la memoria, así como, botones de control.
o Registros Internos : Todos los registros internos al tiempo de cargar esta ventana se
inicializán a cero, exceptolos registros de segmento que secargan con su respectivo
valor, de segmento estos registros puedenser modificados antes de la ejecución,
excepto los registros de segmento.
0 Bus de Direcciones : El canal de direcciones suministra una dirección enla memoria
para la memoria del sistemao el espacio de entradaisalida (E/S) para los
dispositivos de E/s del sistema.
0 Bus de datos : El canal transfiere éstos entre el microprocesador y la memoria y los
dispositivos de E/S conectados enel sistema.
0 Botones de Control : Estos se encuentran etiquetados con los siguientes Rótulos :
* Reset : Inicializa los registros internos a cero, exceptuando los registros de
segmentos
AX (Acumu1ador):Conserva el resultado temporal después de una operación aritmética o lógica. A este registro
también se le direcciona como registros de 8 bits (AH,AL).
BX (Base): Conserva la dirección base (desplazamiento) de los datos que hay en la memoria o la dirección base
de una tabla de datos referenciados por la instrucción ara convertir (XLAT). A este registro también se le direcciona
como registros de 8 bits (BH,BL).
DX (Datos): Es un registro de uso general que también contiene la parte más significativa de un producto después
de una multiplicación de 16 bits; la parte más significativa del dividendo antes de la división y el número de puerto de
E/S para una instrucción variable de E/S. A este registro también se le direcciona como registros de 8 bits (DH,DL).
SP ( Apuntador a pila ): Este registro se emplea para direccionar datosa la pila de memoria de (LIFO) .
BP (Apuntador a base): Es un apuntador de uso general que se utiliza a menudo para direccionar a una matriz de
datos en una pila de memoria.
DI (lndice dedatos):Seempleaparadireccionardatosdestinoenformaindirectaparautilizarlosconlas
instrucciones de cadenas o arreglos.
Alejandro Montejo 59
Simulador del Sistema Mínimo Intel 8088
Proyecto Terminal
Registros de segmento
Los registros de segmento, generan direcciones en la memoria junto con otros registros.
DS ( datos 1: El segmento de datos es una sección de la memoria que contiene la mayor parte de los
datos utilizados por un programa. Se les accesa en el segmento de datos con un desplazamiento o con
el contenido de otros registros que tiene la dirección del desplazamiento. Definido en el segmento 0400
SIMULADOR
El sistema mínimo esta representado de manera gráfica en esta pantalla, aquí podemos realizar las
ediciones, de programas en lenguaje propio de expresiones completas, recuperar y salvar los programas
editados, así como obtener información de los componentes gráficos, los cuales componen el sistema
mínimo 8088. Podemos cambiar de dirección de edición de nuestros programas, así como desensamblar
el código de expresiones completas, aun condijo de lenguaje ensamblador.
Alejandro
Alejandro Montejo Rubio
61
Simuladordel Sistema Mínimo Intel 8088
Proyecto Terminal
GRAFICOS
Los gráficos de esta pantalla representan los componentes físicos del sistema, y podemos obtener información
acerca de ellos. Para obtener información de estos componentes gráficos, debemos posicionar el cursor del mouse en
el componente, y teclear un click en el botón derechodel mouse, y para cerrar la ventana de información del
componente basta con teclear el botón cerrar.
DISPLAY
El display es una ventana que nos permite visualizar las expresiones del lenguaje, los registro, así como los datos
que se van cargando para completar las instrucciones.
Cabe señalar que en este objeto no podemos realizar ninguna edición directa de datos.#.
TECLAS
Las Teclas se clasifica en:
Tecla EiecutarTECLAEJE
Tecla ResetTECLARES
TeclaEjecutar: Nos permiteejecutar la pantalladeejecucióndeprogramas, esta función se puederealizar
posicionando el cursor del mouse en la tecla y haciendo un click en el botón izquierdo del mouse ó mediante las teclas
rápidas ALT+E.
Tecla Reset: Nos permite resetear la memoria y empezar una nueva ejecución, esta función se puede realizar
posicionando el cursor del mouse en la tecla y haciendo un click en el botón izquierdo del mouse ó mediante las teclas
rápidas ALT+R.
# D I R E C C I ~ NFÍSICA
La Dirección de Editar muestra la dirección a editar del segmento de código, estase ira incrementando de acuerdo
al valor en bytes entre instrucción e instrucción.
# MENÚS
La ventana cuenta con una barra de menús formada por tres títulos que son:
.Archivo : Se puede activar vía barra de menú o por la combinación de teclas ALT + A, este menú cuenta con
cuatro subménus que son :
Alejandro Montejo 63
Simulador del Sistema Mínimo I n t e l 8088
Proyecto Terminal
0 Modomínimo.
Modomáximo.
Modo de trabajo del Micro procesador
Modo Mínimo / Modo Máximo
En el modo máximo se tienen40 patas que contienen direcciones de memoria o de E/S para lecturas y escrituras.
Estas patas tienen la nomenclatura A0 a A19. Como el 8088 transfiere 8 bits de datos a la vez puede parecer lógico
que se utilicen otras 8 patas parael bus de datosBUSDATOS Sin embargo para reducir el minimo de patas necesarias
para que el 8088 se ajuste al paquete estándar de 40 terminales, las lineas de datos DO a D7 son multiplexadas junto
con las patas A0 y A7. Estas patas denominadas ADO y AD7 contienen direcciones al inicio del ciclo del bus y mas
adelante en el ciclo contienen datos. Existen reglas que rigen el tiempo de modo que nunca existe ambigüedades. Por
otra parte a la pata 33 se le denomina MNlMX (Mínima/Máxima) esta pata se activa para indicar que no esta en el
modo máximo sino en el mínimo. Para el control del bus de datosBUSDATOS se utilizan 6 patas. Las patas de estado
SO-S2 definen el tipo de ciclo del bus que se desea el 8088.
La señal RD indica que esta llevando a cabo un ciclo de lectura. La señal LOCK puede ser activada por el 8088
para indicar a otros maestros potenciales que liberen el bus a la memoria. La señal READY pretende entregar un byte
dememoriacuandoel8088 lo solicitaencuatrociclos de bus.LaseñalINTRyNMIseutilizanparaprovocar
interrupciones de la CPU. Para el arbitraje del bus se utilizan las líneas RQ y Gtx. La señal TEST permite al 8088
verificar el estado de coprocesador esta prueba se requiere cuando se encuentra conun dato de punto flotante el 8088
arrancando el 8087.La señal S3 a S6 y QSx contienen información del estado interno la deCPU.
BIT: Digito binario: la unidad de datos más pequeiia que un equipo puede almacenar. Los bits se expresan como
1 OO.
kilobyte-----l,OOO Bytes.
Megabyte--- 1,000,000 BYTES
Bus Datos: Es el canal por el cual se transfieren los datos, entre la memoria y el microprocesador. El canal de
datos para el 8088,transfiere 1 byte entre la memoria y el microprocesador
Tipos de Ejemplos:
1.Carga de DatosCARGA
2.Suma De DatosSUMA
3.Producto De DatosPRODUCTO
4.División de DatosDlVISlON
5.Resta de datosRESTA
6.Saltos, Incrementos, Apilar, DesapilarSALTO
Están desactivadas las teclas de registro y de valor, lo primero que tendrá que hacer es introducir el valor de
alguna de las instrucciones con las que cuenta el sistema por medio de las flechas izquierdas de edición, oprimiendo
el botón de "Enter" para que dichas instrucciones sean aceptadas
Repetir los pasos 1 y 2 mientras desea seguir editando, en caso contrario su programa editado se podrá guardar
tecleando la combinación de CTRL+ G o en su defecto abriendo el menú de Archivo y elegir la opción de guardar.
La Dirección de Editar se ira incrementando de acuerdo al valor en bytes entre instrucción e instrucción.
Para iniciar el programa deberá de oprimir el botón de Ejecutar, el cual le abrirá la ventana del simulador.
Si desea cargar un programa queya editó, basta con oprimir la combinación de teclas CTRL + A, o por medio del
menú Archivo eligiendo la opción de Abrir.
Para Resetear (Limpiar) Este botón es utilizado en el caso de que Ud. desee limpiar la memoria en cualquier
programa que este editando, y que no haya sido guardado previamente
Conclusiones
El Simulador del sistema minimo 8088, se implementa de acuerdo a la arquitectura básica de microprocesador de
Intel, de acuerdo a las perspectivas planteadas en el análisis previo a dicha presentación. Los alcances obtenidos son
significativos ya que se
logro la implementación de una gran
conjuntode
instrucciones
soportadas
por el
microprocesador.
La principal caracteristica que nos hereda este simulador, es que debidoha la estructura, y al tipo de instrucciones
manejadasconmicroinstrucciones,podemosseguiraumentandolascaracterísticasdelsistemaimplementado una
gran numero de instrucciones para el crecimiento de este simulador.
Con está herramienta será mucho más fácil el diseño y análisis de los componentes físicos, y la realización - en
esté caso de las principales operaciones lógicas que se pueden realizar en un sistema real, sin tanto margen de error,
ya que al tener una clara idea de lo que se está haciendo y como se esta realizando dará una visión más amplia y
simplificada del diseño a nivel hardware.
Alejandro Montejo 66
Title="Simula-1"
ExeName32="prueba. exe"
Apéndice. Name="Proyectl"
HelpContextID="l"
StartMode=O
Código Fuente VersionCompatible32="0"
Ma jorVer=l
A aontinuadón se muestra en el siguiente MinorVer=O
ordenel d i g o . RevisionVer=O
AutoIncrementVer=O
ServerSupportFiles=O
Form=Portada. rm f VersionCompanyName="UAM. "
Module=Tipos; Tipos y variables
globales. Bas Código Portada
Form=CPU interno. Frm VERSION 4.00
Form=Sistema minimo.frm Begin VB-Form Portada
Form=Desensamblador.frm Appearance = O 'Flat
Form=historial.frm Backcolor = &HOOFF0000&
Object=(F9043C88-F6F2-lOlA-A3C9- Caption = "Portada"
08002B2F49FB]#1.0#0; COMDLG32.OCX ClientHeight = 4140
Object=(BDC217C8-ED16-llCD-956C- ClientLeft = 2430
0000C04E4COA)#1.0#0; TABCTL32.OCX ClientTop = 1320
Object=(3B7C8863-D78F-lOlB-B9B5- Clientwidth = 7305
04021C009402}#1.0#0; RICHTX32.OCX FillColor = hHOOCOCOCO&
Object=(6B7E6392-850A-lO1B-AFCO- Forecolor = &H00000000&
4210102A8DA7]#1.0#0; COMCTL32.0CX Height = 4545
Object=(FAEEE763-117E-lOlB-8933- HelpContextID = 1
08002B2F4F5A)#1.0#0; DBLIST3Z.OCX Left = 2370
0bject=(00028C01-0000-0000-0000- LinkTopic = "Form3"
000000000046]#1.0#0; DBGRID32.0CX ScaleHeight = 4140
Reference=*\G(BEF6EOOl-A874-lOlA-8BBA- Scalewidth = 7305
00A?l00300CAB)#2.O#O#D:\WINDOWS\SYSTEM\O TOP = 975
LEPR032.DLL#Standard OLE Types Width = 7425
Reference=*\G{00025EOl-OOOO-OOOO-COOO- Windowstate = 'Maximized
2
OOOOOOOOOO46)#3.O#O#D:\ARCHIVOS DE Begin VB.Timer Timer1
PROGRAMA\ARCHIVOS Interval = 3000
COMUNES\MICROSOD:\ARCHIVOS DE Left = 1320
P R O G W \ A # M i c r o s o f t D A 03.0 Object TOP = 6600
Library End
Object=(OBA686C6-F7D3-lOlA-993E- Begin VB.PictureBox SSPanell
0000COEF6F5E]#1.0#0; THREED32.0CX Backcolor = &HOOCOCOCO&
Object=[C932BA88-4374-lOlB-A56C- Beginproperty Font IOBE35203-
00AA003668DC)#1.0#0; MSMASK32.OCX 8F91-llCE-9DE3-00AAO04BB851}
Object=[B16553C3-06DB-lOlB-85B2- Name Sans"MS
=
4
Alejandro Montejo Rubio
Simulador del Sistema Mínimo I n t e l 8088
Proyecto Terminal
HelpContextID 3 -
-
= TOP 5160
Left -270 -
- O 'False
= Visible
LlnkTopic = "Forml" -
- 375
Width
MaxButton = O 'False End
MinButton = O 'False Begin VB.CommandButton Command2
ScaleHeight = 6690 -
-
Caption
Scalewidth = 9510 "&Desensamblador"
TOP = 90 Beginproperty Font iOBE35203-
Visible = O 'False 8F91-llCE-9DE3-0OAAOO4BB85l)
Width = 9630 Name = "MS Sans
Windowstate = 2 'Maximized Serlf"
Begin VB.TextBox DE Size 8.25
Backcolor = &H00000000& Charset O
Beginproperty Font iOBE35203- Weight 400
8F91-llCE-9DE3-00AAOO4BB85l) Underline O 'False
Name = "MS Sans Italic O 'False
Serif" Strikethrough O 'False
Size = 8.25 Endproperty
Charset = o Height = 255
Weight = 700 Left = 2640
Underline = O 'False TabIndex = 76
Italic = O 'False TOP = 7080
Strikethrough = O 'False Width = 1335
EndProperty End
Forecolor = &HOOFFFFFF& Begin VB.TextBox intervalo
Height = 285 Enabled = O 'False
Left = 4680 Beginproperty Font (OBE35203-
MaxLength = 9 8F91-llCE-9DE3-00AAO04BB851]
TabIndex = 83 Name Sans
= "MS
Text = "0000:0000" Serif"
TOP 2280 Size 8.25
= = o
= =
Width = 1095 Charset
End Weiqht = 400
Begin VB.CommandButtonCommand3 Underline = O 'False
-
Caption -
Italic = O 'False
"Entrar-Dato-Mod" Strikethrough = O 'False
Beginproperty Font (OBE35203- Endproperty
8F91-llCE-9DE3-00AAOO4BB85l] Height = 285
Name = "MS Sans Left = 4320
Serlf" MaxLength = 5
Size = 8.25 TabIndex = 73
Charset = o Text = "1000"
Welght = 400 TOP = 6600
Underline = O 'False Width = 495
Italic = O 'False End
Strikethrough = O 'False Begin VB.CheckBox Checkl
Endproperty Caption = "Checkl"
-
- O 'False 1560
Enabled TOP =
Height - 285 Width = 375
-
-
Left 8160 End
Tablndex -- 63 Begin VB.TextBox CL
-
- "MAR" &H00000000&
Text BackColor =
-
- 4920
Top Beginproperty Font (0BE35203-
-
Visible - O 'False 8F91-1lCE-5DE3-00AAOO4BB851]
-
- 615 Name Sans "MS
Width =
End Serif"
Begin VB.TextBox T12 Size = 8.25
Helght - 285 Charset = o
-
- 87 60 400
Left Weight =
-
- 62 Underline O 'False
TabIndex =
-
-
Text "T12" Italic = O 'False
-
- 4920 Strikethrough = O 'False
Top
-
- O 'False Endproperty
Visible
-
- 615
Width Forecolor = &HOOOOFFOO&
End Height = 285
Begin VB.TextBox T2 Left = 6840
Height - 495 Tablndex = 53
-
-
Left 9360 Text = "00"
TabIndex -
- 61 = 1920
TOP
- "T2''
Text - Wldth = 315
-
-
4920 End
TOP
-
- O 'False Begin VB.TextBox DL
Visible
- 615 &H00000000&
Width -
BackColor =
End Beginproperty Font (OBE35203-
Begin VB.TextBox T1 8F91-llCE-9DE3-00AAO04BB851)
-
- O 'False
Enabled Name = "MS Sans
Height - 285 Serif"
-
- 8760
Left Size = 8.25
TabIndex -
- 60 Charset = o
-
- "T1" 400
Text Weight =
-
-
TOP 5160 Underline = O 'False
Visible -
- O 'False O 'False
Italic =
Width -
- 615 Strikethrough = O 'False
End Endproperty
Begin VB.TextBox AL Forecolor = &HOOOOFFOO&
BackColor -
-
&H00000000& Height = 285
BeglnProperty Font iOBE35203- Left = 6840
8F91-llCE-5DE3-00AAOO4BB851) Tablndex = 52
Name = "MS Sans Text = "00"
Serif" TOP = 2280
Size = 8.25 Width = 375
Charset = o End
Weight = 400 Begin VB.TextBox AH
Underline = O 'False BackColor = &H00000000&
Italic = O 'False Beginproperty Font iOBE35203-
Strikethrough = O 'False 8F91-llCE-9DE3-00AAO04BB8511
Endproperty
TabIndex = 70 Strikethrough = O
TO? = 5400 ' False
Width = 2775 Endproperty
End Height = 1725
Begin VB.Labe1 Label29 Left = o
Appearance = O 'Flat TabIndex = 66
BackColor -
- To? = 4380
&HOOOOFFOO& Width = 3135
Caption = "DS datos End
0400H - 07FFH" End
Beginproperty Font (OBE35203- Begin VB.ComandButton ComandoAnima
8F91-llCE-9DE3-00AAO04BB851~ Captlon = "&Anima"
Name = "MS Beginproperty Font IOBE35203-
Sans Serif" 8F91-llCE-9DE3-00AA004BB851)
Size = 8.25 Name = "MS Sans
Charset = o Serif"
Weight = 100 Slze = 8.25
Underline = o Charset = o
' False Welght = 400
Italic = o Underline = O 'False
' False Italic = O 'False
Strikethrough = O Strikethrough = O 'False
' False Endproperty
Endproperty Height = 255
-
Forecolor - Left = 1680
&H80000008& TabIndex = 33
Height = 255 To? = 6360
Left = 240 Width = 855
TabIndex = 68 End
TOP = 5190 Begin VB.Timer Anima
Width = 2775 Enabled = O 'False
End Interval = 200
Begin VB.Labe1 Label28 Left = 8760
-
-
BackColor TO? = 4920
&HOO@OFF@O& End
Caption = "OO0OH Begin VB.CommandButton Siguiente
Inicio de Ram" Caption = "&Slguiente"
Beginproperty Font IOBE35203- SPginProperty Font (OBE35203-
8F91-llCE-9DE3-00AAO04BB851) 8F91-1lCE-9DE3-00AAOO4BB851)
Name = "MS Name = "MS Sans
Sans Serif'' Serif"
Size = 8.25 Size = 8.25
Charset = o Charset = o
Weight = 700 Weight = 400
Underline = o Underline = O 'False
' False Italic = O 'False
Italic = o Strikethrough = O 'False
' False Endproperty
Strikethrough = O Height = 255
' False Left = 1680
Endproperty TabIndex = 31
Height = 255 TO? = 6720
Left = 120 Width = 855
TabIndex = 67 End
TOP = 5790 Begin VB.TextBox BusDatos
Width = 2535 Alignment 'Center
= 2
End BackColor = &HOOOOOOO0&
Begin VB.Labe1 Label27 Enabled = 0 'False
BackColor -
EeginProperty Font (OBE35203-
&HOOO@FFOO& 8F91-llCE-9DE3-00AAO04BB851]
Borderstyle = 1 'Fixed Name = "MS Sans
Single Serif"
Caption = "FFFFH Size = 8.25
MEMORIA RAM" Charset = o
Beginproperty Font (OBE35203- Weight = 400
8F91-llCE-9DE3-0OAAO04BB851) Underline = O 'False
Name = "MS Italic = 0 'False
Sans Serif" Strikethrough = 0 'False
Size = 8.25 Endproperty
Charset = o Forecolor = &HO@OO@@FF&
Weight = 700 Height = 285
Underline = o Left = 5040
' False TabIndex = 30
Italic = o Text = "0000"
' False TOP = 1560
Width = 615
Charset = o Endproperty
Weight = 400 Height = 270
Underline = O 'False Left = 3000
Italic = 0 'False TabIndex = 84
Strikethrough = O 'False Top = 2280
Endproperty Width = 1455
Height = 255 End
Left = 1680 Begin VB.Labe1 Label37
TabIndex = o Borderstyle = 1 'Fixed
TOP = 7080 Single
Width = 855 BeginProperty Font (OBE35203-
End 8F91-llCE-9DE3-00AAO04BB851)
Begin VB.PictureBox SSPanell Name = "MS Sans
AutoSize = -1 'True Serif"
Height 7 6375 Size = 8.25
Left = 7800 Charset = o
ScaleHeight = 6315 Welght = 400
Scalewidth = 3330 Underline = O 'False
TabIndex = 85 Italic = O 'False
TOP = 1200 Strikethrough = 0 'False
Width = 3390 Endproperty
End Height = 255
Begin VB.PictureBox Proceso Left = 4200
Height = 255 TabIndex = 80
Left = 4200 TOP = 6960
ScaleHeight = 195 Width = 3495
Scalewidth = 3435 End
TabIndex = 81 Begin VB.Labe1 Label34
TOP = 7200 Alignment = 2 'Center
Width = 3495 Borderstyle = 1 'Fixed
End Single
Begin VB.PictureBoxAbrirMemoria Caption = "Intervalo"
Height = 480 Beginproperty Font (OBE35203-
Left = 9840 8F91-llCE-9DE3-00AAO04BB851)
ScaleHeight = 420 Name = "MS Sans
Scalewidth = 1140 Serif"
TabIndex = 86 Size = 8.25
TOP = 1800 Charset = o
Width = 1200 Weight = 400
End Underline = O 'False
Begln VB.Labe1 Label17 Italic = O 'False
Borderstyle = 1 'Fixed Strikethrough = O 'False
Single Endproperty
Caption = "Segmento" Height = 300
Beginproperty Font iOBE35203- Left = 4920
8F91-llCE-9DE3-00AAO04BB851) TabIndex = 74
Name = "MS Sans TOP = 6600
Serif" Width = 1095
Size = 8.25 End
Charset = o Begin VB.Labe1 Label33
Weight = 400 Backstyle = o
Underline = O 'False 'Transparent
Italic = O 'False Borderstyle = 1 'Fixed
Strikethrough = O 'False Single
EndProperty Caption = Tiempo"
"A
Height = 285 BeglnProperty Font iOBE35203-
Left = 2880 8F91-llSE-9DE3-00AAO04BB851]
TabIndex = 40 Name = "MS Sans
TOP = 6120 Serif"
Width = 1095 Size = 8.25
End Charset = o
Begin VB.Labe1 Label38 Weight = 400
Borderstyle = 1 'Fixed Underline = O 'False
Slngle Italic = O 'False
Captlon = "Dirección Strikethrough = O 'False
Edltar" EndProperty
BeglnProperty Font iOBE35203- Height = 270
8F91-llCE-9DE3-00AAO04BB851) Left = 3240
Name = "MS Sans TabIndex = 72
Serif" Top = 6585
Size = 8.25 Width = 855
Charset = o End
Weight = 400 Begin VB.Labe1 Ayudarapida
Underline = 0 'False Alignment = 2 'Center
Italic = 0 'False BackColor = &HOOCOCOCO&
Strikethrough = O 'False
TabIndex = 14 Charset = o
TOP = 3840 Weight = 400
Width = 375 Underline = O 'False
End Italic = O 'False
Begin VB.Labe1 Label7 Strikethrough = O 'False
Borderstyle = 1 'Fixed Endproperty
Single Height = 285
Caption = "BP" Left = 1680
Beginproperty Font (OBE35203- TabIndex = 7
8F91-llCE-9DE3-00AAO04BB851} TOP = 2400
Name = "MS Sans Width = 375
Serif" End
Size = 8.25 Beqin VB.Label Label3
Charset = O EdrderStyle = 1 'Fixed
Weight = 400 Sinqle
Underline = O 'False Caption = "CX"
Italic = O 'False Beginproperty Font tOBE35203-
Strikethrough = O 'False 8F91-llCE-9DE3-00AA004BB851}
Endproperty Name Sans
= "MS
Height = 285 Serif"
Left = 1680 Size = 8.25
TabIndex = 12 Charset = o
TOP = 3480 Weight = 400
Width = 375 Underline = O 'False
End Italic = O 'False
Begin VB.Labe1 Label6 Strikethrough = O 'False
Borderstyle = 1 Fixed Endproperty
Single Height = 285
Caption = "DI" Left = 1680
Beginproperty Font (OBE35203- TabIndex = 5
8F91-llCE-9DE3-OOAA004BB851) TOP = 2040
Name = "MS Sans Width = 375
Serif" End
Size = 8.25 Seqin VB.Labe1La2;cl:
Charset = o E,JrderStyle = 1 'Fixed
Welght = 400 Single
Underline = O 'False Caption = "BX"
Italic = O 'False Beginproperty Font (OBE35203-
Strikethrough = O 'False 8F91-llCE-9DE3-00AAO04BB851)
Endproperty Name = "MS Sans
Height = 285 Serif"
Left = 1680 Size = 8.25
TabIndex = 10 Charset = o
Top = 3120 Weight = 400
Width = 375 Underline = O 'False
End Italic = O 'False
Begin VB.Labe1 Label5 Strikethrough = O 'False
Borderstyle = 1 'Fixed Endproperty
Single Helght = 285
Caption = "SI" Left = 1680
Beginproperty Font (OBE35203- TabIndex = 3
8F91-llCE-9DE3-00AAO04BB851) TOP = 1680
Name = "MS Sans Width = 375
Serif" End
Size = 8.25 Begin VB.Labe1 Labcll
Charset = o Borderstyle = 1 'Fixed
Weight = 400 Single
Underline = O 'False Caption = "AX"
Italic = O 'False Beginproperty Font (OBE35203-
Strikethrough = O 'False 8F91-llCE-9DE3-00AAO04BB851)
Endproperty Name = "MS Sans
Height = 285 Serlf"
Left = 1680 Size = 8.25
TabIndex = 8 Charset = o
TOP = 2760 Weight = 400
Width = 375 Underllne = O 'False
End Italic = O 'False
Begin VB.Labe1 Label4 Strikethrough = O 'False
Borderstyle = 1 'Fixed Endproperty
Single Height = 285
Caption = "DX" Left = 1680
Beginproperty Font (OBE35203- TabIndex = 1
8F91-llCE-9DE3-00AAOO4BB85l} TOP = 1320
Name = "MS Sans Width = 315
Serif" End
Size = 8.25 Begin VB .Menu Arch: vo
Case "PUSHMEM"
Proyecto Terminal
' Ejecución
de Apilamiento en el SS de un dato del
y Case "ORIGEN=BUSDATOS"
I BusDatos.Text = Origen PILA = STACK$
ICase "ORIGEN=BUSDIRRECIONES" Seleccionamos el segmento de pila
' EsribirBusDirecciones Segmento$ = DATOS$
' Case "BUSDIRRECIONES=ORIGEN" Seleclonamos el segmento de pila
' Case "DESTINO=BUSDIRRECIONES" Desplazamiento$ =
' Case "BUSDIRRECIONES=DESTINO" Trim(Hex(Val(Trim(T1.Text)) +
' Case "DESTINO ES T1" Hex(Val(Trim(T2.Text)1 ) )
Set Destino = TI BusDirecciones.Text =
'Case "DESTINO ES T2" Hex ( (Val("&h" + sp.Text) + Val ("&H" +
' Set Destino = T2 "0800")) )
'Case "DESTINO ES Tl2" While
' Set Destino = T12 Len(BusDirecciones.Text) < 5
Case "ORIGEN ES T1"
I BusDirecciones.Text =
' Set Origen = T1 "O" + BusDirecciones .Text
'Case "ORIGEN ES T2" Wend
' Set Origen = T2
'Case "ORIGEN ES T12" While Len(Desplazamient0S) < 4
' Set Orlgen = T12 Desplazamiento$ = "O" +
'faltan los demas casos Desplazamiento$
Wend
Case "SALTA" ' Ejecución de DirecclonEditar = CLng ("&H"
un salto relativo + Segmento$) * 16 + CLng ("&H" +
ip.Text = Hex ( (Val( " & h " + Desplazamiento$)
ip.Text) + Val("&h" + Destino.Text)1 ) Auxl =
Case "PUSHREG" 'Ejecución del Str(Mernorla(Direcc1onEditar))
apllamiento en SS de un registro
PILA = STACKS ' Seleccionamos aux2 =
el segmento de pila Str(Memoria(Direcci0nEditar + 1))
T1.Text = While Len(sp.Text) < 4
Hex(Val(Trim(Tl.Text)1 ) sp.Text = "O" + sp.Text
T2.Text = Wend
Hex(Va1 (Trlm(T2.Text))) DireccionEditar = CLng ("&H"
T12.Text = Trim(T1.Text + + PILA) * 16 + CLng("&H" + sp.Text)
T2. Text) Memoria(Direcci0nEditar) =
Desplazamiento$ = T12.Text Hex (Val("&h"+ Auxl) )
BusDirecciones.Text = Memoria(Direcci0nEditar +
Hex( (Val("&h" + sp.Text) + Val("&H" + 1) = Hex (Val("&h"+ aux2) )
"0800")) ) sp.Text = Hex( (Val("&h" +
While sp.Text) + Val (2)1 )
Len(BusDirecciones.Text) < 5 BusDatos .Text = Hex(Aux1) +
BusDirecciones.Text = Hex (dux2)
"O" + BusDirecciones.Text
Wend Case "POPREG"
' BusDirecciones.Text = E~ecuciónde Desapila del SS a un reg
T12. Text destino de 16 Bites
'While Segmento$ = STACK$
Len(BusDirecci0nes.Text) < 5 Seleccionamos el segmento de pila
'BusDirecciones.Text = While Len(sp. Text)< 4
"O" + BusDirecciones .Text sp.Text = "O" + sp.Text
U Wend Wend
While DireccionEditar = CLng ("&H"
LeniDesplazarnientoS) < 4 + Segmento$) * 16 + CLng("&H" +
Desplazamiento$ = "O" + sp.Text) ' Direccion del SS
Desplazamiento$ BusDirecciones.Text =
Wend Hex((Val("&h" + sp.Text) + Val("&H" +
DireccionEditar = "0800")) )
CLng("&H" + PILA) * 16 + CLng("&H" + While
sp. Text) Len(BusDlrecciones.Text) < 5
Memoria(DireccionEd1tar) BusDirecciones.Text =
= CLng("&H" + Left (Trim(Destino), 2)) "O" + BusDirecciones .Text
Auxl = Hex (CLng("&H" + Wend
Left (Trim(Destin0) , 2) ) ) auxiliar1 =
Memoria(Direcci0nEditar Hex(Val(Memoria(DireccionEditar - 1)))
+ 1) = CLng("&H" + Right(Trim(Destino), auxiliar2 =
2)1 Hex(Val(Memoria(Direcci0nEdltar - 2)))
+
aux2 = Hex (CLng ("&H" BusDatos.Text = auxiliar2 +
Rlght (Trim(Destin0), 2) ) auxlliarl
BusDatos.Text = Auxl + Destino.Text = auxiliar2 +
aux2 auxiliarl ' Asignación al resgistro
+
sp.Text = Hex( (Val("&h" destino
sp.Text) + Val(2) )
20
I Alejandro Montejo Rubio
Simuladordel Sistema Minimo I n t e l 8088
Proyecto Terminal
' Wend
End Sub Private Sub Labellb~MouseMove(ButtonAs
Integer, Shift As Integer, X As Single,
Private Sub ip_KeyPress(KeyAsciiAs Y As Single)
Integer) Ayudarapida.Caption = "Este campo nos
ValidaHexadecimal KeyAscli, ip permite trasladarnos al desplazamiento
End Sub indicado, dentro del segmento asignado"
E,nd Sub
Prlvate Sub labell-MouseMove(Button As
Integer, Shift As Integer, X As Single,
Y As Single) Private Sub Labell7_MouseMove(ButtonAs
Ayudarapida.Caption = "Registro Integer, Shift As Integer, X As Single,
Acumulador de 16 bits ó 2 bytes Y As Single)
conserva el resultado temporal despues Ayudarapida.Caption = "Este campo
de realizar operaciones" permlte cambiar el segmento, que esta
End Sub asiqnado por default"
End S u h
Private Sub Labello-Click0
SegmentoDump.Text = ss.Text Private Sub Labell8-MouseMove(Button As
NuevoValor. Text= "00" Integer, Shift As Integer, X As Single,
End Sub Y As Single)
Ayudarapida.Captlon = "El DUMP es un
Private Sub LabellO-MouseMove(Button As zoom que se realiza sobre la memoria en
Integer, Shift As Integer, X As Single, el segmento asignado"
Y As Single) End Sub
Ayudarapida.Caption = "Registro de
Segmento de Pila, Direcclona el inicio
de la sección dememoria que es la Prlvate Sub Labell9_MouseMove(Button As
pila" Integer, Shift As Integer, X As Single,
End Sub Y As Single)
Ayudarapida.Caption = "Reglstro de
Private Sub Labelll-Click() datos de un byte, es de uso general"
SegmentoDump.Text = es.Text
NuevoValor.Text = "00" End Sub
"Wingdings" "Wingdings"
charset = 2 charset = 2
weight = 700 weight = 700
size = 18 size = 18
underline = O 'False underline = O 'False
italic = -1 'True Italic = -1 'True
strikethrough = O 'False strikethrough = O 'False
Endproperty Endproperty
Height = 615 Height = 615
Index = 4 Index = o
Left = 8760 Left = 5640
TabIndex = 45 TabIndex = 41
TOP = 1800 TOP = 1800
Width = 615 Width = 615
End End
Begin VB.CommandButton Funcion Begln VB.TextBox DireccionEditarl
- 11 11
Caption - ~
Alignment = 'Center
2
Beginproperty Font BackColor = &HOOCOCOCO&
-
-
name Beginproperty Font
"Wingdings" name = "MS Sans
charset = 2 Serif"
weight = 700 charset = o
size = 18 weight = 400
underline = O 'False size = 8.25
italic = -1 'True underline = O 'False
strikethrough = O 'False italic = O 'False
Endproperty strikethrough = O 'False
Height = 615 Endproperty
Index = 3 Forecolor = &HOOOOOOFF&
Left = 8160 Height = 285
TabIndex = 44 Left = 8160
TOP = 1800 Locked = -1 'True
Wldth = 615 TabIndex = 40
End Text = "0000:0000"
Begin VB.CommandButton Funcion TOP = 5610
Caption = "A" Width = 975
Beginproperty Font End
-
-
name Begin VB.CommandButton Tecla
"Wingdings" Caption = "8"
charset = 2 Beginproperty Font
weight = 100 name = "Times New
size = 18 Roman"
underline = O 'False charset = o
italic = -1 'True welght = 100
strikethrough = O 'False size = 21.15
Endproperty underline = O 'False
Helght = 615 italic = O 'False
Index = 2 strikethrough = O 'False
Left = 6840 Endproperty
Appearance = 1
~
FlleName = * .mem"
IN
End End
Begin VB.Labe1 Label7 Begln VB.Labe1 Label1
End Wend
Begin VB.Menu Ejecutar DlreccionEditar = CLng ("&H" +
Caption -~
Segmento$) * 16 + CLng("&H" +
"&Ejecutar" Desplazamiento$)
Shortcut = ^E DireccionEditarl = UCase(Segmento$ +
End . t Desplazamiento$)
11 I,
Edicion = 1
Funcion(4).Enabled = True
Funcion(O).Enabled = False Elself
Operacion(CodigoOperacion).Dato8 Then
Funcion(1) .Enabled
= False Ediclon = 5
DISPLAY.Text
Funcion(3).Enabled = True oo "
Wend If RegistroActual c 8
Then RegistroActual = 8
DireccionEditarl.Text = aux$ + AuxlS End If
DISPLAY.Text = DISPLAY.'cxt =
Operacion(CodigoOperacion).mnemonico Reqistros(ReqistroActua1)
Case 6 End Select
Edicion = 7 End Sub
Open Abrirmem.filename For Input As ' textual de cada componente fisico del
1 sistema 8088,
On Error GoTo Finalizarcerrar 'La llamada al segundo procedimiento se
While Not EOF(1j efectua pasando l o s argumentos al
prozedimiento
Input # I , Direccion, Tamaño 'con los nombres de los archivos
necesarios para cada componente
For i = 1 To Tamaño
Call Coordenadas
Input #1, Dato Call
Memoria(Direcci0n + i - 1) Componentes informacion("picl4 .bmp",
= Dato " 8 2 5 5 . txt"j-
ProgressBarl.Value = i
Next i End Sub
Wend
' ProgressBarl.Value = Private Sub Ne~-8627P7~MouseMove(Button
ProgressBarl.Min As Integer, Shift As Integer, X As
Slngle, Y As Single)
Finalizarcerrar: ' Muestra mensaje en la parte inferlor
Close 1 de la pantalla el mensaje"
Forml.HazDump Label3.Caption = "Oprima sobre el
Finalizar: componente un cllck, para Información"
End Sub
End Sub
Prlvate Sub Nec-D8279C2_CllckO
' Este evento ejecuta los
procedimientos necesarios para mostrar
el grafico y la información
Private Sub ' textual de cada componente fisico del
MenuDesensamblar-Click0 sistema 8088,
Desensamblador.Show 1 'La llamada al segundo procedimiento se
efectua pasando los argumentos al
End Sub procedimiento
'con los nombres de los archivos
Private Sub MenuGuardar-Click0 necesarios para cada componente
' GuardarArchivo
Dim Direccion AS Long Call Coordenadas
Dim Tamaño As Integer Call
On Error GoTo Finalizar Componentes-informacion ("pic13 .bmp",
Abrirmem.Flags = &H806& "8279.txt"j
Abrirmem.DialogTit1e = "Guardar
memoria" End Sub
Abrirmem.ShowSave
Open Abrirmem.filename For Output Private Sub
As 1 Nec D8?79C2-MouseMove(Button As
Label8 .Caption = "Archivo : " + Integer, Shift As Integer, X As Single,
Abrirmem.filename Y A; Single)
Direccion = O ' Muestra mensale en la parteinferior
Do de la pantalla el mensaje"
Direccion = Label3.Caption = "Oprima sobre el
Forml.ObtenDireccionNoCero(Direccionj componente un click, para información"
If Direccion >= 1023 Then Exit End Sub
Do
Print #1, Direccion Private Sub PHIL-9131XN-CllckO
dux& = Direccion ' Este evento ejecuta los
Tamaño = procedimientos necesarios para mostrar
Forml.ObtenTamaño(aux&j el grafico y la información
Print #1, Tamaño ' textual de cada componente fisico del
For i = 1 To Tamaño slstema 8088,
Print # I , Memoria(Direcci0n 'La llamada al segundo procedimiento se
+ i - 1) efectua pasando los argumentos al
Next i procedimiento
Direccion = Direcclon + Tamaño 'con los nombres de los archivos
Loop Until Direccion >= 1023 necesarios para cada componente
Call Coordenadas
Close 1 Call
Finalizar: Componentes informacion ( " ~ 1 ~bmp",
6.
"0809.txt")-
End Sub
End Sub
Codigo Desensambla
VERSION 4.00 Begin VB.Form Desensamblador
Appearance -
- O 'Flat k = l
-
- &HOOFF0000& While Mid(Texto, k, 1) <>
BackColor " "
If UltimoValor = BarraVertical.Value -
1 Then Private Sub Borrar-Click0
BarraVertical.Va1ue = UltimoValor + Hide
CambioAdelante End Sub
UltimoValor = BarraVertical.Va1ue
ElseIf UltimoValor = Private Sub CambiarDireccion-Click0
BarraVertical.Va1ue + 1 Then aux = InputBox("Dirección de inicio
BarraVertica1.Value = UltimoValor - para desensamblar", "Cambio",
CambioAtras Str(SegDesensamb1ar))
UltimoValor = BarraVertical.Va1ue 'SegDesensamblar = CLng("&h" + aux)
Else SegDesensamblar = Val("&h" + aux)
UltimoValor = BarraVertical.Va1ue Desensamb1ador.Refresh
End If End Sub
Desensamblador.ScaleMode = 4
Desensamblador.ScaleWldth = Prlvate Sub Form-Load ( )
Desensamblador.ScaleWidth CambioAtras = 1
Desensamblador.ScaleHe!.ght = bander2Sambios = True
Desensamblador.Sca1eHeight End Sub
Desensamblador.BarraVertica1.Left =
Desensamblador.ScaleWidth - 2 Private Sub Form-Paint ( 1
Desensamblador.BarraVertica1.Top = O Desensamb1ador.ScaleMode = 4
Desensamblador.BarraVertica1.Height = Desensamblador.ScaleWidth =
Desensamblador.Sca1eHeight Desensamblador.ScaleWidth
Desensamblador.Cls Desensamb1ador.ScaleHeight =
PonCódigo Desensamblador.ScaleHeight, Desensamblador.Sca1eHeight
SegDesensamblar Desensamblador.BarraVertica1.Left =
banderacambios = True Desensamblador.ScaleWidth - 2
End If Desensamblador.BarraVertica1.Top = O
End Sub Desensamblador.BarraVertical.Height =
Desensamblador.Sca1eHeight
Desensamblador.Cls
PonCódigo Desensamblador.ScaleHeight,
SegDesensamblar
End Sub
2
Alejandro Montejo Rubio