Sunteți pe pagina 1din 125

UNIDAD : IZTAPALAPA.

'~IVISIÓN : CIENCIAS BASICAS E INGENIERIA.

/
CARRERA : LICENCIADO EN COMPUTACI~N.

MATERIA : PROYECTO DE INVESTIGACIóN.

'TITULO : SIRNULADOR DEL SISTEMA. MÍNIMO 8088

+ECHA : SEPTIEMBRE DE 1998.

ALUMNO : MONTEJO RUBIO ALEJANDRO.


/'

MATRICULA : 90323070

ASESOR : ING. MIGUEL ANGEL Ruíz SANCHEZ.


!Y eyk.xJD /?/+y'"f
AVISO.
El software que se describe en este manual está protegido por derechos de autor. Queda
prohibida su fotocopia o reproducción,encualquierforma, sin previaautorizaciónpor
escrito del autor.

Los nombresdeproductosaquímencionadospueden ser marcas


comerciales y/o marcas comerciales registradas de sus respectivas
compañías.

Intel es una marca registrada, y su serie de procesadores son marcas


registradas por Intel Corporatión.

Microsoft,ellogotipodeMicrosoft, MS-DOS, MicrosoftVisual


Basic, MicrosoRPowerPoint y MicrosoftWord, son marcas
registradas

Windows 3.1 1 y Windows 95 son marcas de Microsoft Corporatión.

Paintbrush es una marca deZsoR Corporatión.


Core1 Drowver.7 esun producto registrado porLotus Inc.
INTRODUCCION................................................................................................................................. 1

INTRODUCCION................................................................................................................................. 2

RESEÑA HISTóRICA DEL MICROPROCESADOR INTEL............................................................... 3


RESEÑA DEL PROCESADOR INTEL
............................................................................................. 4
INTEL 3000 .......................................................................................................................................... 4
INTEL 4004 .......................................................................................................................................... 4
INTEL 4040 .......................................................................................................................................... 4
INTEL 8008.......................................................................................................................................... 5
INTEL 8048 (MCS-48) ......................................................................................................................... 5
INTEL 8080.......................................................................................................................................... 6
INTEL 8085 .......................................................................................................................................... 6
INTEL 8086.......................................................................................................................................... 7
INTEL 8088.......................................................................................................................................... 8
Procesador 8088 ............................................................................................................................... 10
INTEL 80286 ...................................................................................................................................... 10
INTEL 80386 ...................................................................................................................................... 11
ARQUITECTURA DEL MICROPROCESADOR INTEL 8088 ........................................................... 14

(ARQUITECTURA BASICA DEL MICROPROCESADOR 8088) ..................................................... 15

FUNCIONAMIENTO DEL SIMULADOR........................................................................................... 23


FUNCIONAMIENTO DEL SlMUlADOR (MANUAL DE USUARIO) ................................................................ 24
OBJETIVO :. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
JUSTlFlCAClON................................................................................................................................ 24
PROPOSITO :................................................................................................................................... 24
DESCRIPCION DELSISTEMA: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
PRESENTACI~N . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
PORTADA........................................................................................................................................ 27

Alejandro Montejo Rubio


1

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

Alejandro Montejo Rubio


.
.
Simulador del Sistema Mínimo Intel 8088
Proyecto Terminal

INTRODUCCI~N.

Alejandro Montejo Rubio 1


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.

Esté reporte se divide para seis capitulas importantes:


su mejor comprensión en

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.

Funcionamiento del Simulador, mediante las principalesoperaciones y el uso de la manipulación de la


memoria se llevard a cabo el desarrollo de operaciones y resultados, todo dentro de
un entorno gr6fico y sencillo.

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

Reseña histórica del microprocesador Intel

Alejandro Rubio Montejo 3


Simulador del Sistema Mínimo Intel 8088
Proyecto Terminal

RESENA DEL PROCESAUOR INTEL

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.

INTEL 8048 (MCS-48)


Microcomputador en un chip, que incluye en una pastilla de 40 patillas todos los componentes necesarios para
realizar un microcomputador totalmente operativo. Concretamente incluye:
CPU de 8 bits con generador de reloj
e 1 K * 8 ROM para memoria de programa
O 64 * 8 RAM para memoria de datos
d 27 líneas deentradalsalida

Alejandro Montejo 5
Simulador del Sistema Minimo I n t e l 8088
Proyecto Terminal

Temporizador/Contador programable de 8bits

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.

Enformasimilar,existen los registrosdesegmentodedatosysegmentode pila, para teneraccesoadichos


segmentos. Por último, hay un registro de segmento extra que se usa como repuesto según se necesite.

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 8088 tiene 14 registros,todosde 16 bits, perocadaunodiferente.Enprincipio, AX seusa para cálculos


aritméticos. Por ejemplo, para la suma de dos enteros, un programa puede cargar uno de ellos en A X , luego sumarle el
segundo y por último almacenar AX en memoria. Se pueden también usar otros registros, pero las instrucciones para
hacerlo son más largas y lentas que aquellas quesólo usan A X .

BXse usa por lo generalparaalmacenarapuntadoresdememoria: CX paraalmacenar el contadorenlas


instrucciones de iteración. Para repetir una iteración n veces, se carga n en CX, en cada iteración se decrementa CX y
cuando llega a cero, ésta termina.

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.

Cadaunodeestosregistrosde 16 bits constadeunamitadinferioryde una superior,lascualessepueden


direccionar en forma individual. Cuando se usan de esta manera, forman una serie de ocho registros de 1 byte que
pueden utilizarse para manejar cantidades de 1 byte. Este ejemplo de registros de esa manera es un remanente de la
forma en que trabajaba el antiguo 8088.

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.

Los siguientesdosgrupos se refierenaverificacionesycomparacionesy a los saltosindependientes de los


resultados de éstas. Los resultadosdelascomparacionessealmacenanen los diferentes bits delregistrode
BANDERAS. La notación Jxx se refiere a un conjunto de instrucciones que efectúan saltos condicionales, dependiendo
del resultado de la comparación.

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.

En el nivel de máquinaconvencional, el procesador80286esmuyparecidoal8088.Para facilitar que los


programasdel8088corrieran en el 80286, Intel equipóa la pastillacondosmodosdeoperación.En el modode
direccionamiento real (normalmente denominado modo real), el 80286 pretende ser un 8088 y hace (casi) todo lo que
un8088 hubiera efectuado.En el modoprotegidodedireccionamiento virtual (usualmentedenominadomodo
protegido), ofrece algunas características que no existen enel 8088.

Enambosmodos, el 80286tiene los mismos14registros, los cualestienen la mismalongitudyrealizanlas


mismas funciones que en el 8088. Además, todas las instrucciones trabajan en el 80286, en las dos modalidades y
tienen la mismasemánticaconexcepcióndeunoscuantoscasos.Lasunicasdiferenciasseencuentranenlas
características de implantación definida, como qué sucede se coloca el registro SP en la pila. En este caso, el 8088
decrementa primero SP y luego coloca el nuevo valor en la pila, mientras que el 80286 primero salva SP y luego coloca
el valorsalvado.Estadiferenciasedebeacambiosen el microcódigo.Engeneral,casitodos los programas"bien
comportados" en el 8088 correrán sin necesidad de modificaciones enel 80286, en ambos modos.

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.

Enmodoprotegido,el 80286 tienetambiénotrasdiferenciasconrespecto al 8088. El uso dela palabra


"protegido" en el nombre de la modalidad sugiere que proporciona cierta protección. Esta observación es correcta; es
posibleinicializar las tablas de segmentode tal formaquecuandose utilice el 80286 paraunsistemade
multiprogramación, cada proceso puede precaverse de accesar segmentos pertenecientes a otro.

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.

Porúltimo,lasinstruccionesVERRyVERW se refierena los procesosdesegmentacióndel 80286. Estas


permitenqueunprogramamidaelterrenoantesdeentraren él. Unprogramapuedeevitarcaeren un errorde
segmentación, por medio de una verificación previa.

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.

Comoresultadode esta arquitectura,unprogramaen el 80386puededireccionarunmáximode 16 384


segmentos de hasta 4G cada uno, para unespacio total de direcciones de 246 bytes. Este espacio es mayor o igual al
de casi todas las macro y super computadoras. Los tiempos en los que era posible diferenciar una microcomputadora
de una supercomputadora con sólo mirar cuál tenia un mayor espacio de direcciones, pertenecenal pasado.

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.

La incorporaciónde los registrosdesegmento FS y GS, requiriódedosnuevosprefijosparaespecificar la


siguienteinstrucciónqueutilizarán,enlugardelsegmentoquenormalmentese utiliza (DS).Ademásseagregaron
también otros dos prefijos, para permitir que una instrucción individual en un segmento de 16 bits usara una dirección o
un operando de 32 bits y viceversa.

El últimopuntoes la presenciadeunascuantasinstruccionesnuevasparaverificaciónde bits, conversiónde


datos, movimientos y otras cosas. En términos generales, estas instrucciones son mucho más exóticas que las que se
agregaron al 80286. Las instrucciones BFS y BSR examinan sus operandos buscando bits con valor de O y fijando los
valores de las BANDERAS de acuerdo con ello BTx es un grupo de cuatro instrucciones que pueden verificar, fijar,
borrar y complementar bits individuales en una palabra, sin alterar a los otros bits. Haciendo una extensión de signo,
CWDE y CDQ convierten palabras sencillas en dobles y dobles en cuádruples respectivamente. Las dos instrucciones

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

Arquitectura del microprocesador Intel 8088


Simulador del Sistema Mínimo I n t e l 8088
Proyecto Terminal

(ARQUITECTURA BASCA DEL MICROPROCESADOR8088)

Arquitectura Interna Básica

Los microprocesadores modernos , al igual que los anteriores, buscan instrucciones


en la memoria con una operación de lectura, mientras el microprocesador ejecuta la instrucción, el sistema de
memoria está ocioso. La familia de microprocesadores Intel, empezando con el 8086 y el 8088, aprovecha este tiempo
de memoria ociosa buscando con anticipación la siguiente instrucción mientras el microprocesador ejecuta la actual. En
la siguiente figura se muestra el proceso básico del trabajo del microprocesador.

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

Arquitectura del sistema

Las comunicaciones entre el sistema y el microprocesador ocurren por medio de tres


canales que son los siguientes:
Canal de dirección

El canal de direcciones suministra una dirección en la memoria para la memoria del


sistema o el espacio deentraddsalida (E/S) para los dispositivosde E/s del sistema.
Canal de datos

El canal transfiere &tos entre el microprocesador y la memoria y los dispositivos de


E/S conectados en el sistema.

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 .

Canal de dirección (20 bits) S A, f) A,,


Sistema A memoria
8088 t Canal
dedatos ( 8 bits) 3 Do D, y EIS

control
de
Canal 3 RD, WR IO/M
1 I I

1 Alejandro Montejo Rubio 15


Simulador del Sistema Mínimo I n t e l 8088
Proyecto Terminal

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

Mapa de memoria ldgica del microprocesador 8088

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

Registros de microprocesador 8088

El arreglo de registrosinternosdelmicroprocesadorestadividido en tresgrupos: registrosde uso general,


registros de apuntadores, registros de índice y registros de segmento. Además de esos grupos existe un registro
de banderas que señala las condiciones respecto al funcionamiento de la unidad aritmética y lógica (ALU).

Registro de propósito general.


Los registrosdeusogeneral se puedendireccionaren el 8088 comoregistros de 16 bytes(AX,BX,CX,DX) o
como registros de 8 bits (AH,AL,BH,BL,CH,CL,DH,DL). Los registro de uso general se utilizan para tareas especificas,
por esta razón a cada uno de estos se les da un nombre (Acumulador, Base, Contadory Datos).

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

Registros apuntadores e indices

Estos registrossontambiéndeusogeneral , peroseutilizanmásamenudoparaapuntar a la localidad de la


memoria que contiene los datos del operando de muchas instrucciones.

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.

IP ( Apuntador de instrucciones ): Se utidza siemprepara dirrecionar a la siguiente instrucciónque va a


ejecutar el microprocesador. Para formarla 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 conel apuntador a instrucción ( IP ).

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.

SS (segmentode pila): El segmento de pila define la superficie de la memoriautilizada 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
también dirreciona los datos que hay dentro del segmento de pila.

DIRECCIONAMIENTO DEL 8088

Elmicroprocesador 8088, funciona enmodo real. El funcionamiento en modorealpermitequeel


microprocesador sólo direcciones al primer lMbyte de espacio enla memoria.

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.

En la siguiente figura se ilustra como el esquemadedirrecionamientodesegmentomásdesplazamiento


selecciona una localidad en la memoria.

Alejandro Montejo Rubio 18


Simulador del Sistema Minimo Intel 8088
Proyecto Terminal

Memoria en modo real

En la figura anterior se muestra unsegmentodememoriadeempiezaen la localidad 1000H y termina en la


IFFFFH,de 64K bytes de longitud. También se muestra la forma en que un desplazamiento de FOOOH selecciona la
localidad 1FOOOH en el sistema de la memoria.

Registros de segmento y desplazamiento implícitos


El registro de segmento de código define el principio de un segmento de código y el apuntador de instrucciones
define el desplazamiento, el cual apunta a la siguiente instrucción dentro de un segmento de código a ejecutar por el
microprocesador.

por ejemplo:
CS:IP

Donde CS: direcciona el principio del segmento de código dentro del mapa de memoria.

IP: apunta a la siguiente instrucción dentro del segmento de código, y es el desplazamiento.

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.

En la tabla se ilustran otros direccionamientos implícitos para la memoria en el microprocesador 8088.

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

Alejandro Montejo Rubio 19


Simulador del Sistema Minimo I n t e l 8088
Proyecto Terminal

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

Sistema de memoria con los cuatro segmentos

En el siguiente gráfico se muestra un traslape transversal imaginario de segmentos, dentro de 1 Mega de


memoria
Segmento de
pila

Segmento de
Datos

-
I
t
! Segmento de
Código

Alejandro Montejo Rubio 20


Simulador del Sistema Minimo I n t e l 8088
Proyecto Terminal

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.

Control del procesador

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

Alejandro Montejo Rubio 42


Simulador del Sistema Mínimo I n t e l 8088
Proyecto Terminal

Principales instrucciones para el microprocesador 8088

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

Alejandro Montejo Rubio 22


Simuladordel Sistema Minimo I n t e l 8088
Proyecto Terminal

Funcionamiento del Simulador.

1
I
Alejandro Montejo Rubio
23
Simulador del Sistema Mínimo Intel 8088
Proyecto Terminal

Funcionamiento del Simulador (Manual de Usuario)

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.

DESCRIPCION DEL SISTEMA:

Composición física de un Sistema Mínimo.

El simulador está formadoportodaslaspartesfísicas(circuitosintegrados)delsistemamínimo,comoson la


memoria, el microprocesador>bus de datos,unteclado, un display,resistencias,capacitores,diodos, leds,etc.En
donde el display permitirá observar las operaciones que se simulan, y nos mostrara los resultados.

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.

a) Recursos Mínimosdel Sistema


El equipo mínimo necesario para ejecutar este programa esel siguiente:

Alejandro Montejo 24
Simulador del Sistema Mínimo Intel 8088
Proyecto Terminal

Hardware

1.- Procesador 486 (como mínimo) en adelante


2.- 8Mb en Ram (optimo)
3 .- Mouse (indispensable)
Software

1.- Windows 3.xx (en adelante)


2.- Discos de instalación (incluido).
3.- A r c h i v o de ejemplos incluido).
b) I n s t a l a c i ó n
A continuación, se explicará paso a paso, como instalar, accesar y utilizar el programa,
así como una descripción de su funcionamiento y su ayuda escrita.

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:

A b o c a n d o solo d o s c a s o s d e i n s t a l a c i ó n , p a r a W i n d o w s 3.1 1 y p a r a W i n d o w s 95.


* WIN 3.1 1
U t i l i z a n d oe lr a t ó n( r e c o m e n d a b l e )s et e n d r áq u ee s c o g e r( d a n d od o b l ec l i c k al b o t ó n
izquierdo del ratón)

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

Alejandro Montejo Rubio 25


Simulador del Sistema Minimo Intel 8088
Proyecto Terminal

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

Alejandro Montejo Rubio 28


Simulador del Sistema Mínimo Intel 8088
Proyecto Terminal

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

Dirección de Editar: Le proporciona la dirección de edición actual

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

Alejandro Montejo Rubio 29


Simulador del Sistema Mínimo Intel 8088
Proyecto Terminal

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.

Alejandro Montejo Rubio 30


Simulador del Sistema Minimo I n t e l 8088
Proyecto Terminal

m Índice(CTRL + I): El cual muestra la ventana de índice, que es similar a la ventana


de Portada
m Salir (CTRL + S): Termina la ejecución del sistema
o Comandos : Se puede activar por medio de la combinación de teclas ALT + C, este
menú cuenta con tres subménus que son:
m Cambiar Dirección de Edición(CTRL+ C): Nos muestra una caja de mensaje donde
podemoscambiareldesplazamiento,dentrodelsegmentodecódigoparaeditar
programas
m Ejecutar (CTRL + E): Muestra la pantalla de microprocesador interno, en la cual se
muestra las operaciones internas de ejecución
m Desensamblar(CTRL + D):Muestraunaventanaconelcódigo en lenguaje
ensamblador
m Historial (CTRL + H): Muestra una breve reseña histórica de la familia Intel. Con
dos modos deDresentación de colores para su mejor visualización.

MicroAvuda.
Esta se muestra en la parte baja de la ventana, al colocarse sobre cualquier componente indicara que función
realiza.

La etiqueta "Archivo *.mem" nos indica el archivo cargado actualmente en


memoria

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.

Alejandro Montejo Rubio 32


Simulador del Sistema Minimo Intel 8088
Proyecto Terminal

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.

Registro de propósito general.


Losregistrosdeusogeneralsepuedendireccionarenel 8088 comoregistrosde 1 6 bits (AX,BX,CX,DX) O
comoregistrosde 8 bits (AH,AL,BH,BL,CH,CL,DH,DL).Losregistrodeuso general
se utilizan para
tareas
especificas, por esta razón a cada uno de estos se les da un nombre (Acumulador, Base, Contador y Datos).

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

CX(Contador):Contiene el conteodeciertasinstrucciones paracorrimientos(CL) y rotacionesdelnúmero de


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 registrodeuso generalque tambiéncontiene la partemássignificativa 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).

Registros apuntadores e indices


Estos registros son también de uso general , pero se utilizan mds a menudo paraapuntar a lalocalidad de la
memoria que contiene los datos del operando de muchas instrucciones.

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.

DI(indice dedatos): Se empleaparadireccionar datosdestinoenformaindirecta parautilizarlos 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

DS ( datos ): El segmento de datosesunasecciónde la memoriaquecontiene la mayorparte 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 enel segmento 0400

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.

Todos estos registros de segmento pueden direccionar hasta1024 bytes.

Modos de Direccionamiento
El 8088 dispone de muchos modos de direccionamiento que proporcionan diferentes modos de acceder operando,
los mas comunes son:

a) Por Registro. El operando es un registro


b) Inmediato. El operandoforma parte de la instrucción; normalmente se sitúaa
continuación del código de operación.
c) Directo. La dirección del operando forma parte de la instrucción
d) Indirecto por Registro. La dirección del operando se encuentra en los registros base
o índice.
0 Bus de Direcciones : El canal de direcciones suministra una dirección en la memoria
para la memoria del sistema o el espacio de entraddsalida (E&) 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 Mapa Gráfico de la memoria : Muestra los valores internos de la memoria,
dependiendo del valor que las cajas de segmentoy desplazamiento contengan, Ud.
puede cambiar el valor de segmento desde la caja o bien oprimiendo en la etiqueta
de segmento de registro. Cabe señalar que podemos cambiar valores de memoriao
bien editar programas desdeel mapa de la memoria, introduciendoun número en la
caja de valory después de esto oprimir "Entrar-Dato-Mod".
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
Anima : Este botón ejecuta el programa continuamente auna velocidad determinada
por el valor dela caja de intervalo, activada por la caja Atiempo.
Siguiente : Este botón ejecuta cada instrucción paso a paso.
Desensambla : Este botón nos muestra una ventana con el código desensamblado.
0 Fin : Este botón termina la ejecución del simulador y regresa al editor.
En esta ventana también contiene una barra de menús que tiene los siguientes subménus :
0 Menú Abrir : Este menú contiene los siguientes subménus :
0 Abrir : Este subménu se encarga deabrir un archivo que se haya editado
previamente

Alejandro Montejo Rubio 34


Simulador del Sistema Mínimo Intel 8088
Proyecto Terminal

Guardar : Este subménu se encarga de guardar el archivo quese este editando


actualmente
Salir : Este subménu se encarga de regresarlo a laDantalla de Edición

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

INSTRUCCIONES SOPORTADAS POR EL SIMULADOR

Código: Este es el valor correspondiente de cada instrucción.


Instrucción: Es la descripción textual de cada instrucción.
Función: Es la actuación de cada instrucción.
Tamaño de instrucción: Es el tamaño real de cada instrucción en memoria
BusDatos: Señala si se hace uso del Busdatos.
BusDirecci6n:Señala si se hace uso del Bus de Direcciones.

Alejandro Montejo Rubio 36


Simulador del Sistema Mínimo Intel 8088
Proyecto Terminal

Registros Internos del Microprocesador

Ejemplos de aplicación:
Con estos ejemplos se podrá dar cuenta del resultado obtenidoal realizarse las operaciones asignadas

Carga de datos:
ARCHIVO: CARGA1 .MEM

Al realizar una instrucción sencilla de asignar un valor determinado a memoria el resultado de


dicha micro operación arrojara los siguientes pasos

Direccionamiento

Alejandro Montejo Rubio 37


Simulador del Sistema Mínimo Intel 8088
Proyecto Terminal

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

INS I REG I REG C.ins Direccionamiento


C.reg C.reg
MOV Ax cs Registro 02 08 12
DS BXMOV Reaistro 02 o9 11

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

Alejandro Rubio Montejo 38


Simulador del Sistema Mínimo Intel 8088
Proyecto Terminal

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

Alejandro Rubio Montejo 39


Simulador del Sistema Mínimo Intel 8088
Proyecto Terminal

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 ~~

1245h DI MOV Directo 05 OD 12 45


AX 986Ah MOV
Directo 05 98 08 6A
BX 5633h MOV
Directo 05 O9 56 33
2365hDX MOV I Directo 05 OB 23 65
MOV SI 12AAh I Directo 05 OC AA 12
I I I I I
I I I I

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
"

ADD BX FF58h 08 Inmediato


O9 FF 58
ADD CX 52D8h 08 Inmediato
OA 52 D8
F4A5
hDX
ADD Inmediato 08 OB F4 A5
ADD AX 5263h Inmediato 52 08 0863
452Ah
BX ADD 08 Inmediato
O9 2A 45
ADD CX 2633h Inmediato 08 OA 26 33
AD89h
DX
Inmediato
ADD 08 OB AD 89
SI 5CC6h Inmediato
ADD 08 OC 5c C6
00022hDI ADD Inmediato 08 OD O0 22

Alejandro Montejo Rubio 40


Simulador del Sistema Mínimo Intel 8088
Proyecto Terminal

ARCHIVO: SUMA3.MEM

ARCHIVO: SUMA4.MEM

ARCHIVO: SUMA5MEM

2635hDX ADD Inmediato OA OB 26 35


00022hDI Inmediato
ADD OA OD 00 22

Alejandro Montejo Rubio 41


Simulador del Sistema Mínimo Intel 8088
Proyecto Terminal

ARCHIVO: RESTA2.MEM

Cód Cód Cód


INS REG 8 bits Direccionamiento REG
,nst Reg. Reg.
BL AL SUB Registro OE O0 02
BH AH SUB OE O1 03
[""m
Registro
AL IBHSUB I Reaistro
I
I OE ~
nn
uu
AH BL SUB Registro OE 02 o1
DH CL SUB Registro OE 04 07
DL CH SUB Registro OE 05 08
CL DL SUB
Reaistro OE 06 04

ARCHIVO: RESTA3.MEM

Cód Cód Dato Dato


Direccionamiento
Ins Reg Lo Hi
Bits -
SUB AX 2533h Inmediato OF
- 08
SUB BX FF58h Inmediato OF
- o9
SUB CX 52D8h Inmediato OF
- OA D8
SUB DX F4A5h Inmediato OF
- OB
A5 F4
SUB AX 5263h Inmediato OF
- 08 52 I 63
SUB BX 452Ah Inmediato OF
- o9
2633h Inmediato OF
- OA
Inmediato OF
- OB
5CC6h SUB Inmediato OF
- oc
00022h SUB Inmediato OF OD O0 I 22

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

Alejandro Montejo Rubio 43


Simulador del Sistema Mínimo I n t e l 8088
Proyecto Terminal

ARCHIVO: RESTA5.MEM

Producto de datos:
ARCHIVO: PRODUCTO1 .MEM

ARCHIVO: PRODUCT02.MEM

I I I
I

MUL 1236h Directo 1336 12


~ ~~

Alejandro Montejo Rubio 44


Simulador del Sistema Mínimo I n t e l 8088
Proyecto Terminal

Incremento de datos:
ARCHIVO: INCRE1.MEM

INS I REG I Direccionarniento Cód lnst Cód Reg.


AL INC 14 00
AH INC 14 01
BH INC 14 02
BL INC 14 03
CL INC 14 04
CH INC 14 05
AL INC - 14 00
BL INC 14 03
DL INC 14 06
INC Ax Registro 14 08
BX INC 14 09
INC cx Registro 14 OA
I NC SI Registro 14 oc
DI INC 14 OD

ARCHIVO: INCRE2.MEM

Alejandro Montejo Rubio 45


Simulador del Sistema Mínimo Intel 8088
Proyecto Terminal

Decremento de datos:
ARCHIVO: DECREl .MEM

ARCHIVO: DECRE2.MEM

Alejandro Montejo Rubio 46


Simulador del Sistema Mínimo Intel 8088
Proyecto Terminal

Saltos en segmento de código:


ARCHIVO: JUMP.MEM

Dir Direccionamiento I Cód I Ofsset I Ofsset

0002hJMP I Directo I 18 I O0
I

02 I
Apilamiento de datos:
ARCHIVO: PUSH1.MEM

INS I REG I Direccionamiento I Cód Ins I Cód Reg


PUSH Ax Inmediato 08 19
ediato BX PUSH o9 19
PUSH cx Inmediato 19 OA
Inmediato DX PUSH 19 OB
SI Inmediato
PUSH 19 oc
Inmediato BX PUSH 19 o9
cx InmediatoPUSH 19 OA
Ax Inmediato
PUSH 19 08
mediato DX PUSH 19 OB
iato DI PUSH 19 OD

ARCHIVO: PUSH2.MEM

Alejandro Rubio Montejo 47


Simulador del Sistema Minimo I n t e l 8088
Proyecto Terminal

Desapilamiento de datos:
ARCHIVO: POP1 .MEM

I INS I REG Direccionamiento I Cód Ins I Cód Rea


POP Ax Inmediato 1B 08
POP BX Inmediato 1B o9
-~
cx
~

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

Alejandro Rubio Montejo 48


Simulador del Sistema Mínimo Intel 8088
Proyecto Terminal

Información Técnica del Funcionamiento Interno del Software

Alejandro Montejo Rubio 49


Simulador del Sistema Mínimo I n t e l 8088
Proyecto Terminal

Información Técnica del Funcionamiento


Interno del Software
(Manual Técnico)

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.

Arquitectura Interna Básica del Sistema Mínimo 8088


El microprocesador, realiza una búsqueda de instrucciones en la memoria con una operación de lectura,
decodificación del código, y ejecución de la instrucción, el sistema de memoria está ocioso entre cada ejecución de
instrucción.

Micro- Recuperar Decodificar Ejecutar Recuperar Decodificar Ejecutar


procesador

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.

Ciclo de Fetch. (algoritmo llamado Siguiente-click, localizado en la


formal .frm)
1.- El microprocesador lee de memoria la instrucción a ejecutar direccionada por el registro Ip (Registro apuntador
a siguiente instrucción) mediante un algoritmo llamado Lee-código() .localizado en la formal

2.-El microprocesador decodifica el codigo leido dememoria mediante un algoritmo llamado decodifica().
localizado en la formal

3.-El microprocesador ejecuta el códigode instrucción mediante un algoritmollamado ejecutacodigo2().


localizado en la formal
4.4ncrementa IP.text en tamaño de instrucción +I esta operación se realiza en Siguiente -click localizada en la
forml.

Considerando lo anterior tenemos queempezar a definir la implementación de la memoria,de acuerdo a la


arquitectura interna del microprocesador 8088, sabemos que esteescapazde direccionar hasta un Megabytes de
memoria.Justificando lo anterior el sistema mínimo tiene un bus de direcciones de 20 bits, por lo cual se puede
direccionar desde:

0 0 0 0 0
00000000000000000000
""""""""""""""""""""""-
11111111111111111111
F F F F F

Alejandro Montejo Rubio 50


Simulador del Sistema Mínimo Intel 8088
Proyecto Terminal

Por lo cual implementamos un arreglo de lassiguientes características:

Arreglo Unidimensional llamado memoria, de Tamaño de 1 Megabytes y de tipo byte

Memoria(De O A 1048575) Como Byte


AI inicializa el programa se esta garantizando una memoria apartada de 1 Megabytes, con esto se cumple la
arquitectura de la memoria.

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:

Segmento de Código: definido en Memoria(0) hasta Memoria(l023)E O-03FF

Segmento de Datos: definido en Memoria(l024) hasta Memoria(2047) ~400-7FF

Segmento de Pila: definido en Memoria(2048) hasta Memoria(3071) E 800- BFF

Segmento Extra: definido en Memoria(3072) hasta Memoria(4095) z COO-FFF

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.

Alejandro Montejo Rubio 51


Simulador del Sistema Mínimo Intel 8088
Proyecto Terminal

- Número de microinstrucciones.
- Microinstrucciones.

Ejemplo: MOV R8 DATO8 Nombre de la Instrucción


VFVFFFF Tabla de verdad
3 Numero de microinstruciones
DETECTA /Microinstrucción 1
BUSDATOS=ORIGEN Microinstrucciones < Microinstrucción 2
DESTINO=BUSDATOS \Microinstrucción 3

AI e j e c u t a r e l s i s t e m a e s t e a r c h i v o s e l e e y se cargan los arreglos los cuales describen el


proceso de carga de instrucciones, propiedades, y 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.

La tabla de verdad representada por un tipo definido de la siguiente manera

Ejemplo:

V ByteReg1 As Boolean Define si en la instrucciónexiste Registro en el destino


F ByteReg2 As Boolean Define si en la instrucción existe Registro en el origen
V Dato8 As Boolean Define si en la instrucciónexiste un datos de 8 bits
F DatoHi As Boolean Define si en la instrucciónexiste un dato alto
F DatoLo As Boolean Define si en la instrucción existe un dato bajo
F OfMi As Boolean Define si en la instrucción existe un offset alto
F OffLo As Boolean Define si en la instrucciónexiste un offset bajo
MOV mnemonico As String Define el nombre de la instrucción
3 Micro(40) As String Define el numero de instrucciones

La línea que indica un numero determina el numero de microinstrucciones de la instrucción.

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

Asigna lo quehayenuna posición dememoria a un registro


Y

I
Alejandro Montejo Rubio 52
Simulador del Sistema Minimo Intel 8088
Proyecto Terminal

ASIGNA=MEMORIA 1 Asigna lo que hay en unaposicióndememoria


1 -
a un registro
- destino
MEMORIA=ASIGNA ] Asigna lo que hay en elregistro origen a unadirección dememoria
SUMA Suma el contenido de un origen con el contenido de un destino
SUMAMEM Suma el contenido de memoriaa un registro destino
DIVIDE Divide el contenido de un origen con el contenido de un destino
DIVIDEMEM Divide el contenido de una dirección de memoria con el registro
- destino
RESTA Resta el contenido de un origen con el contenido de un destino
RESTAMEM Resta el contenido de una dirección de memoria con el contenido de un destino
MULTIPLICA Multiplica el origen con un destino
MULTIPLICAMEM Multiplica el contenido en una dirección de memoria conun registro destino.
INCREMENTA Incrementa en una unidad el contenido del destino
INCREMENTAMEM Incrementa en una unidad el contenido de una dirección de memoria.
DECREMENTA Decrementa en una unidad el contenido de un registro destino
DECREMENTAMEM Decrementa en una unidad el contenido de una dirección de memoria.
STACKSEGMENT lnicializa la memoria en el segmento de pila
PUSHREG Apila el contenido de un registro
- en una dirección de pila
PUSHMEM Apila el contenidodeunadireccióndememoriadelsegmentodedatos,enuna
dirección de memoria del segmento depila.
POPREG Desapila el contenido de una dirección de memoria del segmento de pila y lo carga en
un registro destino.
POPMEM Desapila el contenido de una dirección de memoria del segmento de pila, y coloca
este valor en una dirección del segmento de datos.
SALTA Brinca El Ip A Un Desplazamiento Dentro Del Segmento De Código

Tabla con todas las instrucciones implementadas y su función que realiza.

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

MOV REG REG Carga un registrodestinocon el


VVFFFFF contenido de un registro origen.
2
DETECTA
AS IGNA

MOV R16 DATO16 Carga un registro de 16 bits con un


VFFVVFF datos de 16 bits.
3
DETECTA
BUSDATOS=ORIGEN
DESTINO=BUSDATOS

MOV MEM REG Carga


en una dirección
de
FVFFFVV memoria del segmento dedatos, el

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

MOV REG MEM Cargaen


unregistro
origen, el
VFFFFVV contenidode una dirección
de
3 memoriaqueseencuentra en el
DATASEGMENT segmento de datos.
DETECTA
MEMORIA=ASIGNA

ADD R8 DATO8 Suma a un registro origen de 8 bits


VFVFFFF un dato de 8 bits.
3
DETECTA

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

ADD R16 Dl6 Suma


contenido
el un
de
VFFVVFF registrode16bitsundatode
3 16 bits.
DETECTA
BUSDATOS=ORIGEN
SUMA

ADD R16 R16 Suma


contenido
el un
de
VVFFFFF registro
de
16
bits
con
el
2 contenido de un registro de 16
DETECTA bits.
SUMA

ADD REG MEM Suma


contenido
el un
de
VFFFFVV registrode16 ó 8 bitscon el
3 contenidodeunadirección de
DATASEGMENT memoria
segmento
del de
DETECTA
SUMAMEM datos.

DIV R8 Divide el contenido del registrc


VFFFFFF AX entreelcontenidodeur
2 registrode 8 bits.Poniendoe
DETECTA cociente en AL y el residuo er
DIVIDE
AH

DIV MEM Divide el contenido del registrc


FFFFFVV AX entreelcontenidode un;
3

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

SUB R16 Dl6 Resta


contenido
el de un
VFFVVFF registro de 16 bits con un dato
3 de 16 bits.
DETECTA
BUSDATOS=ORIGEN
RESTA

SUB R16 R16 Resta el contenidoun


de
VVFFFFF registro
de
16
bits
con
el
2 contenido deunregistrode16
DETECTA bits.
RESTA

SUB REG MEM Resta


contenido
el un
de
VFFFFVV registro
de
16
bits,
cnn
el
3 contenidodeunadirecciónde
DATASEGMENT memoriadentrodelsegmento
DETECTA
RESTAMEM de datos.

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

INC MEM Incrementa el contenido de una


FFFFFVV dirección
de
memoria
dentro

Alejandro Montejo Rubio 55


Simulador del Sistema Mínimo I n t e l 8088
Proyecto Terminal
b
P
3 del segmento de datos en una
DATASEGMENT unidad.
DETECTA
INCREMENTAMEM

DEC R8 Decrementa el contenido de un


VFFFFFF registrode 8 ó 16 bitsenuna
2 unidad.
DETECTA
DECREMENTA

DEC MEM Decrementacontenido


el de
FFFFFVV una
dirección
memoria
de
3 dentrodelsegmentodedatos
DATASEGMENT
en una unidad.
DETECTA
DECREMENTAMEM

JMP RELATIVO Realiza


un
salto
dentro
del
VFFFFFF código, de
segmento
2 incrementando
el ip con
el
DETECTA
SALTA contenidodeunregistrode 8
bits.
PUSH REG Realizaunapilamientodeun
VFFFFFF registrode 16 bitsdentrodel
3 segmento de pila.
STACKSEGMENT
DETECTA
PUSHREG

PUSH MEM Realiza


apilamiento
un del
FFFFFVV contenido
una
de
dirección
4 dentrodelsegmentodedatos,
DATASEGMENT
en unadirección
dentro
del
STACKSEGMENT
DETECTA segmento de pila.
PUSHMEM

POP REG Despilael


contenidode
una
VFFFFFF direccióndelsegmentodepila
3 en un registro de 16 bits.
STACKSEGMENT
DETECTA
POPREG

POP MEM Desapila


contenido
el del
FFFFFVV segmento de pila , y lo pone en
4 una
dirección
memoria
de
STACKSEGMENT
DATASEGMENT dentro del segmento de datos.
DETECTA
POPMEM

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 Rubio 56


Simulador del Sistema Mínimo I n t e l 8088
Proyecto Terminal

title =AYUDA SIMULADOR


contents = CONTENIDO
compress = false
oldkeyphrase = false
warning = 3
[FILES]
AYUDA.rtf
IMAPl
CONTENIDO 1
SIMULADOR 2
GRAFICOS 5
DISPLAY 6
TECLAS 7
EJEMPLOS 8
TECLAEJE 9
TECLARES IO
DIRECCIONFISICA 11
MENlJS12
MICRO13
nrr 1 4
BYTES15
RUSDATOS 16
HISTORIA 17
CARGA 18
SUMA 19
RESTA 20
PRODUCTO 21
DIVISION 22
SALI'O 23
MIC 24
interno 25
registro 26
mapa 27
INS 28
reg 29
EP 30
lWINDOWSl
main = "AYUDA SIMULADOR", (0,0,1023,1023 ),,, (192,192,192)
Ayuda.rtf
#SIMULADOR SISTEMA MINIM0 8088
El sistema mínimo 8088 se diseño, para poder proporcionar al usuario una herramienta de software que le permita
realizar practicas de programación a nivel ensamblador, a manera que pueda realizar sus primeras practicas de dicho
lenguaje enun simulador de estascaracterísticas.Cabeseñalarqueestesistematienesuslimitacionesde
programación y que solo podrán ser manejadas algunas herramientas del =MICRO ya que suele ser complicado
para un proyecto terminal lograr modelar y simular todaslas propiedades del microprocesador =MICRO.

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

El contenido de esta ayuda esta dividido en cuatro secciones:

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

Alejandro Montejo Rubio 58


Simulador del Sistema Mínimo Intel 8088
Proyecto Terminal

*Anima : Este botón ejecuta el programa continuamente a una velocidad


determinada por el valor de la caja de intervalo, activada por la caja Atiempo.
* Siguiente : Este botón ejecuta cada instrucción paso a paso.
* Desensambla : Este botón nos muestra una ventana con el código
desensamblado.
* Fin : Este botón termina la ejecución del simulador y regresa al editor.
En esta ventana también contieneuna barra de menús que tiene los siguientes
subménus :
Menú Abrir : Este menú contiene los siguientes subménus :
* Abrir : Este subménu se encarga de abrir un archivo que se haya editado
previamente.
* Guardar : Este subménu se encarga deguardar el archivo que se este
editando actualmente.
* Salir : Este subménu se encarga de regresarlo a la pantalla de Edición
Cada vez que Ud. ejecute el comando de abrir un nuevo archivo deberá de actualizarla Dirección a Editar

-Registro de propósito general.


Los registros de uso general se pueden direccionar en el 8088 como registros de 16 bits (AX,BX,CX,DX) o como
registros de 8 bits (AH,AL,BH,BL,CH,CL,DH,DL). Los registro de uso general se utilizan para tareas especificas, por
esta razón a cada uno de estos se les da un nombre (Acumulador, Base, Contadory Datos).

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) y rotacionesdelnumerode


bytes(CX) para lasoperacionesrepetidasdecadena y uncontador(CX) para la instrucciónLOOP. A esteregistro
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/S para una instrucción variable de E/S. A este registro también se le direcciona como registros de 8 bits (DH,DL).

Registros apuntadores e indices


Estosregistrossontambién de uso general , peroseutilizanmás a menudoparaapuntar a la localidadde la
memoria que contiene los datos del operando de muchas instrucciones.

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.

SI (indice fuente) : Seemplea para direccionardatosfuenteenformaindirecta para utilizarlosconlas


instrucciones de cadenas o arreglos.

DI (lndice dedatos):Seempleaparadireccionardatosdestinoenformaindirectaparautilizarlosconlas
instrucciones de cadenas o arreglos.

Alejandro Montejo 59
Simulador del Sistema Mínimo Intel 8088
Proyecto Terminal

IP ( Apuntador de instrucciones ): Se utiliza siempre para direccionar a la siguiente instrucción que va


aejecutar el microprocesador.Paraformarlalocalidadrealdelasiguienteinstrucción se suma el
contenidode IP conCS(por) 10H. Cabeseñalarque se puederealizardireccionamientoindirecto 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 ): El segmentodecódigoesunaporción delamemoriaquetiene los programas y


procedimientos utilizados por los programas. El registro de segmento de código define la dirección inicial
delaseccióndememoriaquetieneelcódigo. En modoreal , defineeliniciodeunasecciónde 64 K
bytes.segmentodecódigoestalimitadoenel8088aunalongitud de 64Kbytes.Definidoen el
segmento 0000.

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

ES(segmentoextra): El segmentoextra dedatos lo utilizanalgunasinstruccionesparacadenas.


Definido en el segmento OCOO

SS (segmento de pila): El segmento depiladefinelasuperficiedelamemoriautilizadaparalapila.


La ubicacióndelpuntoinicialdeentradaalapila, se determinaporelregistroapuntadordelapila. El
registro BP también direcciona los datos que hay dentro del segmento de pila. Definido en el segmento
0800.Todos estos registros de segmento pueden direccionar hasta 1024 bytes.

Mapa Gráfico de la memoria


Mapa Gráfico de la memoria : Muestra los valores internos de la memoria, dependiendo del valor que
las cajas de segmento y desplazamiento contengan, Ud. puede cambiar el valor de segmento desde la
caja o bienoprimiendoenlaetiquetadesegmentoderegistro.Cabeseñalarquepodemoscambiar
valores de memoria o bien editar programas desde el mapa de la memoria, introduciendo un número en
la caja de valor y después de esto oprimir "Entrar-Dato-Mod".

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.

Gráficos delos componentes fisico del sistema mínimo 8088GRAFICOS


Display de edición de ProgsamasDISPLAY
Coniunto de teclas de ediciónTECLAS
Caja de dirección DIRECCIONFISICA
MenúsMENUS
Edición de PronramasEP
Tabla de InstruccionesINS
Tabla de Registros
REG

Alejandro
Alejandro Montejo Rubio
61
Simuladordel Sistema Mínimo Intel 8088
Proyecto Terminal

Código: Este es el valor correspondientede cada instrucción.


Instrucción: Es la descripción textual de cada instrucción.
Función: Es la actuación de cada instrucción.
Tamaiio de instrucción: Es el tamaño real de cada instrucción en memoria
BusDatos: Señala si se hace uso del Busdatos.
BusDirecci6n:Señala si se hace uso del Bus de Direcciones.

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.#.

Alejandro Montejo Rubio 62


Simulador del Sistema Mínimo I n t e l 8088
Proyecto Terminal

TECLAS
Las Teclas se clasifica en:

Las teclas de Ediciónson las teclas que se encuentran en el panel de teclas.


Estasteclassecomponen de lasteclas de instrucciónquesonlas 2 teclasque'se
encuentran en la parte izquierda de este conjunto, cuyas teclas se etiquetan con los
símbolos siguientes: u
fl; La tecla de entrar que es la tercera tecla del conjunto cuyo
símbolo es J; las dos ultimas teclas de este conjunto con los símbolos siguientes fl u
son
las
teclas
de
registros
las
cuales
nos permiten escoger los
registros
del
microprocesador para formar las instrucciones del programa.
Las teclas de valor son las teclas que se encuentran en la parte inferior izquierda de la pantalla, cuyo conjunto
esta formado por teclas cuyos valores oscilan entre el conjunto de símbolos que nos permiten formarel conjunto de los
números representados en la base hexadecimal.

Las teclas de función son :

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 :

0 Abrir(Ctrl+A) : El cual abre un archivo editado y lo carga en memoria.


Guardar(CTRL + G) : El cual guarda el contenido de un archivo editado en
memoria.
0 Índice(CTRL + I) : El cual muestra la ventana de índice, que es similar a la ventana
de Portada
0 Salir (CTRL + S) : Termina la ejecución del sistema
o Comandos : Se puede activar por medio de la combinación de teclas ALT+ C, este
menú cuenta con tres subménus que son :
o Cambiar Dirección de Edición(CTRL + C) : Nos muestra una caja de mensaje
donde podemos cambiarel desplazamiento, dentrodel segmento de código para
editar programas.

Alejandro Montejo 63
Simulador del Sistema Mínimo I n t e l 8088
Proyecto Terminal

0 Ejecutar (CTRL + E) : Muestra la pantalla de microprocesador interno, en la cual se


muestra las operacionesinternas de ejecución
Desensamblar (CTRL + D) : Muestra una ventana con el código en lenguaje
ensamblador.
0 Historial (CTRL + H) : Muestra una breve reseña histórica de la familia Intel

Microprocesador Intel 8088.


40 patas.Tiene una trayectoria interna
El Intel 8088 es un procesador del tipo NMOS que se vende empacado con
de datos de 16 m B l T aunque lee y escribe de memoria Solo 8 bits a la vez además puede direccionar
1 MeqabVteBYTES de memoria.
El 8088 pretende extraer instrucciones por adelantado siempre que es posible de modo que cuando se necesitela
siguiente instrucción ya estar disponible.El Intel 8088 pude trabajar en dos modos :

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.

Byte: Unidad mínima de almacenamiento para un dato.

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

Alejandro Montejo Rubio 64


Simulador del Sistema Mínimo Intel 8088
Proyecto Terminal

PROCEDIMIENTO DE EDICIÓN DE PROGRAMAS


Como Ud. podrá apreciar en esta ventana es donde se realiza la programación en el lenguaje ensamblador, para
lo cual se le darán una serie de pasos para que
el 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

Enelcasodequelainstrucciónempleeregistro o valor estosdeberánserintroducidos ya seaporflechas


derechasdeedición o pormediodelteclado,deberádeoprimirlateclade"Enter"paraqueestosvaloressean
aceptados

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

Alejandro Montejo Rubio 65


Simulador del Sistema Mínimo I n t e l 8088
Proyecto Terminal

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.

Esta herramientacubrelasprincipalesCaracterísticaseinstruccionesdelenguajeensamblador, para poder


practicar y desarrollar pequeños programas, que permitan la practica de usuarios expertos e inexpertos, en el tema de
Lenguajeensamblador,trabajadobajo el 8088 de la familia Intel, y asi mismopoderseguir el comportamientodel
microprocesador paso a paso por medio del las ventanas de rastreo.

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
=

0000C009BE81)#1.0#0; SPIN32.OCX Serif"


Object-(27395F88-OCOC-1OlB-A3C9- Size = 24
08002B2F49FB)#1.0#0; PICCLP32.OCX Charset = o
Object=[648A5603-2C6E-lOlB-82B6- Weight = 700
000000000014~#1.0#0;MSCOMM32.OCX Underline = O 'False
Object=(ClA8AF28-1257-10lB-8FBO- Italic = O 'False
0020AF039CA3f#1.0#0;MCI32.OCX Strikethrough = O 'False
Object=(20C62CAE-15DA-lOlB-B9A8- Endproperty
444553540000)#1.0#0; MSMAPI32.OCX Height = 240
Ohject=(B9D22273-OC24-101B-AEBD- Left = 2160
04021C009402)#1.0#0; KEYSTA32.0CX ScaleHeight = 180
Object={7A080CC8-26E2-101B-AEBD- Scalewidth = 195
04021C009402f#1.0#0;GAUGE32.0CX TabIndex = o
Object=[0842D103-1E19-lOlB-9AAF- TOP = 6480
lA1626551E7C}#1.0#0: GRAPH32.OCX Width = 255
Object={F72CC888-5ADC-101B-A56C- Begin VB.PictureBox Picture1
OOAAOO3668DC)#1.0#0; ANIBTN32.OCX Appearance = O 'Flat
Object={BE4F3ACB-AEC9-10lA-947B- Backcolor -
-

OODD010F7B46)#1.0#0; MSOUTL32.0CX &H80000005&


Object=midfile; mid Borderstyle = O 'None
Ohject=mplayer; mplayer.exe ClipControls = O 'False
Object=AVIFile; avi DrawMode = 15 'Merge
Ohject=Package; packager.exe Pen Not
ProjWinSize=127,195,300,411 Fillstyle = 2
ProjWinShow=2 'Horizontal Line
IconForm="Forml" FontTransparent = O 'False
HelpFile="C:\actualizacion\Ayuda.hlp" Forecolor = &H80000008&
Height = 2055

Alejandro Montejo Rubio 67


Simulador del Sistema Mínimo Intel 8088
Proyecto Terminal

Left = 360 Underline = o


Picture -
~
EndProperty
"portada.frx":0000 Height = 375
ScaleHeight = 2055 Left = 600
Scalewidth = 3735 TabIndex = 5
TabIndex = 1 TOP = 2280
TOP = 480 Width = 3015
Width = 3735 End
Begin VB.Labe1 Label1 End
-
- End
Caption
"Labell" Begln VB.PictureBox SSPanel3
Height = 15 Backcolor = &HOOCOCOCO&
Left = 1440 Height = 6495
TabIndex = 4 Left = 1440
TOP = 2040 ScaleHeight = 6435
Width = 2295 Scalewidth = 9075
End TabIndex = 7
End TOP = 720
Begin VB.Frame Frame1 Width = 9135
-
- Begin VB. Frame Frame2
Backcolor
&HOOCOCOCO& Height = 4695
Height = 4935 Left = 600
Left = 240 TabIndex = 8
TabIndex = 2 Top = 600
TOP = 240 Wldth = 7935
Width = 7695 Begin VB.PictureBox SSPanel4
-
-
Begin VB.PictureBox SSPanel2 Backcolor
Backcolor = &HOOCOCOCO& &HOOFF8080&
Beginproperty Font (OBE35203-8F91- Beginproperty Font
llCE-9DE3-00AA004BB851) (OBE35203-8F91-llCE-9DE3-OOAAOO4BB851)
Name = "MS Sans Serif" Name = "Times NewRoman"
Size = 18 Size = 54.75
Charset = o Charset = o
Weight = 700 Weight = 700
Underline = O False Underline = O 'False
Italic = -1 True Italic = -1 'True
Strikethrough = O False Strikethrough = 0 'False
Endproperty Endproperty
Height = 1095 Forecolor = &HOOFF0000&
Left = 720 Helght = 1965
ScaleHelght = 1035 Left = 2880
Scalewidth = 6195 ScaleHeight = 1905
TabIndex = 3 ScaleWidtk = 3945
Top = 3360 TabIndex = 15
Wldth = 6255 TOP = 1680
End Width = 4005
Begin VB.Labe1 Label3 Begin VB.Labe1 Label8
Alignment = 2 Center BackColor = &H00000000&
Borderstyle = 1 Fixed Single BackStyle = o
Caption="Universidad Autonoma 'Transparent
Metropolitana" Beginproperty Font (OBE35203-8F91-
Beginproperty Font (OBE35203-8F91- llCE-9DE3-00AA004BB851)
llCE-9DE3-00AA004BB851) Name = "Times New Roman"
Name="MS Sans Serif" Size = 12
Size= 12 Charset = 0
Charset = o Weight = 700
Weight = 700 Underline = O 'False
Underline = o Italic = O 'False
Endproperty Strikethrough = O 'False
Height = 735 Endproperty
Left = 3960 Forecolor = &H00000000&
TabIndex = 6 Height = 285
TOP = 360 Left = 240
Width = 3615 TabIndex = 18
End TOP = 1320
Begin VB.Labe1 Label2 Width = 3495
Alignment = 2 End
Caption = "Casa abierta al Begln VB.Labe1 Label7
Tiempo" Backcolor = &HOOOOOOFF&
Beginproperty Font Backstyle = O 'Transparent
(OBE35203-8F91-1lCE-9DE3-OOAA004BB851) Beginproperty Font (OBE35203-8F91-
Name '"S 11CE-9DE3-00AA004BB851)
Sans Serif" Name = "Times New Roman"
Size = 12 Size = 12
Charset = o Charset = o
Weight = I00 Weight = IO0

Alejandro Montejo Rubio 2


-l

Simulador del Sistema Mínimo Intel 8088


Proyecto Terminal

Underline = O 'Falso ScaleHelght = 435


Italic = O 'Falso Scalewidth = 1635
Strikethrough = O 'Falso TabIndex = 11
Endproperty TOP = 2625
ForeColor = &H00000000& Width = 1695
Height = 285 End
Left = 240 Begin VB.PictureBox SSCommand2
TabIndex = 17 BeginProperty Font
TOP = 840 {OBE35203-8F91-llCE-9DE3-OOAAOO4BB851j
Wldth = 3495 Name = "MS Sans Serif"
End Size = 9.15
Begin VB.Labe1 Label6 Charset = o
BackColor = &HOOOOOOOO& Weight = 700
Backstyle = o Underline = 0 'False
'Transparent Italic = O 'False
BeginProperty Font Strikethrough = O 'False
{OBE35203-8F91-llCE-9DE3-OOAAOO4BB851j Endproperty
Name= "Times New Roman" Height = 495
Size = 12 Left = 360
Charset = o ScaleHeight = 435
Welght = 700 ScaleWidt!I = 1635
Underline = O 'False TabIndex = 10
Italic = O 'False TOP = 2160
Strikethrough = O 'False Width = 1695
Endproperty End
ForeColor = &H00000000& Begin VB.PlctureBox SSCommandl
Height = 285 BeginProperty Font
Left = 240 (OBE35203-8F91-llCE-9DE3-OOAAOO4BB851)
TabIndex = 16 Name= "MS Sans Serif"
Top = 360 Size = 9.15
Width = 3315 Charset = o
End Weight = 700
End Underline = O 'False
Begin VB.PictureBox SSPanel5 Italic = O 'False
BackColor = &HOOCOCOCO& Strikethrough = O 'False
ForeColor = &HOOOOOOCO& Endproperty
Height = 2535 Height = 495
Left = 2520 Left = 360
ScaleHeight = 2475 ScaleHeight = 435
Scalewidth = 4635 Scalewidth = 1635
TabIndex = 19 TabIndex = 9
TOP = 1440 TOP = 1680
Width = 4695 Width = 1695
End End
Begin VB.PictureBox SSCommand4 Begin VB.Labe1 Label4
BeginProperty Font Alignment = 'Center
2
(OBE35203-8F91-llCE-9DE3-OOAAOO4BB851) Borderstyle = 1 'Fixed Single
Name= "MS Sans Serif" Caption = "Contenido"
Size=
9.75 BeginProperty Font (OBE35203-
Charset= O 8F91-llCE-9DE3-00AAOO4BB851)
Weight = 700 Name = "MS Sans Serif"
Underline = O 'False Size = 18
Italic = 0 'False Charset = o
Strikethrough = 0 'False Weight = 700
Endproperty Underline = 0 'False
Height = 495 Italic = O 'False
Left = 360 Strikethrough = O 'False
ScaleHeight = 435 Endproperty
Scalewidth = 1635 Helght = 495
TabIndex = 12 Left = 1920
TOP = 3120 TabIndex = 13
Width = 1695 TOP = 360
End Width = 3975
Begin VB.PictureBox SSCommand3 End
BeginProperty Font (OBE35203-8F91- End
llCE-9DE3-00AA004BB851) Begin VB.Labe1 Label5
Name= "MS Sans Serif" Appearance = O 'Flat
Size=
9.15 BackColor = &H80000005&
Charset = o BackStyle = O 'Transparent
Weight = 700 Caption ="Oprima el bóton de la opción
Underline = O 'False que requiera"
ItdllC = O 'False ForeColor= &H80000008&
Strikethrough = O 'False Height = 255
Endproperty Left = 600
Height = 495 TabIndex = 14
Left = 360 TOP = 5400

Alejandro Montejo Rubio


3
i
Simulador del Sistema Mínimo Intel 8088
Proyecto Terminal

Width = 3015 Label7.Caption = "Alejandro Montejo


End Rubio"
End
End SSPanel4.Caption = "I'

Attribute VB-Name = "Portada" End Sub


Attribute VB-Creatable = False
Attribute VB-Exposed = False private Sub SSCommand2-Click0
Label6. Caption = ""
Private Sub Toolbar2-ButtonClick(ByVal Label7.Caption = "Diplomado Miguel
Button As Button) Angel Ruíz Sanchez. I'

End Sub Label8 .Caption = " "


SSPanel4.Caption = I"'

Private Sub Commandl-Click0 End Sub


End Sub
Private Sub SSCommand3-Click0
Private Sub Command2-CllckO Label7.Caption = "Ejecutando"
End Form2.Show
End Sub Hide
Unload Portada
Private Sub Form-Load ( ) End Sub
SSPanell.Height = 5535
SSPanell.Top = 720 Private Sub SSCommand4-Click0
SSPanell.Left = 720 Hide
SSPanell.Width = 8295 End
SSPanel3.Visible = False End Sub
Timerl.Interva1 = 2000
End Sub Private Sub SSPanel4-ClickO
End Sub
Private Sub SSComm2andl-Click0
Label6.Caption = "Alejandro Montejo Private Sub Timerl-Timer0
Rubio" Dim contador As Integer
End Sub While contador < 4000
contador = contador + 1
Private Sub Label4-Click0 Wend
End Sub SSPanell.Vislble = False
SSPanel3.Visible = True
Private Sub SSCommandl-Click0
End Sub

Public DigitosHex As Integer


Codigo Modulo Tipos y Variables Public Registros ( O Tc. 19) As String
Attribute VB-Name = "Tipos" Public RegistroActual As Integer
Public Type TEprom Public Direccionamiento As Integer
Inicio As Long Public NumByteMeter
Fin As Long Public ListaDirecclonamiento(1 To 2) As
End Type String
'Nueva modificacióndel 11 de mayo de
Public Type TInformacionOperaciones 1997
ByteRegl As Boolean'Estado 1 Public MaximoCodlgo
EyteReg2 As Boolean 'Estado4 Public CodlgoOperacion As Byte
Dato8 As Boolean
'Estado
5 Public ModoDireccionamiento As Byte
DatoHi As Boolean 'Estado 6 Public Registro1 As Byte
DatoLo As Boolean
'Estado I Public Registro2 As Byte
OffHiASBoolean'Estado2y 8 Public DatoByte As Long
OffLoAsBoolean'Estado 3 y9 Public DatoWord As Long
mnemonic0 As String Public Direccion As Long
Micro(40) As String Public Operacion(100) As
End Type TInformacionOperaciones
Public Edicion As Long
Public mnemonicos0 As Strlng Public BanderaRegistro AS Boolean
Public EstadoFetch As Integer Public CambioAdelante As Integer
Public Memoria(0 To 1048575)As Byte ' Public CambioAtras As Integer
Declaración del arreglo de memoria Public UltimoValor As Integer
Public DirecionamientoRegistroAs Byte Public banderacambios As Boolean
Public CodigoDireccionamientoAs Byte Public SegDesensamblar As Long
Public CodigoRegistrol As Byte ' Con Public Origen AS String 'Orlgen de
uso instrucclón
Public CodigoRegistro2 As Byte 'Con u s o Public Destino As TextBox 'destlno de
Public CodigoSegmento As Long instrucción
Public CodigoDesplazamientoAs Long Publlc Codigosdeerror(0 To10) AS
Public NumEprom As Integer, NumRamAs String ' Arreglo de errores
Integer Public Descod As TextBox ' Varibale que
Public Eprom() As TEprom guarda el desplazamiento de código
Public RAM() As TEprom Public Sub Error(numer0 As Integer)
Public Dato As Long End Sub
Public DireccionEditar

4
Alejandro Montejo Rubio
Simulador del Sistema Mínimo I n t e l 8088
Proyecto Terminal

Public Function BinHex$(num AS Long) .ByteReg2 = F a l s e


cad$ = " " End If
While num < > O If Mid$ (dux, 3, 1) = "V"
If num Mod 16 < 10 Then Then
cad$ = LTrim(Str$(num Mod .Dato8 = True
16)1 + cad$ Else
Else .Dato8 = False
Select Case num Mod 16 End If
Case 10 If Mid$(aux, 4, 1) = "V"
cads = "A" + cad$ Then
Case 11 .DatoHi = True
cad$ = "B" + cad$ Else
Case 12 .DatoHi = False
cad$ = "C" + cad$ End If
Case 13 If MidS (dux, 5, 1) = "V"
cad$ = "D" + cad$ Then
Case 14 .DatoLo = True
cad$ = "E" + cad$ Else
Case 15 .DatoLo = False
cad$ = "F" + cad$ End If
End Select If Mid$(au.c, 6, 1 ) = "V"
End If Then
num = num \ 16 .OffHi = True
Wend Else
If cad$ = Then cads = " o "
"I' .OffHi = False
BinHex$ = cad$ End If
End Function If Mid$ (aux, 7, 1) = "V"
Then
Public Sub GuardarArchlvoO .OffLo = True
Dim Direccion As Long Else
Dim Tamaño As Integer .OffLo = False
On Error GoTo Finalizar End If
Abrirmem.DialogTitle = "Guardar Input #1, Mic
memoria '' For k = 1 To Mic
Abrirmem.ShowSave Input #1, .Micro(k)
Open AbrirMemoria.filename For Next k
Output As 1 End With
Direccion = O i = i + l
Do Wend
Direccion = MaximoCodigo = i
Forml.ObtenDireccionNoCero(Direccion) Close (1)
If Direccion >= 1023 Then Exit Do End Sub
Print #1, Direccion Public Sub AbrirArchivoO
dux& = Direccion Dim Direccion As Long
Tamaño = Dlm Tamaño As Integer
Forml.ObtenTamaño(aux&) Dim Dato As Byte
Print #1, Tamaño On Error GoTo Finalizar
For i = 1 To Tamaño AbrirMemoria.ShowOpen
Print #1, Memoria(Direcci0n + i - Open AbrlrMemoria.filenameFor
1) Input As 1
Next i On Error GoTo Finalizarcerrar
Direccion = Direccion + Tamaño While Not EOF(1)
Loop Until Direccion>= 1023 Input #1, Direccion, Tamaño
Close 1 For i = 1 To Tamaño
Finalizar: Input #1, Dato
End Sub Memoria(Direccion + i - 1 )
= Dato
Public Sub LeeDatosOperacionO Next i
Open App.Path + Wend
" \ M i c r o I n s t r u c c i o n e s . I s t " For Input As Finalizarcerrar:
1 Close 1
i = O Forml.HazDump
While Not EOF(1) Finalizar:
W i t h Operacion (i) End Sub
Input #1, .mnemonic0
Input #1, aux Public Sub ValidaHexadecimal(KeyAscii
If Mid$(aux, 1, 1) = "V" As Integer, Objeto As TextBox)
Then If KeyAscii = 8 Then
.ByteRegl = True 0bjeto.Text = "O" +
Else Mid(Objeto.Text, 1, 3)
.ByteRegl = False KeyAscii = O
End If 0bjeto.SelStart = 4
If Mid$(aux, 2, 1 ) = "V" Else
Then Caracter = Chr(KeyAscii1
.ByteReg2 = True If (Caracter >= "O" And
Else Caracter <= "9") Or (Caracter >= "A"

Alejandro Montejo Rubio 2


Simulador del Sistema Mínimo I n t e l 8088
Proyecto Terminal

And Caracter <= "F") Or (Caracter >= 0bjeto.SelStart = 4


"a" And Caracter <= "f") Then Else
KeyAscii = KeyAscii = O
Asc (Ucase (Caracter)
) End If
cadena$ = " " End If
cadena$ = Mid(Objeto.Text, 2, 3) End Sub
0bjeto.Text = cadena$
-
- 255
Codigo CPU Interno Height
HelpContextID = 2
VERSION 4.00 -
- 6120
Left
Begin VB.FormForml -
-
TabIndex 79
Backcolor = &HOOCOCOCO& -
- 6600
TOP
Borderstyle = 1 'Fixed Single WhatsThisHelpID = 1
= "CPU 8088" -
-
Caption Width 1575
ClientHeight = 6690 End
ClientLeft = -210 Begin VB.TextBox 12
= 720 -
- 285
ClientTop Height
ClientWldth = 9510 -
-
Left 8520
-
-
Beginproperty Font iOBE35203-8F91- TabIndex 78
llCE-9DE3-00AA004BB851; -
- "Textl"
Text
Name = "Courier" -
- 5160
TOP -
Slze = 9.15 Visible - O 'False
Charset = o Width -
- 255
Weight = 400 End
Underline = O 'False Begin VB.TextBox Ll
Italic = O 'False Height -
-
285
Strikethrough = O 'False Left -
- 8160
Endproperty -
- 71
TabIndex
Height = 7380 - "Textl"
Text -

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"

Alejandro Montejo Rubio


3
Simulador del Sistema Mínimo I n t e l 8088
Proyecto Terminal

270 Forecolor = &HOOOOFFOO&


Left = 2880 Height = 285
TabIndex = 71 Left = 6840
Top = 6585 TabIndex = 55
Width = 255 Text = "00"
End Top = 1200
Begin VB.CommandButtonCommand1 Width = 375
Caption = "&Reset" End
Beginproperty Font {OBE35203- Begin VB.TextBox BL
8F51-llCE-9DE3-00AAOO4BB851) BackColor = &H00000000&
Name = "MS Sans Beginproperty Font iOBE35203-
Serif" 8F91-llCE-5DE3-00AAOO4BB851)
Size = 8.25 Name = "MS Sans
Charset = o Serif"
Weight = 400 Size = 8.25
Underline = O 'False Charset = o
Italic = O 'False Weight = 400
Strlkethrough = O 'False Underline = O 'False
Endproperty Italic = O 'False
-
- 'False
Height 255 Strlkethrough = 0
-
- 1680
Left Endproperty
Tablndex -- 64 ForeColor = &HOOOOFFOO&
-- 6000 Height = 285
TOP -
- 855
Width Left = 6840
End TabIndex = 54
Begin VB.TextBox MAR Text = 00
11 IT

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

Alejandro Montejo Rubio 2


Simulador del Sistema Mínimo Intel 8088
Proyecto Terminal

Name = "MS Sans Text = "00"


Serif" TOP = 2280
Size = 8.25 Width = 315
Charset = o End
Weight = 400 Begin VB.TextBox Nuevovalor
Underline = O 'False BackColor = &H00000000&
Italic = O 'False Forecolor = &HOOOOFFOO&
Strikethrough = O 'False Height = 285
Endproperty Left = 7080
ForeColor = &HOOOOFFOO& MaxLength = 2
Height = 285 TabIndex = 43
Left = 6480 Text = II00 11

TabIndex = 47 TOP = 6120


Text = "00" Width = 455
TOP = 1200 End
Width = 375 Begin VB.TextBox DesplazamientoDump
End BackColor = &H00000000&
Begin VB.TextBox BH Beginproperty FQnt (OBE35203-
Backcolor &H00000000& 8F51-i~CE-5DE3-00AAO04BB851)
Beginproperty Font (OBE35203- Name = "MS Sans
8F91-llCE-5DE3-00AAOO4BB851) Serif"
Name Sans
= "MS Size = 8.25
Serif" Charset = o
Size = 8.25 Weight = 400
Charset = o Underline = O 'False
Weight = 400 Italic = O 'False
Underline = O 'False Strikethrough = O 'False
Italic = O 'False Endproperty
Strikethrough = O 'False Forecolor = &HOOOOFFOO&
Endproperty Height = 285
ForeColor = &HOOOOFFOO& Left = 5880
Height = 285 MaxLength = 4
Left = 6480 TabIndex = 38
TabIndex = 46 Text = "0000"
Text = 00I. 11
Top = 6120
TOP = 1560 Width = 615
Width = 315 End
End Begin VB.TextBox SegmentoDump
Begin VB.TextBox CH Backcolor = &H00000000&
BackColor = &H00000000& Peginproperty Font (OBE35203-
Beginproperty Font (OBE35203- 8F51-llCE-9DE3-00AA004BB851)
8F51-llCE-5DE3-00AAO04BB851) Name = "MS Sans
Name = "MS Sans Serif"
Serif" Size = 8.25
Size = 8.25 Charset = o
Charset = o Weight = 400
Weight = 400 Underline = O 'False
Underline = O 'False Italic = O 'False
Italic = O 'False Strikethrough = O 'False
Strikethrough = O 'False Endproperty
Endproperty ForeColor = &HOOOOFFOO&
ForeColor = &HOOOOFFOO& Height = 285
Height = 285 Left = 3560
Left = 6480 MaxLength = 4
TabIndex = 45 TabIndex = 37
Text = "00" Text = "0000"
TOP = 1520 TOP = 6120
Width = 375 Width = 615
End End
Begin VB.TextBox DH Begin VB. TextRox Piimp
Backcolor = &H00000000& BackColor = &HOOFF0000&
Beginproperty Font (OBE35203- Forecolor = &HOOFFFFOO&
8F51-llCE-5DE3-00AAO04BB851) Height = 3015
Name = "MS Sans Left = 2880
Serif" Locked = -1 'True
Size = 8.25 MultiLine = -1 'True
Charset = o TabIndex = 36
Weight = 400 Top = 3120
Underline = O 'False Width = 4655
Italic = O 'False End
Strikethrough = O 'False Begin VB. Frame Frame1
Endproperty BackColor = &HOOOOOOFF&
Forecolor = &HOOOOFFOO& Caption = "Mapa de
Height = 285 memoria"
Left = 6480 Beginproperty Font (OBE35203-
TabIndex = 44 8F~1-llCE-~DE3-00AA004BB851)

Alejandro Montejo Rubio 3


Simuladordel Sistema Minimo I n t e l 8088
Proyecto Terminal

Name = "MS Sans Caption = "SS pila


Serif" 0800H - OBFFH"
Size = 8.25 Beginproperty Font (OBE35203-
Charset = o 8F91-llCE-9DE3-00AAO04BB851)
Weight = 400 ame N = "MS
Underline = O 'False Sans Serif"
Italic = O 'False Size = 8.25
Strikethrough = O 'False Charset = o
Endproperty Weight = 700
Height = 6135 Underline = o
Left = 7920 I False
TabIndex = 34 Italic = o
TOP = 1320 ' False
Width = 3135 Strikethrough = O
Begin VB.TextBox Eproml ' False
-
-
BackColor Endproperty
&HOOFFFFOO& -
-
Forecolor
Beginproperty Font (OBE35203- &H80002308&
8F91-llCE-9DE3-00AAO04BB851) Height = 255
Name = "MS Left = 240
Sans Serif" TabIndex = 69
Size = 8.25 TOP = 4920
Charset = o Width = 2655
Weight = 700 End
Underline = o Begin VB.Label Label36
' False Alignment = 2 'Center
Italic = o Backcolor -
-
' False &HOOOOOOFF&
Strikethrough = O Borderstyle = 1 'Fixed
' False Single
Endproperty Caption = "MEMORIA
ForeColor --
LIBRE"
&H00000000& Beginproperty Font (OBE35203-
Height = 1155 8F91-llCE-9DE3-00AA004BB851)
Left = 15 Name = "MS
Locked = -1 'True Sans Serif"
MultiLine = -1 'True Size = 13.5
TabIndex =
-
35 Charset = o
Text - = 700
Welght
"cpuint-l.frx": O000 Underline = o
TOP = 240 'False
Width = 3105 Italic = o
End ' False
Begin VB.Labe1 Label35 Strikethrough = O
Appearance = O 'Flat 'False
-
-
Backcolor Endproperty
&HOOOOFFOO& Height = 495
Caption = "ES estra Left = 120
OCOOH - OFFFH" TabIndex = 82
Beginproperty Font (OBE35203- Top = 2640
8F91-llCE-9DE3-00AAO04BB851) Width = 2625
Name = "MS End
Sans Serlf" Begin VB.Label Label32
Size = 8.25 Appearance = O 'Flat
Charset = o BackColor -
-
Weiqht = 700 &HOOOOFFOO&
Underline = o Caption = "CS código
' False OOOOH - 03FFH"
Italic = o Beginpropert\: Font (OBE35203-
' False 8F91-ilCE-9DE3-00AAO04BB851)
Strikethrough = O Name
' False Sans Serif"
Endproperty Size = 8.25
-
Forecolor - Charset = o
&H80000008& Weight = 700
Height = 255 Underline = o
Left = 240 'False
TabIndex = 75 Italic = o
Top = 4680 'False
Width = 2655 Strikethrough = o
End ' False
Begin VB.Labe1 Label30 Endproperty
Appearance = O 'Flat Forecolor -
-
Backcolor --
&H80000008&
&HOOOOFFOO& Height -
255
Left -
- 240

Alejandro Montejo Rubio 4


Simulador del Sistema Mínimo Intel 8088
Proyecto Terminal

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

Alejandro Montejo Rubio 5


Simulador del Sistema Minimo Intel 8088
Proyecto Terminal

End Itallc = O 'False


Begin VB.TextBox BusDirecciones Strikethrough = 0 'False
BackColor = &H00000000& Endproperty
Enabled = O 'False Forecolor = &HOOOOFFOO&
Beginproperty Font lOBE35203- Height = 285
8F91-llCE-9DE3-00AAOO4BB85l) Left = 2160
Name = "MS Sans TabIndex = 23
Serlf" Text = "0000"
Size = 8.25 TOP = 5280
Charset = o Width = 615
Weight = 400 End
Underline = O 'False Begin VB.TextBox ES
Italic = O 'False BackColor = &H00000000&
Strikethrough = 0 'False Beginproperty Font lOBE35203-
Endproperty 8F91-11CE-9DE3-00AAO04BB851}
Forecolor = &HOOOOOOFF& Name = "MS Sans
Height = 285 Serif"
Left = 5040 Size = 8.25
TabIndex = 28 Charset = o
Text = "00000" Weight = 400
Top = 1200 Underline = O 'False
Width = 615 Italic = O 'False
End Strikethrough = O 'False
Begin VB.TextBox DX Endproperty
Backcolor = &HOOOOOOO0& Forecolor = &HOOOOFFOO&
Beginproperty Font iOBE35203- Height = 285
8F91-llCE-9DE3-00AAO04BB851) Left = 2160
Name = "MS Sans TabIndex = 21
Serif" Text = "0000"
Size = 8.25 Top = 4920
Charset = o Width = 615
Weight = 400 End
Underline = O 'False Begin VB.TextBox SS
Italic = O 'False Backcolor = &H00000000&
Strikethrough = O 'False Beginproperty Font iOBE35203-
Endproperty 8F91-llCE-9DE3-00AAO04BB851}
Forecolor = &HOOOOFF00& Name = "MS Sans
Height = 285 Serif"
Left = 2160 Size = 8.25
TabIndex = 26 Charset = o
Text = "0000" Weight = 400
TOP = 2400 Underline = O 'False
Width = 615 Italic = O 'False
End Strikethrough = O 'False
Begin VB.TextBox IP Endproperty
BackColor = &H00000000& Forecolor = &HOOOOFFOO&
Beginproperty Font (OBE35203- Height = 285
8F91-llCE-9DE3-00AAOO4BE851} Left = 2160
Name = "MS Sans TabIndex = 19
Serlf" Text = "0000"
Size = 8.25 Top = 4560
Charset = o Width = 615
Welght = 400 End
Underline = O 'False Begin VB.TextBox DS
Italic = O 'False Backcolor = &H00000000&
Strikethrough = O 'False Beginproperty Font (OBE35203-
Endproperty 8F91-llCE-9DE3-00AAO04BB851}
Forecolor = &HOOOOFFOO& N ame = "MS Sans
Helght = 285 Serif"
Left = 2160 Size = 8.25
MaxLength = 4 Charset = o
TabIndex = 25 Weight = 400
Text = "0000" Underline = O 'False
TOP = 5640 Italic = O 'False
Width = 615 Strikethrough = O 'False
End Endproperty
Begin VB.TextBox SP Forecolor = &HOOOOFFOO&
Backcolor = &H00000000& Height = 285
Beginproperty Font (OBE35203- Left = 2160
8F91-llCE-9DE3-00AAO04EB851} TabIndex = 11
Name = "MS Sans Text = "0000"
Serif" TOP = 4200
Size = 8.25 Width = 615
Charset = o End
Weight = 400 Begin VB.TextBox CS
Underline = O 'False BackColor = &HOO000000&

Alejandro Montejo Rubio 6


Simulador del Sistema Mínimo Intel 8088
Proyecto Terminal

BeginProperty Font (OBE35203- Left = 2160


8F91-llCE-9DE3-00AAO04BB651} TabIndex = 9
Name = "MS Sans Text = "0000"
Serif" TOP = 2760
Size = 8.25 Width = 615
Charset = o End
Weight = 400 Begln VB.TextBox CX
Underline = O 'False Backcolor = &H00000000&
Italic = O 'False Beginproperty Font (OBE35203-
Strikethrough = O 'False 8F91-llCE-9DE3-00AAO04BB651)
Endproperty Name = "MS Sans
Forecolor = &HOOOOFFOO& Serif"
Height = 265 Size = 6.25
Left = 2160 Charset = o
TabIndex = 15 Weight = 400
Text == "0000" Underline = O 'False
TOP = 3640 Italic = O 'False
Width = 615 Strikethrough = O 'False
End Endproperty
Begin VB.TextBox BP ForeColor = &HOOOOFFOO&
Backcolor = &H00000000& Height = 265
BeglnProperty Font iOBE35203- Left = 2160
8F91-llCE-9DE3-00AAO04BB851} TabIndex = 6
Name = "MS Sans Text = "0000"
Serif" TOP = 2040
Size = 8.25 Width = 615
Charset = o End
Weight = 400 Begin VB.TextBox BX
Underline = O 'False Backcolor = &HOOOOOOOO&
Italic = O 'False Beginproperty Font iOBE35203-
Strikethrough = O 'False 8F91-llCE-9DE3-00AAO04BB651)
Endproperty Name = "MS Sans
Forecolor = &HOOOOFFOO& Serif"
Height = 285 Size = 8.25
Left = 2160 Charset = o
TabIndex = 13 Weight = 400
Text = "0000" Underline = O 'False
Italic = O 'False
TOP = 3480
Width = 615 Strikethrough = O 'False
End Endproperty
Begln VB.TextBox DI Forecolor = &HOOOOFFOO&
Backcolor = &H00000000& Height = 285
Beginproperty Font (OBE35203- Left = 2160
8F91-llCE-9DE3-00AAO04BB851) TabIndex = 4
Name = "MS Sans Text = "0000"
Serif" TOP = 1660
Size = 6.25 Width = 615
Charset = o End
Weight = 400 Begin VB.TextBox AX
Underline = O 'False BackColor = &H00000000&
Italic = O 'False Beginproperty Font (OBE35203-
Strikethrough = 0 'False 8F91-llCE-9DE3-00AA004BB6511
Endproperty Name = "MS Sans
Forecolor = &HOOOOFFOO& Serif"
Height = 285 Size = 8.25
Left = 2160 Charset = o
TabIndex = 11 Weight = 400
Text = "0000" Underline = O 'False
TOP = 3120 Italic = O 'False
Width = 615 Strikethrough = O 'False
End Endproperty
Begin VB.TextBox SI Forecolor = &HOOOOFFOO&
Backcolor = &H00000000& Helght = 265
Beginproperty Font (OBE35203- Left = 2160
8F91-llCE-9DE3-00AAOO4BB851} TabIndex = 2
Name = "MS Sans Text = "0000"
Serif" TOP = 1320
Size = 8.25 Width = 615
Charset = o End
Weight = 400 Begin VB.CommandButton fin
Underline = O 'False Caption = "Fi&n"
Italic = O 'False Beginproperty Font (OBE35203-
Strikethrough = O 'False 8F91-llCE-9DE3-00AAO04BB851)
Endproperty Name = "MSSans
Forecolor = &HOOOOFFOO& Serlf"
Height = 285 Size = 8.25

Alejandro Montejo Rubio 7


Simulador del Sistema Mínimo Intel 8088
Proyecto Terminal

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

Alejandro Montejo Rubio 8


Simulador del Sistema Minimo Intel 8088
Proyecto Terminal

Borderstyle = 1 'Fixed Underline = O 'False


Slngle Italic = O 'False
Caption = "Labe127" Strikethrough = O 'False
Beginproperty Font (OBE35203- Endproperty
8F91-llCE-9DE3-00AAO04BB851) Height = 285
Name = "MS Serif" Left = 7200
Size = 8.25 TabIndex = 57
Charset = o TOP = 1920
Weight = 400 Width = 315
Underline = O 'False End
Italic = O 'False Begin VB.Labe1 Label23
Strikethrough = O 'False Alignment = 'Center
2
Endproperty Borderstyle = 1 'Fixed
Forecolor = &H00000000& Single
Height = 255 Caption = "DL"
Left = 1560 BeglnProperty Font (OBE35203-
TabIndex = 65 8F91-llCE-9DE3-00AAO04BB851)
TOP = 7560 Name = "MS Sans
Wldth = 9615 Serif"
End Size = 8.25
Begin VB.Label Label26 Charset = o
Alignment = 'Center
2 Weight = 400
Borderstyle = 1 'Fixed Underllne = O 'False
Single Italic = O 'False
Caption = MALVI
Strikethrough = O 'False
Beginproperty Font IOBE35203- Endproperty
8F91-llCE-9DE3-00AAO04BB8511 Height = 285
Name = "MS Sans Left = 7200
Serif" TabIndex = 56
Size = 8.25 TOP = 2280
Charset = o Width = 375
Weight = 400 End
Underline = O 'False Begin VB.Labe1 Label22
Italic = O 'False = 'Center
2
Alignment
Strikethrough = 0 'False = 1 'Fixed
QorderStyle
Endproperty Single
Height = 285 = "AH"
Caption
Left = 7200 BeglnProperty Font (OBE35203-
TabIndex = 59 8F91-llCE-9DE3-00AA004BB851)
TOP = 1200 Name = "MS Sans
Wldth = 375 Serif"
End Size = 8.25
Begin VB.Labe1Label25 Charset = o
Alignment = 'Center
2 Weight = 400
Borderstyle = 1 'Fixed Underline = O 'False
Single Italic = O 'False
Caption = "BL" Strikethrough = O 'False
Beginproperty Font (OBE35203- Endproperty
8F91-llCE-9DE3-00AAO04BB851) Height = 285
Name = "MS Sans Left = 6120
Serif" TabIndex = 51
Size = 8.25 TOP = 1200
Charset = o Width = 315
Weight = 400 End
Underline = O 'False Begin VB.Label Label21
Italic = O 'False 4lignment = 'Center
2
Strikethrough = O 'False Borderstyle = 1 'Fixed
EndProperty Single
Height = 285 Captlon = "BH"
Left = 7200 Beginproperty Font íOBE35203-
TabIndex = 58 8F91-1lCE-9DE3-00AAOO4BB851)
TOP = 1560 Name = "MS Sans
Width = 375 Serif"
End Size = 8.25
Begin VB.Label Label24 Charset = o
Alignment ='Center
2 Weight = 400
Borderstyle = 1 ' Flxed Underline = O 'False
Single Italic = O 'False
Caption = "CL" Strikethrough = O 'False
Beginproperty Font íOBE35203- Endproperty
8F91-llCE-9DE3-OOAAO04BB851) Height = 285
Name = "MS Sans Left = 6120
Serif" TabIndex = 50
Size = 8.25 TOP = 1560
Charset = o Width = 315
Weight = 400 End

Alejandro Montejo Rubio 9


Simulador del Sistema Mínimo Intel 8088
Proyecto Terminal

Begin VB.Labe1 Label20 Size = 8.25


Alignment = 2 'Center Charset = o
Borderstyle = 1 'Fixed Weight = 400
Single Underline = O 'False
Caption = "CH" Italic = O 'False
BeglnProperty Font lOBE35203- Strlkethrough = 0 'False
8F91-llCE-9DE3-00AAO04BB8511 Endproperty
Name = "MS Sans ForeColor = &H00000000&
Serif" Height = 255
Size = 8.25 Left = 3000
Charset = o TabIndex = 41
Weight = 400 TOP = 2640
Underline = O 'False Width = 4815
Italic = O 'False End
Strikethrough = O 'False Begin VB.Labe1 Label16
Endproperty Borderstyle = 1 'Fixed
Height = 285 Single
Left = 6120 Caption -
TabIndex = 49 "Desplazamiento"
TOP = 1920 BeginProperty Font (OBE35203-
Width = 375 8F91-llCE-9DE3-00AA004BB851)
End Name = "MS Sans
Begln VB.Labe1 Label19 Serif"
Alignment = 2 'Center Size = 8.25
Borderstyle = 1 'Fixed Charset = o
Single Weight = 400
Caption = " DH" Underline = O 'False
BeginProperty Font (OBE35203- Italic = O 'False
8F91-llCE-9DE3-00AAO04BB851) Strlkethrough = O 'False
Name = "MS Sans EndProperty
Serif" Height = 285
Size = 8.25 Left = 4680
Charset = o TabIndex = 39
Weight = 400 TOP = 6120
Underline = 0 'False Width = 1215
Italic = O 'False End
Strikethrough = O 'False Begin VB.Labe1 Estado
Endproperty Alignment = 2 'Center
Height = 285 Backstyle = o
Left = 6120 'Transparent
TabIndex = 48 Borderstyle = 1 'Fixed
TOP = 2280 Single
Width = 375 Caption = "CICLODE
End FECH"
Begin VB.Label text19 BeginProperty Font iOBE35203-
= 2 'Center 8F91-llCE-9DE3-00AAO04BB851]
Alignment
= 1 'Fixed Name Sans
= "MS
Borderstyle
Single Serif"
= "Valor" Slze = 8.25
Caption
BeginProperty Font (OBE35203- Charset = o
8F91-llCE-9DE3-00AAO04BB851] Weight = 400
Name = "MS Sans Underline = O 'False
Serlf" Italic = O 'False
Size = 8.25 Strikethrough = O 'False
Charset = o Endproperty
Weight = 400 qeight = 255
Underline = 0 'False Left = 3000
Itallc = O 'False TabIndex = 32
Strikethrough = O 'False TOP = 1920
EndProperty Wldth = 3015
Height = 270 End
Left = 6480 Begin VB.Labe1 Label15
TabIndex = 42 Borderstyle = 1 'Fixed
TOP = 6120 Single
Width = 615 Captlon = "Bus Datos"
End BeginProperty Font lOBE35203-
Begin VB.Labe1 Label18 8F91-llCE-9DE3-00AAO04BB851)
Alignment = 'Center
2 Name = "MS Sans
Backcolor = &HOOCOCOCO& Serif"
Borderstyle = 1 'Fixed Size = 8.25
Single Charset = o
Caption = "Dump" Weight = 400
BeginProperty Font lOBE35203- Underline = O 'False
8F91-llCE-9DE3-00AAO04BB851) Italic = O 'False
Name = "MS Sans Strikethrough = O 'False
Serif" Endproperty

Alejandro Montejo Rubio 10


Simulador del Sistema Mínimo I n t e l 8088
Proyecto Terminal

Height = 270 Beginproperty Font (OBE35203-


Left = 3000 8F91-llCE-9DE3-00AA004BB851)
TabIndex = 29 Name = "MS Sans
Top = 1560 Serif"
Width = 1935 Size = 8.25
End Charset = o
Begin VB.Labe1 Label14 Weight = 400
Borderstyle = 1 'Fixed Underline = O 'False
Single Italic = O 'False
Caption = "Bus Strikethrough = O 'False
Direcclones" Endproperty
Beginproperty Font (OBE35203- Height = 285
8F91-llCE-9DE3-00AAO04BB851) T,eft = 1680
Name = "MS Sans 1 abIndex = 20
Serlf" Top = 4920
Size = 8.25 Wldth = 315
Charset = o End
Weight = 400 Begin VB.Labe1 Label10
Underline = O 'False Borderstyle = 1 Fixed
Italic = O 'False Single
Strikethrough = O 'False Caption = "SS"
Endproperty Beginproperty Font (OBE35203-
Height = 285 8F91-llCE-9DE3-00AAO04BB851)
Left = 3000 Name = "MS Sans
TabIndex = 21 Serif"
TOP = 1200 Slze = 8.25
Width = 1935 Charset = o
End Weight = 400
Begin VB.Labe1 Label13 Underline = O 'False
BackColor = &HOOCOCOCO& Italic = O 'False
Borderstyle = 1 'Fixed Strikethrough = O 'False
Single Endproperty
Caption = I I8
11
Height = 285
Beginproperty Font (OBE35203- Left = 1680
8F91-llCE-9DE3-00AAOO4BB851) 1 dbIndex = 18
Name = "MS Sans TOP = 4560
Serif" Width = 375
Size = 8.25 End
Charset = o Begin VB.Labe1 Label9
Welght = 400 Borderstyle = 1 'Fixed
Underline = O 'False Single
Italic = O 'False Caption = "DS
Strikethrough = O 'False Beginproperty Font (OBE35203-
EndProperty 8F91-llCE-9DE3-00AAO04BB851)
Height = 285 Name = "MSSans
Left = 1680 Serif"
TabIndex = 24 Size = 8.25
TOP = 5640 Charset = o
Width = 375 Welght = 400
End Underline = O 'False
Begin VB.Labe1 Label12 Italic = O 'False
Borderstyle = 1 'Fixed Strikethrough = O 'False
Single Endproperty
Caption = "SP" Height = 285
Beginproperty Font (OBE35203- Left = 1680
8F91-llCE-9DE3-00AAO04BB851) TdbIndex = 16
Name = "MS Sans TOP = 4200
Serif" Width = 315
Size = 8.25 End
Charset = o Begin VB.Labe1 Label8
Weight = 400 Borderstyle = 1 'Fixed
Underline = O 'False Single
Italic = O 'False Caption = *TCS"

Strikethrough = O 'False Beginproperty Font (OBE35203-


Endproperty 8F91-llCE-9DE3-00AAO04BB851)
Helght = 285 Name = "MS Sans
Left = 1680 Serif"
TabIndex = 22 Size = 8.25
TOP = 5280 Charset = o
Width = 315 Weight = 400
End Underllne = O 'False
Begin VB.Labe1 Label11 Italic = O 'False
Borderstyle = 1 'Fixed Strlkethrough = O 'False
Single Endproperty
Caption = "ES" Height = 285
Left = 1680

Alejandro Montejo Rubio 11


Simulador del Sistema Minimo Intel 8088
Proyecto Terminal

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

Alejandro Montejo Rubio 12


Simulador del Sistema Mínimo I n t e l 8088
Proyecto Terminal

Caption = "&Archivo" Tamaño = Tamaño + 1


Begin VB.MenuAbrir End If
Caption = "&Abrlr" End With
End IncrementaIP (Tamaño)
Begin VB.Menu Guardar
Caption = "&Guardar" End Sub
End
Begin VB.Menu separadorl Public Function DetectaOrigenyDestinoO
-
- -11 11
Dim ExisteDestino As Boolean
Caption
End
Begin VB.Menu Salir ExisteDestino = False
Caption = "&Salir" If
End Operacion(CodigoOperacion).ByteRegl
End Then
End ExisteDestino = True
Attribute VB-Name = "Forml" Select Case Reglstrol
Attribute VB-Creatable = False Case O
Attribute VB-Exposed = False Set Destino = AL
Case 1
Public DireccionFisicaDump As Long Set Destino = AH
Public Sub DecodificaCodigoO Case 2
Tamaño = 1 Set Destino = BL
With Operacion(Codigo0peracion) Case 3
If .ByteRegl Then Set Destino = BH
Registro1 = Case 4
Memoria ( (CLng ("&H"+ Set Destlno = CL
MemorlaFisica$(cs.Text, ip.Text)) + Case 5
Tamaño) Mod 1048575) Set Destlno = CH
Tamaño = Tamaño + 1 Case 6
End If Set Destlno = DL
If .OffH1 Then Case 7
aux = Memoria( (CLng("&H" + Set Destlno = DH
MemoriaFisica$(cs.Text,ip.Text) + Case 8
Tamaño) Mod 1048575) Set Dpstino = ax
Direccion = aux * 256 ' Case 9
corrimiento xx O0 Set Destlno = bx
Tamaño = Tamaño + 1 Case 10
Set Destlno = cx
T1.Text = dux Case 11
Set Destino = dx
End If Case 12
If .OffLo Then Set Destino = si
aux = Memorla( (CLng("&H" + Case 13
MemoriaFislca$(cs.Text, ip.Text)) + Set Destino = di
Tamaño) Mod 1048575) Case 14
Direccion = Dlreccion + dux Set Destino = bp
' xxoo + yy= xxyy Case 15
Tamaño = Tamaño t 1 Set Destino = S S
T2.Text = aux Case 16
End If Set Destino = es
If .ByteReg2 Then Case 17
Registro2 = Set Destino = ds
Memoria ( ( CLng ( "&H" + Case 18
MemoriaFisica$(cs.Text, ip.Text)) t Set Destino = cs
Tamaño) Mod 1048575) Case 19
Tamaño = Tamaño + 1 Set Destino = T1
End If Case 20
If .Dato8 Then Set Destino = T2
DatoByte = Case 21
Memoria ( (CLng( " & H "+ Set Destino = T12
MemoriaFisica$(cs.Text, ip.Text)) + Case 22
Tamaño) Mod 1048575) Set Destino = MAR
Tamaño = Tamaño + 1 Case 23
End If Set Destino = BusDatos
If .DatoHi Then End Select
dux = Memoria( (CLng("&H" + End If
MemoriaFisicaS (cs.Text, ip.Text)) +
Tamaño) Mod 1048575) If
DatoWord = aux * 2 5 6 Operaclon(CodigoOperacion).ByteRegZ
Tamaño = Tamaño + 1 Then
End If Select Case Registro2
If .DatoLo Then Case O
dux = Memoria( (CLng("&H" + Origen = AL.Text
MemoriaFisica$(cs.Text, ip.Text)) + Case 1
Tamaño) Mod 1048575) Origen = AH.Text
DatoWord = DatoWord + aux Case 2

Alejandro Montejo Rubio 13


Simulador del Sistema Mínimo I n t e l 8088
Proyecto Terminal

Origen = BL.Text Case "CODESEGMENT"


Case 3 Inlcializa el segmento de codigo
Origen = BH.Text CODIGOS = "0000"
Case 4 Case "STACKSEGMENT" '
Origen = CL.Text inicializa el segmento de pila
Case 5 STACK$ = "0800"
Origen = CH.Text Case "EXTRASEGMENT"
Case 6 inicializa el segmento extra
Origen = DL.Text Extra$ = "OCOO"
Case 7 Case "DETECTA" ' detecta el
Orlgen = DH.Text origen y el destino
Case 8 DetectaOrigenyDestino Llamada
Origen = ax.Text ala función detecta origen y detecta
Case 9 destino
Origen = bx.Text Case "ASIGNA" ' aslgna el
Case 10 valor del origen al destino
Origen = cx.Text Destino.Text = Orlgen
Case 11 Case "ASIGNA=MEMORIA" Asigna
Origen = dx.Text el contenido de un registro al Segmento
Case 12 de datos
Origen = si.Text Segmento$ = DATOS$
Case 13 T1.Text =
Origen = di.Text Hex(Val(Trim(T1.Text)))
Case 14 T2.Text =
Origen = bp.Text Hex(Val(Trim(T2.Text)))
Case 15 T12.Text = Trim(T1.Text + T2.Text)
Origen = ss.Text 'MAR.Text = Val ("&H" + T12.Text)
Case 16 'valormem = Val ("&H" +
Origen = es.Text Trim(T12. Text)
)
Case 17 Desplazamiento$ = T12.Text
Origen = ds.Text While Len(Desplazamiento$) < 4
Case 18 Desplazamiento$ = "O" +
Origen = cs.Text Desplazamiento$
Case 19 Wend
Origen = T1.Text SusDirecciones.Text = "O" +
Case 20 DesplazdmientoS
Origen = T2.Text DlreccionEditar = CLng ("&HI' +
Case 21 Segmento$) * 16 + CLng("&H" +
Origen = T12.Text Desplazamiento$)
Case 22 If Len (Orlgen) = 4 Then
Origen = MAR.Text Memoria (DlreccionEdltar) = CLng("&H" +
Case 23 Left (Trlm(Origen), )2)
Origen = BusDatos.Text Memoria(DireccionEditar
End Select + 1) = CLng("&H" + Right(Trim(Origen),
End If 2) )
If Operacion(CodigoOperaclon).DatoR Else
Then Memoria (DireccionEditar) = CLng ("&H.'
Origen = HexlDatoByte) 'checar + Left (Trim(Origen), 2) )
si se usa BinHexO End If
End If Case "MEMORIA=ASIGNA" 'Asigna el
If contenido de una dirección de memoria
Operacion(CodigoOperacion).DatoHi Then del segmento
If ExisteDestino Then 'de datosa un registro
Orlgen = HexiDatoWord) Segmento$ = DATOS$
End If T1.Text =
End If Hex ( V a l (Trim(T1 I )
.Text)
End Function T2.Text =
Hex(Val(Trim(T2,Text)))
Public Sub EjecutaCodigo2() T12.Text = Trlm(T1.Text +
botones = vbRetryCance1 + vbCritical + T2.Text)
vbDefaultButton1 ' Define los DesplazamlentoS = T12.Text
botones. BusDirecciones. Text = "O" +
Titulo = "Códigos de error" ' Define T12.Text
el titulo. Whlle
Ayuda = "ayuda.hlp" ' Define el Len(BusDirecciones.Text) < 5
archivo BusDirecciones.Text =
Ide ayuda. "O" + BusDirecclones .Text
numero = 1000 Wend
Dim dirreciondatos As Byte 'BusDatos.Text = Origen
For k = O To 30
Select Case While Len(Desp1azamientoS) < 4
Operacion(CodigoOperacion).Micro(k) Desplazamiento$ = "O" +
Case "DATASEGMENT" Desplazamiento$
Inicializa el segmento de datos Wend
DATOS$ = "0400"

Alejandro Montejo Rubio 14


Simulador del Sistema Mínimo I n t e l 8088
Proyecto Terminal

DireccionEditar = CLng("&H" + Wend


Segmento$) * 16 + CLng("&H" + DlreccionEditar = CLng("&H"
Desplazamiento$) + Segmento$) * 16 + CLng("&H" +
BusDatos .Text = Desplazamiento$)
Hex(Memoria(DireccionEditar)1 Tl.Text =
I Destino = BusDatos.Text Memoria(DIRRECI0NEDITAR)
' MAR.Text = Destino.Text = Hex(Va1 ("&h"
Memoria(Direcci0nEditar) + Destino.Text) -
Case "SUMA" ' Suma el contenido Val(Memoria(DireccionEd1tar)))
de dos registros de8 y 16 bits BusDatos.Text =
Destino. Text = Hex (Val +
("&h" Hex(Val(Memoria(D1reccionEditar)))
Origen) + Val ("&h" + Destino. Text) ) Case "MULTIPLICA"
Case "SUMAMEM" Suma el T12.Text = CLng("&h" + AL.Text)
contenido de unregistro entre el ' T! .Text = CLng ( " & I I "
contenido de unadireccón + CL.T"ut)
' del segemnto de datos Tl . Text = CLng ("&h"
Segmento$ = DATOS$ + Destino. Text)
T1.Text = ax.Text =
Hex(Val(Trim(T1.Text))) Hex(Val("&h" + Tl2.Text) * Val("&h" +
T2.Text = TI.Text) )
Hex(Val(Trim(T2.Text)1 ) Case "MULTIPLICAMEM" '
T12.Text = Trim(T1.Text + Multiplica el contenido del registro AL
T2.Text) por el contenido de una dirección
Desplazamiento$ = T12.Text ' del segmento de datos de 8 blts, y
BusDirecciones.Text = T12.Text el producto lo respalda en el registro
While Len(BusDirecciones.Text) < 5 AX Segmento$ = DATOS$
BusDirecciones. Text = "O" + T1.Text =
BusDirecclones.Text Hex (Val (Trim (Tl.) ) Text)
Wend T2.Text =
While Len(Desp1azamientoS) < 4 Hex (Val (Trim (T2.) ) Text)
DesplazamlentoS = "O" + T12.Text = Trim(T1.Text +
DesplazamlentoS T2. Text)
Wend Desplazamiento$ = T12.Text
DireccionEditar = CLng ("&H" + BusDirecciones.Text =
Segmento$) * 16 + CLng("&H" + T12. Text
DesplazamlentoS) While
Destino.Text = Hex (Val ("&h" + Len(BusDirecciones.Text) ¿ 5
Destino.Text) + BusDlrecclones .Text = " O "
Val(Memoria(DireccionEditar))) + BusDirecciones.Text
BusDatos.Text = Wend
Hex (Val (Memoria (DireccionEditar)
) ) ' BusDirecciones.Text = "O"
+ T12.Text
Case "RESTA" 'Resta el 'BusDatos.Text = Origen
contenido de un registroentre el While Len(Desp1azamientoS) < 4
contenido de otro registor Desplazamiento$ = "O" +
Desplazamiento$
Destino.Text = Hex(CLng("&h" Wend
+ Destino.Text) - CLng ("&h"+ Orlgen) ) DireccionEditar = CLng("&H"
+ Segmento$) * 16 + CLng ("&H" +
Case "RESTAMEM" 'Resta el Desplazamiento$)
contenido de unregistro entre el T1.Text =
contenido de una dirección de Memorla(Direcc1onEditar)
' del segemnto de ax.Text = Hex ( (CLng ("&h" +
datos AL.Text)) *
Segmento$ = DATOS$ Val(Memoria(DireccionEditar)))
T1.Text = BusDatos.Text =
Hex(Val(Trim(T1.Text))) Hex (Val.(Memoria (DlreccionEditar)
) )
T2.Text = Case "DIVIDE" ' Divide el
Hex (Val (Trim(T2 .Text)
) ) contenido del registro AX entre un
T12.Text = Trim(T1.Text + Registro de 16 bits' El cociente lo
T2. Text) pone en el registro AL y el residuo en
Desplazamiento$ = T12.Text el registro AH.
BusDirecciones .Text = "O" T12.Text = CLng("&h" + ax.Text)
+ T12.Text T1.Text = CLng("&h" + Destino.Text)
BusDatos.Text = Origen BusDatos.Text = Destino
BusDirecciones.Text = If Len(Hex( (T12.Text)/
T12 .Text Val (T1.Text)) ) > 2 Then
While res = MsgBox (Codigosdeerror(4),
Len(BusD1recciones.Text) < 5 botones, Titulo, Ayuda, 5)
BusDirecciones .Text = "O" If res = vbCancel Then
+ BusDirecciones.Text ComandoAnlma-Click
Wend End If
While Len(Desp1azamientoS) Else
¿ 4 AL.Text = Hex((Tl2.Text) /
Desplazamiento$ = "O" + Val (T1.Text))
Desplazamiento$

Alejandro Montejo Rubio 15


Simulador del Sistema Mínimo Intel 8088
Proyecto Terminal

AH. Text = Hex (Val (T12. Text)


Mod While Len(Desp1azamientoS)
Val(T1.Text)) < 4
End If DesplazamlentoS = "O" +
Case "DIVIDEMEM" ' Divide el Desplazamiento$
contenido del registroAx entre el Wend
contenido de 16 bits' de una direccion DlreccionEditar = CLng ("&H"
del segmento de datos + Segmento$) * 16 + CLng("&H" +
Segmento$ = DATOS$ Desplazamiento$)
T1.Text = Hex(Val(Trim(T1.Text))) MAR.Text =
T2.Text = Hex(Val(Trim(T2.Text))) Memoria(Direcci0nEditar)
T12.Text = Trim(T1.Text + T2.Text) Memoria(DireccionEditar) =
Desplazamiento$ = T12.Text Hex (CLng( "&H" + MAR. Text) ) + 1
BusDirecciones.Text = T12.Text Case "DECREMENTA" ' Decrementa
While Len(BusDirecciones.Text) < 5 el contenido de un reqistro
BusDirecciones .Text = "O" + Destino.Text = Hex (Val ("&H" +
BusDirecciones.Text Wend Destino.Text) - I)
BusDatos.Text = Origen Case "DECREMENTAMEM"
Whlle Len(Desplazamiento$) < 4 'Decrementa el contenldo de una
Desplazamiento$ = "O" + direccion del segmento de datos
Desplazamiento$ Segmento$ = DATOS$ ' Selecciona
Wend el segmento de datos
DireccionEditar = CLng ("&H" T1.Text =
+ Segmento$) * 16 + CLng ("&H.' + Hex(Val(Trim(T1.Text)))
Desplazamiento$) T2.Text =
T12.Text = CLng("&h" + Hex(Val(Trim(T2.Text)))
ax. Text) Tl2.Text = Trim(T1.Text +
' T1.Text = CLng("&h" + T2. Text)
CL.Text) Desplazamiento$ = T12.Text
' T1.Text = CLng("&h" + BusDirecciones.Text =
Destino.Text) T12.Text
If Len(Hex((Tl2.Text) / While
Val(Memoria(Direcci0nEditar)))) > 2 Len(BusDirecciones.Text) < 5
Then BusDirecciones. Text = "O" +
res = MsgBox(Codigosdeerror(4), BusDirecciones.Text
botones, Titulo, Ayuda, 5) Wend
If res = vbCancel Then BusDatos.iext = Origen
ComandoAnima-Click ;nlhile Len(Desp1azamientoS) .C 4
End If Desplazamiento$ = "O" +
Else Desplazamiento$
AL.Text = Hex((T12.Text) / Wend
Val(Memoria(DireccionEditar))) ' Guarda DireccionEditar = CLng("&H"
el cociente en AL + Segmento$) * 16 + CLng("&H" +
AH. Text = Hex (Val (T12. Text) Mod Desplazamiento$)
Val(Memoria(DireccionEd1tar))) ' Guarda MAR.Text =
el residuo en AH Memoria(DireccionEditar)
End If If Memoria(Direcci0nEditar) < > O
BusDatos. Text = Then
Hex(Val(Memoria(Direcci0nEditar))) Memoria(DireccionEditar) =
Hex(CLng("&h" + MAR.Text)) - 1
Case "INCREMENTA" ' Incrementa Else
el contenido en unode un registro Error 1
destino End If
' Case "INCREMENTA A MAR"
Destino.Text = Hex (Val("&h"
+ Destino.Text) + 1) ' MAR.Text = Hex(CLng("&h" +
MAR.Text) + 1)
Case "INCREMENTAMEM" '
Incrementa el contenido de una 'Case "DECREMENTA"
dirección del segmento de datos
IDestino.Text =
Segmento$ = DATOS$ Hex(Val(Destino.Text) - 1)
T1.Text =
Hex (Val (Trim (Tl.) ) Text) ' Case "COMPLEMENTO"
T2.Text = ' Destino.Text = Hex(255 -
Hex (Val (Trim(T2.Text)
) ) Val (Origen))
T12.Text = Trlm(T1.Text + 'Case "MAR=DIRECCION"
T2.Text)
Desplazamiento$ = T12.Text Case "DESTINO=BUSDATOS" ' El
BusDlrecciones.Text = contenido del busdatos lo carga al
T12. Text destino
While Destino.Text =
Len(BusDirecci0nes.Text) < 5 BusDatos.Text
BusDirecciones .Text = "O" + I Case"BUSDATOS=DESTINO"
BusDirecciones.Text ' Destino = BusDatos.Text
Wend
BusDatos.Text = Origen

Alejandro Montejo Rubio 16


Case "BUSDATOS=ORIGEN" 'El
contenido del origen lo carga al bus
datos
BusDatos.Text = Origen cs
c Simulador del Sistema Mínimo I n t e l 8088

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

Alejandro Montejo Rubio 17


Simulador del Sistema Minimo Intel 8088
Proyecto Terminal

Memoria(Direcci0nEditar - DireccionFisicaDump = CLng ( " & H "+


1) = O ' Eliminación de valoes de la MiCadS)
pila Dump.Text = " "
Memoria(Direcci0nEditar - Dim OffsetAux As Long
2) = O ' Eliminación de valoes de la AuxlS = "&H" +
pila DesplazamientoDump.Text
sp.Text = Hex (Val("&h" + OffsetAux = CLng(Auxl$)
sp.Text) - Val (2)) ' Decremento del Sp For i = DlreccionFisicaDump To
DireccionFlsicaDump + 12 * 8 Step 8
Case "POPMEM" NumAuxTruco = OffsetAux
Segmento$ = STACK$ CadenaAuxS = BinHex(0ffsetAux)
Seleccionamos el segmento de pila OffsetAux = NumAuxTruco
While Len(sp.Text) < 4 While Len(CadenaAuxS) < 4
sp.Text = "O" + sp.Text CadenaAuxS = "O" t
Wend CadenaAuxS
DireccionEditar = CLng("&H" Wend
+ Segmento$) * 16 + CLng("&H" + CadenaAuxS = CadenaAuxS + " "
sp.Text) ' Direccion del SS For]=iToi+7
auxiliar1 = num$ = Hex (Memoria( 1 ) )
Hex (Val (Memoria (DireccionEditar
- 1) ) If Len (num$ ) = 1 Then numS
auxiliar2 = = "O" + num$
Hex(Val(Memoria(DireccionEd1tar - 2) ) ) CadenaAuxS = CadenaAuxS +
Memoria(Dlrecci0nEditar - numS + 'I IT

1) = O ' Eliminación de valoes de la Next j


pila For j = i T o 1 + 7
Memoria(Direcci0nEditar - If Memorla (j) <> O And
2) = O ' Eliminación de valoes de la Memorla(j) < > 9 Then
pila CadenaAuxS = CadenaAuxS
+ Chr (Memorla
( j ))
sp.Text = Hex(Va1 ("&h" + Else
sp. Text)- Val (2)) ' Decremento del Sp CadenaAuxS = CadenaAuxS + " "
Segmentos = DATOS$ End If
T1.Text = Next J
Hex(Val(Trim(T1.Text)) Dump.Text = Dump.Text + Chr(l3)
T2.Text = + Chr (10) + CadenaAuxS
Hex(Val(Trim(T2.Text)1 ) OffsetAuy = OffsetAux + 8
T12.Text = Trim(T1.Text + Next i
T2.Text) End Sub
BusDirecc1ones.Text =
T12. Text Public S u b LeeCodigoO
While CodigoOperacion = Memorla(CLng("&H"
Len(BusDirecciones.Text) < 5 + MemoriaFisica$(cs.Text, ip.Text)) Mod
BusDirecciones .Text = "O" t 1048576)
BusDirecciones.Text End Sub
Wend
Desplazamiento$ = Tl2.Text Public Function
BusDatos.Text = Origen ObtenDireccionNoCero(Direcci0n As Long)
While Len(Desp1azamientoS) While Direccion < 1023 And
< 4 Memoria(Direcci0n) = O
Desplazamiento$ = "O" + Direccion = Direccion + 1
Desplazamiento$ Wend
Wend ObtenDireccionNoCero = Direccion
DireccionEditar = CLng ("&H" End Function
+ Segmento$) * 16 + CLng("&H" +
Desplazamiento$) Public Function ObtenTamaño(Direccion
MAR.Text = As Long)
Memoria(DireccionEditar) DireccionInicial = Direccion
Memoria(Direcci0nEditar) = WtAlle Direccion < 1024 And
Val ("&h"+ auxiliar2) (Memoria(Direcci0n) <> O Or
Memoria(Direcci0nEditar + Memoria(Direcci0n + 1) < > O Or
1) = Val("&h" + auxlliarl) Memoria(D1reccion + 2 ) < > O Or
BusDatos.Text = auxiliar2 + Memoria(D1reccion + 3) <> O Or
auxillarl Memoria(Direcci0n + 4 ) <> O )
End Select Dlreccion = Direccion + 1
Next k Wend
ObtenTamaño = Direccion -
End S u b DirecclonInicial
End Function
Public Sub HazDump( )
MICad$ = Private Sub Abrlr-Click0
MemoriaFisica$(SegmentoDump.Text, Dim DireccionAs Long
DesplazamientoDump.Text) D i m Tamaño As Integer
While Len(MiCad$) < 5 Dim Dato As Byte
MiCadS = "O" + MiCadS Dim i
Wend For 1 = O To 65535 Step 1
Memoria(i) = CLng("&h" + "00")

Alejandro Montejo Rubio 18


Simulador del Sistema Mínimo Intel 8088
Proyecto Terminal

Next i BanderaRegistro = False


DE.Text = "OOOO:OOOO" ax.Text = AH.Text + AL.Text
CodigoOperacion = O BanderaRegistro = True
DireccionEditar = &HO End If
Proceso.Min = 1 End Sub
Proceso.Max = 27
Proceso.Value = Proceso.Min Private Sub AL-KeyPress(KeyAscii AS
On Error GoTo Finalizar Integer)
' L a b e 3 7 .Caption = "Archivo: " + BanderaRegistro = False
AbrirMemoria.filename Caracter = Chr (KeyAscii)
'AbrirMemoria.Action = 1 If (Caracter >= "O" And Caracter <=
AbrirMemoria.ShowOpen "9") Or (Caracter >= "A" And Caracter
Open AbrirMemoria.fi1ename For <= "F") Or (Caracter >= " a " And
Input As 1 Caracter <= "f") Then
On Error GoTo Finalizarcerrar KeyAscii = Asc (Ucase(Caracter!)
Label37.Caption = cadenas = " "
AbrirMemoria.filename cadenas = Mid(AL.Text, 2, 1 )
While Not EOF(1) AL.Text = cadena$
Input #1, Direccion, Tamaño AL.SelStart = 2
For 1 = 1 To Tamaño Else
Input #1, Dato KeyAscil = O
Memoria(Direcci0n + i - 1) = Dato End If
Proceso.Value = i BanderaRegistro = True
Next i End Sub
Wend
'Proceso.Value = Proceso.Min
Finalizarcerrar: Private Sub Anima-Timer0
Close 1 Siguiente-Click
HazDump End Sub
Flnalizar:
End Sub Private Sub ax-ChangeO
If BanderaRegistro Then
Private SubAH-Change ( ) BanderaRegistro = False
If BanderaRegistro Then If Len(ax.Text) < 4 Then
BanderaRegistro = False While Len(ax.Text) < 4
ax.Text = "O" + ax.Text
If Len(AH.Text) < 2 Then Wend
While Len(AH.Text) < 2 Ena If
AH.Text = "O" t AH.Text If Len(ax.Text) > 4 Then ax.Text =
Wend Right (ax.Text, 4)
End If AH.Text = Left(ax.Text, 2)
If Len(AH.Text) > 2 Then AH.Text = AL.Text = Right(ax.Text, 2 )
Right (AH. Text, 2) BanderaRegistro = True
ax.Text = AH.Text + AL.Text End If
BanderaRegistro = True End Sub
End If
End Sub Private Sub ax-KeyPress(KeyAscii As
Integer)
Private Sub AH-KeyPress(KeyAscii As BanderaReglstro = False
Integer) ValidaHexadecimal KeyAscii, ax
BanderaRegistro = False BanderaReglstro = True
Caracter = Chr(KeyAscii) End Sub
If (Caracter >= " O " And Caracter <=
"9") Or (Caracter ? = "A" And Caracter
<= "F") Or (Caracter >= "a" And Private Sub BH-Change0
Caracter <= "f") Then 'bx.Text = BH.Text + BL.Text
KeyAscii = Asc(UCase (Caracter)
) If BanderaRegistro Then
cadena$ =
"I' BanderaReglstro = False
cadena$ = Mid(AH.Text, 2, 1)
AH.Text = cadenas If Len(BH.Text) < 2 Then
AH.SelStart = 1 While Len(BH.Text) < 2
Else BH.Text = "O" + BH.Text
KeyAscii = O Wend
End If End If
BanderaRegistro = True If Len(BH.Text) > 2 Then BH.Text =
End S u b Right(BH.Text, 2)
bx.Text = BH.Text + BL.Text
Private Sub AL-Change0 BanderaRegistro = True
If BanderaRegistro Then End If
If Len(AL.Text) < 2 Then End Sub
While Len(AL.Textj < 2
AL.Text = "O" + AL.Text Prlvate Sub BH-KeyPress(KeyAscii As
Wend Integer)
End If <= "9") Or (Caracter >= "A" And
If Len(AL.Text) > 2 Then AL.Text = Caracter <= "F") Or (Caracter >= " a "
Right (AL. Text, 2j And Caracter <= "f") Then

Alejandro Montejo Rubio * 19


J
Simulador del Sistema Minimo I n t e l 8088
Proyecto Terminal

BanderaRegistro = False Private Sub BusDatos-KeyPress(KeyAsci1


Caracter = Chr(KeyAscii1 As Integer)
If (Caracter >= "O" And Caracter <= BanderaRegistro = False
"9") Or (Caracter >= "A" And Caracter ValidaHexadecimal KeyAscii,
<= F") Or (Caracter >= "a" And
11
BusDatos
Caracter <= "f") Then BanderaRegistro = True
KeyAscii = Asc(UCase(Caracter)) ' ValidaHexadecimal KeyAscii,
cadena$ = "I' BusDatos
cadena$ = Mid(BH.Text, 2, 1) End Sub
BH.Text = cadena$
BH.SelStart = 2 Private Sub BusDirecclones-Change0
Else If BusDirecciones .Text = Then
'"I

KeyAscii = O BusDirecclones. Text = "0000"


End If End Sub
BanderaRegistro = True
End Sub Private Sub
Busnirecclones KeyPress(KeyAsci1 As
-

Private Sub BL-Change0 Integer)


'bx.Text = BH.Text + BL.Text ValidaHexadecimal KeyAscii,
If BanderaRegistro Then BusDirecciones
If Len(BL.Text) < 2 Then End Sub
While Len(BL.Text) < 2
BL.Text = "O" + BL.Text Private Sub bx-ChangeO
Wend 'BH.Text = Left(bx.Text, 2)
End If 'BL.Text = Right(bx.Text, 2)
If Len(BL.Text) > 2 Then BL.Text = If BanderaRegistro Then
Right (BL.Text, 2) BanderaRegistro = False
BanderaRegistro = False
bx.Text = BH.Text + BL.Text If Len(bx.Text) < 4 Then
BanderaRegistro = True While Len(bx.Text) < 4
End If bx.Text = "O" + bx.Text
End Sub Wend
End If
Private Sub BL-KeyPress(KeyAscii As If Len(bx.Text) > 4 Then bx.Text =
Integer) Rlght(bx.Text, 4)
Caracter = Chr(KeyAscii1 BH.Text = Left(bx.Text, 2)
If (Caracter >= "O" And Caracter <= BL.'rext = Right(bx.Text, 2)
"9") Or (Caracter >= "A" And Caracter BanderaRegistro = True
<= "F") Or (Caracter >= " a " And End If
Caracter <= "f") Then End Sub
KeyAscii = Asc (Ucase (Caracter)
)
cadena$ = " " Private Sub bx-KeyPress(KeyAscii As
cadena$ = Mid(BL.Text, 2, 1) Integer)
BL.Text = cadena$ ValidaHexadecimal KeyAscli, bx
BL.SelStart = 2 End Sub
Else
KeyAscii = O Private Sub CH-Change()
End If If BanderaRegistro Then
BanderaRegistro = False
End Sub If Len(CH.Text) < 2 Then
While Len(CH.Text) < 2
Private Sub bp-ChangeO CH.Text = "O" + CH.Text
If bp.Text = " " Then bp.Text = "0000" Wend
End Sub End If
If Len(CH.Text) > 2 Then CH.Text =
Private Sub bp-KeyPress(KeyAscii As Right(CH.Text, 2)
Integer) c ~ . T e x t= CH.Text + CL.Text
ValidaHexadecimal KeyAscii, bp BanderaRegistro = True
End Sub End If
End Sub
Private Sub BusDatos-Change0
If BusDatos.Text = " " Then Private Sub CH-KeyPress(KeyAscii As
BusDatos.Text = "0000" Integer)
If Len(BusDatos.Text) = 1 Then <= "9") Or (Caracter >= "A" And
BusDatos.Text = "O" + Caracter <= "F") Or (Caracter >= " a "
BusDatos .Text And Caracter <= "f") Then
End If BanderaReglstro = False
If Len(BusDatos.Text) = 3 Then Caracter = Chr(KeyAsc1i)
BusDatos .Text = "O" + If (Caracter >= "O" And Caracter <=
BusDatos.Text "9") Or (Caracter >= "A" And Caracter
End If <= "F") Or (Caracter >= " a " And
' Memorla(CLng("&H" + MAR.Text)) = Caracter <= "f") Then
Val ("&h.' + BusDatOS .Text) Mod 256 KeyAscii = Asc (Ucase (Caracter)
)
End Sub cadena$ = " "
cadena$ = Mld(CH.Text, 2, 1 )
CH.Text = cadena$

20
I Alejandro Montejo Rubio
Simuladordel Sistema Minimo I n t e l 8088
Proyecto Terminal

CH.SelStart = 2 Private Sub Commandl-Click0


Else Inicializa-Registros
KeyAscii = O Dim i
End If For i = 1024 To 65535 Step 1
BanderaRegistro = True Memoria(i) = CLng("&h" + "00")
End Sub Next i
Private Sub Checkl-Click0 End Sub
If Checkl.Value = O Then
intervalo.Enabled = False Private Sub Commandl-MouseMove(Butt0n
Label33.Caption = As Integer, Shlft As Integer, X As
"Intervalo-tiempo-desactivado" Single, Y As Slngle)
Else ' Muestra mensaje en la parte inferior
intervalo.Enabled = True de la pantalla el mensaje"
Label33.Caption = Ayudaraplda.Caption = "Resetea el IP y
"Intervalo-tiempo-actlvado" los registros para eir?pezar una nueva
End If e jecucl hn"
End Sub End Sub

Private Sub CL-Change()


'cx.Text = CH.Text + CL.Text Private Sub Command2_Cl1ck()
If BanderaRegistro Then Desensamblador.Show 1
End Sub
If Len (CL.Text) < 2 Then
While Len(CL.Text) < 2 Private Sub Command2-MouseMove(Button
CL.Text = "O" + CL.Text As Integer, Shift As Integer, X As
Wend Single, Y As Single)
End If ' Muestra mensaje en la parte inferior
If Len(CL.Text) > 2 Then CL.Text = de la pantalla el mensaje"
Right (CL.Text, 2) Ayudaraplda.Caption = "Muestra el
BanderaRegistro = False código en lenguaje ensamblador"
cx.Text = CH.Text + CL.Text End Sub
BanderaRegistro = True
End If Private S u b Command3-Click0
End Sub dux$ =
MemoriaFisica(SeqmentoDump.Text,
Private Sub CL-KeyPress(KeyAscii As DesplazamientoDump.TpYt)
Integer) While Len(aux$) < 5
Caracter = Chr(KeyAscii) dux$ = "O" + dux$
If (Caracter >= "O" And Caracter <= Wend
"9") Or (Caracter >= "A" And Caracter dux$ = "&H" + dux$
< = F") Or (Caracter >= "a" And
11
Memoria (CLng(dux$)) = Val ( "&H" i
Caracter <= "f") Then NuevoValor.Text)
KeyAscli = Asc(UCase(Caracter)) Dump.Refresh
cadena$ = " " HazDump
cadena$ = Mid(CL.Text, 2, 1) Dump.Refresh
CL.Text = cadena$ End S u b
CL.SelStart = 2
Else Private Sub Command3-MouseMove(Button
KeyAscii = O As Integer, Shift As Integer, X As
End If Single, Y As Single)
End Sub Ayudarapida.Caption = "Este botón nos
permite introduclr un valor nuevo en la
Private Sub ComandoAnima-Click0 memoria"
If Anima.Enabled Then End Sub
Anima.Enabled = False
Siguiente.Enabled = True Private Sub cs-Change ( )
ComandoAnima.Caption = "&Anima" 'If cs .Text= Then cs
"I' .Text
= "0000"
Else End Suh
Anima.Enabled = True
Siguiente.Enabled = False Pr1,rate Sub es-Keypress (KeyAscii As
ComandoAnima.Caption = "&Parar" Integer)
End If ValldaHexadecimal KeyAscii, cs
End Sub If cs.Text <> "0000" Then
MsgBox (Codigosdeerror( O ) ) '
Private Sub End If
ComandoAnima-MouseMove(Butt0n As End Sub
Integer, Shift As Integer, X As Single,
Y As Single) Private Sub cx-ChangeO
' Muestra mensaje en la parte inferior If EanderaReglstro Then
de la pantallael mensaje" BanderaRegistro = False
Ayudarapida.Caption = "Ejecuta el If Len(cx.Text) < 4 Then
programa residente en memoria, Whlle Len(cx.Text) < 4
continuamente a velocidad determinada cx.Text = "O" + cx.Text
por el Intervalo" Wend
End Sub End If

Alejandro Montejo Rubio 21


Simulador del Sistema Mínimo I n t e l 8088
Proyecto Terminal

If Len(cx.Text) > 4 Then cx.Text = KeyAscii = O


Rlght (cx. Text,) 4 End If
CH.Text = Left(cx.Text, 2) BanderaRegistro = True
CL.Text = Right(cx.Text, 2) End S u b
BanderaRegistro = True
End If Private Sub di-Change()
End Sub If di .Text = " " Then di .Text = "0000"
End S u b
Private S u b cx-KeyPress(KeyAscii As
Integer) Private S u b di-KeyPress(KeyAsci1 As
ValidaHexadecimal KeyAscii, cx Integer)
End Sub ValidaHexadecimal KeyAscii, di
End Sub
Private Sub DE-Change0
Descod = DE.Text Private S u b DL-Change ( )
End S u b 'dx.Te.'t = DH.Text t DL.Text
If BanderaReglstro Then
Private S u b DesplazamientoDump-Change0
HazDump If Len(DL.Text) < 2 Then
dux$ = MemoriaFisica(SegmentoDump.Text, While Len(DL.Text) < 2
Desp1azamientoDump.Text) DL.Text = "O" + DL.Text
While Len(aux$) < 5 Wend
dux$ = "O" t aux$ End If
Wend If Len(DL.Text) > 2 Then DL.Text =
aux$ = "&H"t aux$ Right (DL. Text,2
NuevoValor.Text = BanderaRegistro = False
Hex (Memoria (CLng Mod 1024)I
(aux$) dx.Text = DH.Text + DL.Text
While Len(NuevoValor.Text1 < 2 BanderaRegistro = True
NuevoValor.Text = "O" + End If
NuevoValor.Text
Wend End S u b

Dump.Refresh Private S u b DL-KeyPress(KeyAscii As


End S u b Integer)
Caracter = ChriKeyAscii)
Private S u b If (Caracter >= "0" And Caracter c =
DesplazamientoDump-KeyPress(KeyAscii As "9") Or (Caracter >= " A " And Caracter
Integer) <= "F") Or (Caracter >= "a" And
ValidaHexadecimal KeyAscii, Caracter <= "f") Then
DesplazamientoDump KeyAscil = Asc(UCase(Caracter))
End S u b cadena$ = " "
cadena$ = Mid(DL.Text, 2, 1)
DL.Text = cadena$
Prlvate S u b DH-Change0 DL.SelStart = 2
'dx.Text = DH.Text + DL.Text Else
KeyAscii = O
If BanderaRegistro Then End If
BanderaRegistro = False
If Len(DH.Text) < 2 Then End Sub
While Len(DH.Text) < 2
DH.Text = "O" t DH.Text Private S u b ds-ChangeO
Wend End S u b
End If
If Len(DH.Text)> 2 Then DH.Text= Private Sub ds-KeyPress(KeyAscii As
Right (DH.Text, 2) Integer)
dx.Text = DH.Text + DL.Text ValidaHexadeclmal KeyAscii, ds
BanderaRegistro = True If cs.Text < > "0400" Then
End If MscBox (Codigosdeerror( 1 ) ) '
End S u b End If

Private S u b DH-KeyPress(KeyAscii As End Sub


Integer)
Caracter <= "F") Or (Caracter >= "a" Private Sub dx-Change0
And Caracter <= "f") Then 'DH.Text = Left(dx.Text, 2 )
BanderaRegistro = False 'DL.Text = Rlght(dx.Text, 2)
Caracter = Chr(KeyAscii)
If (Caracter >= " O " And Caracter <= If BanderaRegistro Then
"9") Or (Caracter >= "A" And Caracter BanderaRegistro = False
<= F") Or (Caracter >= "a" And
11

Caracter <= "f"1 Then If Len(dx.Text) < 4 Then


KeyAscii = Asc(UCase(Caracter)) While Len(dx.Text) < 4
cadena$ = " " dx.Text = "O" + dx.Text
cadena$ = Mid(DH.Text, 2, 1) Wend
DH.Text = cadena$ End If
DH.SelStart = 2 If Len(dx.Text1 > 4 Then dx.Text =
Else Right (dx. Text, 4

Alejandro Montejo Rubio 22


~~

Simulador del Sistema Mínimo Intel 8088


Proyecto Terminal

DH.Text = Left(dx.Text, 2 ) If Offset$ = " "


DL.Text = Right (dx. Test,
2) Then Offset$ = "0000"
BanderaRegistro = True Auxl$ = "&H" +
End If Segmento$
aux2$ = "&H" +
End Sub Offset$

Private Sub dx_KeyPress(KeyAsciiAs MemoriaFisicaS = Hex$(CLng(Auxl$) *


Integer) 16 + CLng(aux2S))
ValidaHexadecimal KeyAscil, dx End Function
End Sub
Publlc Sub IncrementaIP(i As Integer)

Prlvate Sub Eproml-MouseMove(Button As If ip.Text = " " Then ip.Text =


Integer, Shift As Integer, X As Slngle, "0000"
Y As Single) Dim Ausl As I.ong
Ayudarapida.Caption = "Segmento de au;-q = "&H" + 1p.Text
memoria EPROM, 64KB" Auxl = CLng (aux$)
End Sub Auxl = Auxl + 1
ip.Text = BlnHex(Aux1)
End Sub
Private Sub es-ChangeO
' If es .Text = " " Then es .Text = "0000" Private Sub FormMouseMove(ButtonAs
Integer, Shift As Integer, X As Single,
End Sub Y As Single)
Ayudarapida.Caption = "Simulador del
Private Sub es-KeyPress(KeyAscii As sistema 8088"
Integer)
ValidaHexadecimal KeyAscii, es End Sub
If cs .Text<> "OCOO" Then
MsgBox (Codigosdeerror(3)) Private Sub Framel-MouseMove(Button As
End If Integer, Shift As Integer, X As Single,
End Sub Y As Single)
Ayudaraplda.Caption = "Segmento de
memoria asiganada para otros
Private Sub fin_Cllck() dispositlvos"
Unload Me End Sub
DireccionEditarl = Descod
End Sub Private Sub Guardar-Click0
Dim Direcclon As Long
Private Sub Fin_MouseMove(ButtonAS Dim Tamaño AS Integer
Integer, Shift As Integer, X As Single, On Error GoTo Finalizar
Y AS Single) AbrirMemoria.Flags = &H806&
' Muestra mensaje en la parte inferlor AbrirMemoria.DialogTit1e = "Guardar
de la pantalla el mensaje" memoria"
Ayudarapida.Caption = "Regresa ala AbrirMemoria.ShowSave
pantalla de edicióny componentes Open AbrirMemoria.fi1ename For
electronicos" Output As 1
End Sub Direccion = O
Do
Private Sub Form-Load0 Direccion =
ReDim Eprom(1) , RAM(1) 'defino mi ObtenDireccionNoCero(Direccion)
memoria RAM y ROM If Direccion >= 1023 Then Exit
DireccionDump = 0 'Dump
en Do
cero Prlnt #1, Dlreccion
Haz Dump 'Creamos el dux& = Dlreccion
dump Tamaño = ObtenTamaño(auxfi)
Eprom(1) .Inicio= fiHFE000 Print #1, Tamaño
NumEprom = 1 'Idicamos que For i = 1 To Tamaño
solo hay 1 Eprom y 1 RAM Print #1, Memoria(Direcci0n
NumRam = 1 t i - 1)
Inicializa-Registros Next 1
'Estado inicial del Fetch Direccion = Direccion + Tamaño
LeeDatosOperacion 'Cargar la Loop Until Direccion >= 1023
tabla de los mnemonicos Close 1
BanderaRegistro = True Finalizar:
' DE = Descod
End Sub
End Sub
Private Sub Intervalo-Change0
Anima.Interva1 = Val(intervalo.Text)
Publlc Function End Sub
MemoriaFisica$(Segmento$, Offset$)
If Segmento$ = "" Private Sub Ip-ChangeO
Then Segmento$ = "0000" 'While Len(ip.Text)< 4
'ip.Text = "O" + ip.Text'

Atejandro Montejo Rubio 23


Simulador del Sistema Mínimo Intel 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

End Sub Private Sub Label2~MouseMove(ButtonAs


Integer, Shift As Integer, X As Single,
Private Sub LabelllMo11seMove(Button As Y As Cjngle)
Integer, Shift As Integer, X As Single, Ayudaraplda.Captlon = "Registro Base de
Y As Single) 2 bytes, a menudo conservael
Ayudarapida.Caption = "Registro de desplazamiento de los datos que hay en
Segmento Extra, lo utllizan algunas memoria"
instruciones para cadenas"
End Sub End Sub

Private Sub Labell2~MouseMove(Button As Private Sub Label20_MouseMove(Button As


Integer, Shift As Integer, X As Single, Integer, Shlft As Integer, X As Single,
Y As Single) Y As Single)
Ayudarapida.Caption = "Registro Ayudaraplda.Caption = "Registro
Apuntador de pila, direcciona datos en Contador de un byte, contiene el conteo
la pila de memoria" de varias lnstruclones"
End Sub
End Sub
Private Sub Labell3~MouseMove(Button As
Integer, Shift As Integer, X As Single, Private Sub Label21~MouseMove(Button As
Y As Single) Integer, Shift As Integer, X As Single,
Ayudarapida.Caption = "Registro Y As Single)
Apuntador de Instruciones, dlrreciona Ayudaraplda.Caption = "Registro Base de
slempre aquella instrución a ejecutar" un byte, a menudo conserva el
End Sub desplazamiento de los datos que hay en
memoria"
Private Sub Labell4~MouseMove(Button As End Sub
Integer, Shift As Integer, X As Slngle,
Y As Single) Private Sub Label22-MouseMove(Button As
Ayudarapida.Caption = "El bus de Integer, Shift As Integer, X As Single,
dirreciones suministra una dirrecion en Y As Slngle)
la memoria" Ayudaraplda.Caption = "Reqistro
End Sub Acumulador de 8 bits 0 un byte
conserva el resultado temporal despues
Private Sub Labell5~MouseMove(Button As de reallzar operaclones"
Integer, Shift As Integer, X As Single, End Sub
Y As Single)
Ayudarapida.Caption = "El bus de datos Private Sub Label23_MouseMove(ButtonAs
transfiere estos entre el Integer, Shift As Integer, X As Single,
microprocesador y la memoria" Y As Single)
End Sub

Alejandro Montejo Rubio 24


Simulador del Sistema Minimo Intel 8088
Proyecto Terminal

Ayudarapida.Caption = "Registro de Ayudarapida.Capt1on = "Segmento de


datos de un byte,es de u s o general" codigo, dirreción inicial, y dirreción
End Sub final"
End Sub
Private Sub Label24_MouseMove(Button As
Integer, Shift As Integer, X As Single, Private Sub Label33_MouseMove(Button As
Y As Single) Integer, Shift As Integer, X As Single,
Ayudarapida.Caption = "Registro Y As Single)
Contador de un byte,contiene el conteo Ayudarapida.Caption = "Activa la opción
de varias instruclones" Intervalo"
End Sub End Sub

Private Sub Label25-MouseMove(Button As Private Sub Label34_MouseMove(Button As


Integer, Shift As Integer, X As Single, Integer, Shift As Integer, X As Single,
Y As Single) Y As Single)
Ayudarapida.Caption = "Registro Base de Ayudarapida.Caption = "Es el intervalo
un byte, a menudo conserva el para Id velocidad de ejecución, Rango
desplazamiento de los datos que hay en 1 - 9000 ( Recomendado 1 0 0 0 ) "
memoria" End Sub
End Sub
Private Sub Label35-MouseMove(Button As
Private Sub Label26_MouseMove(Button As Integer, Shift As Integer, X As Single,
Integer, Shift As Integer, X As Single, Y As Single)
Y As Slngle) Ayudarapida.Caption = "Segmento extra,
Ayudarapida.Caption = "Registro dlrreción inicial y dirreción final"
Acumulador de 8 bits ó un byte End Sub
conserva el resultado temporal despues
de realizar operaciones" Private Sub Label4_MouseMove(ButtonAs
Integer, Shift As Integer, X As Single,
End Sub Y As Single)
Ayudarapida.Caption = "Registro de
datos de 2 bytes, es de uso general"
Private Sub Label27-MouseMove(Button As End Sub
Integer, Shift As Integer, X As Single,
Y As Single) Private Sub Label5"ouseMove(Button As
Ayudarapida.Caption = "Dirreción final Integer, Shift As Integer, X As Single,
del la memoriaRAM" Y As Slngle)
End Sub Ayudara:?ida.Caption = "Registro Indice
de fuente; dirreciona datos fuente de
Private Sub Label28-MouseMove(Button As cadenas o arreglos"
Integer, Shift As Integer, X As Single, End Sub
Y As Single)
Ayudarapida.Caption = "Inlcio de la Private Sub Labelb_MouseMove(Button As
memoria, y del segemntode código" Integer, Shift As Integer, X As Single,
Y As Single)
End Sub Ayudarapida.Caption = "Registro Indice
de Destino, dirreciona datos destino en
Private Sub Label29~MouseMove(ButtonAs forma indirecta"
Integer, Shift As Integer, X As Single, End Sub
Y As Single)
Ayudarapida.Caption = "Segmento de Private Sub Label7_MouseMove(ButtonAs
datos, dirrección inicial y dirreción Integer, Shift As Integer, X As Single,
final" Y As Single)
End Sub Ayudarapida.Caption = "Registro
Apuntador de Base, apuntador de uso
Private Sub Label3~MouseMove(Button As general que dirreciona a una matriz de
Integer, Shift As Integer, X As Single, datos en la pila"
Y As Single) End Sub
Ayudaraplda.Caption = "Registro
Contador de 2 bytes, contiene el conteo Private Sub Label8-ClickO
de varias instruciones" SegmentoDump.Text = cs.Text
End Sub NuevoValor.Text = "00"
End Sub
Private Sub Label30~MouseMove(ButtonAs
Integer, Shift As Integer, X As Single, Private Sub Label8~MouseMove(Button As
Y As Single) Integer, Shift As Integer, X As Single,
Ayudarapida.Caption = "Segmento de Y As Single)
pila, dirreción inicial, y dirreción Ayudarapida.Caption = "Registro de
final" segmento de código,Define la dirección
End Sub inicial de la memoria que tiene el
código"
Private Sub Label32~MouseMove(ButtonAs End Sub
Integer, Shift As Integer, X As Single,
Y As Single) Private Sub Label9-ClickO
SegmentoDump.Text = ds.Text
NuevoValor.Text = "00"

Alejandro Montejo Rubio


1

Simulador del Sistema Mínimo Intel 8088


Proyecto Terminal

End Sub aux$ = "O" + aux$


Wend
Private Sub Label9-MouseMoveiButton As dux$ = "&H" + aux$
Integer, Shift As Integer, X As Single, NuevoValor.Text =
Y As Single) Hex(Memoria(CLng(aux$) Mod 1024)
Ayudarapida.Caption = "Registro de While Len(NuevoVa1or.Text)< 2
Segmento de Datos,define la dlrección NuevoValor.Text = "O" +
inicial de la sección de memoriaque NuevoValor.Text
tiene los datos" Wend
End Sub Dump.Refresh
End Sub
Privte Sub MAR-Change0
IDim aux As Long Private Sub
'aux = Memoria(CLng("&H" + SegmentoDump-KeyPress(KeyAscii As
MAR.Text) Mod 1048576) Integer)
' BusDatos.Text = BinHex(aux) VaiLdaHexadecirnal KeyAscli,
End Sub SegmentoDump
End Sub
Prlvate Sub
NuevoValor-KeyPress(KeyAscii As Private Sub si-ChangeO
Integer) If sl.Text = Then sl.Text = "0000"
"I'

If KeyAscli = 13 Then End Sub


Desp1azamientoDump.Text =
BinHexS ( (CLng ("&h"+ Private Sub si-KeyPress(KeyAscii As
DesplazamientoDump.Text) + 1) Mod Integer)
65536) ValidaHexadecimal KeyAscii, si
While End Sub
Len(DesplazamlentoDump.Text) < 4
DesplazamientoDump.Text = Private Sub Siguiente-Click()
"O" + DesplazamientoDump.Text If Val("&h" t ip.Text) > Val("&h" +
Wend Right (Descod, 4 ) ) Then
KeyAscii = O respuesta = MsgBox ("Ejecución
NuevoValor.SelStart = 2 Terminada, para volver a ejecutar el
Else código Tecle RESET 'I, vbOKOnly,
Caracter = Chr(KeyAscii) "Ejecución de Programas")
If (Caracter >= "O" And If respuesta = 1 '?;en
Caracter <= "9") Or (Cüracter >= "A" ColwndoAnima-Cllck
And Caracter <= "F") Or (Caracter >= End If
"a" And Caracter <= " f " ) Then Else
KeyAscil = Select Case EstadoFetch
Asc(UCase(Caracter)) Case O
cadena$ = " " BusDatos .Text = "0000"
cadena$ = BusDirecciones.Text =
Mid(NuevoValor.Text, 2, 1) "00000"
NuevoValor.Text = cadena$ LeeCodlgo
NuevoValor.Se1Start = 2 Estado.Caption = "Leer el
Else codlgo de instrucción"
KeyAscii = O
End If Case 1
End If DecodificaCodigo
End Sub Estado.Caption =
Private Sub Operacion(CodigoOperacion).mnemonico
NuevoValor-LlnkError(LinkErr As
Integer) Case 2
End Sub E1ecutaCodigo2
Estado.Captlon =
Private Sub "Instrucción ejeclltada"
ProgressBarl-MouseDown(Button As HazDun,p
Integer, Shift As Integer, X As Single, End Select
Y As Single) EstadoFetch = (EstadoFetch + 1) Mod
3
End Sub End If
End Sub
Private Sub Salir-Click0
DireccionEditarl = Descod Public Function EsribirBusDlreccionesO
Unload Me Resultado = False
End Sub If NumRam >= 1 Then
dux$ = "&H" +
Private Sub SegmentoDump-Change() BusDirecciones.Text
Nuevovalor. Text = " For i = 1 To NumRam
If (CLng(aux$) >= RAM(i) .Inicio)
Haz Dump And (CLng(aux$) <= RAM(i).Fin) Then
aux$ = Resultado = Resultado Or True
MemoriaFisica(SegmentoDump.Text, End If
DesplazamientoDump.Text) Next 1
While Len (dux$)< 5 End If

Alejandro Montejo Rubio 26


Simulador del Sistema Mínimo I n t e l 8088
Proyecto Terminal

If Not Resultado Then Private Sub sp-KeyPress(KeyAscii As


AnimaAnterior = Anima.Enabled Integer)
Anima.Enabled = False ValidaHexadecimal KeyAscii, sp
MsgBox ("La dirección especifica e s End Sub
inválida, se leyo basura")
Anima.Enabled = AnimaAnterior Private Sub ss-Change()
End If 'If ss.Text = " " Then ss.Text = "0000"
LeerBusDirecciones = Resultado End Sub
End Function
Public Function LeerBusDireccionesO Private Sub S S KeyPress(KeyAscii As
"

Resultado = False Integer)


If NumEprom >= 1 Then ValidaHexadecimal KeyAscii, S S
aux$ = v v & n +p v If cs.Text <> "0800" Then
BusDirecciones.Text MsgBox (Codigosdeerror(2))
For i = 1 To NumEprom End If
If (CLng(aux$) >= End Sub
Eprom(i) .Inicio)And (CLng(aux$) <=
. Fin) Then
Eprom (i) Public Sub Inicializa-Registros 0
Resultado = Resultado Or True
End If ip.Text = "0000" ' Iniciamos
Next i los valores de los registros
End If cs.Text = "0000"
If NumRam >= 1 Then ax.Text = "0000"
aux$ = "&H" + bx.Text = "0000"
BusDirecciones.Text cx.Text = "0000"
For i = 1 To NumRam dx.Text = "0000"
If (CLng(aux$) >= RAMii) .Inicio) si.Text = "0000"
And (CLng (aux$) <= RAM(i) .Fin) Then di = "0000"
.Text
Resultado = Resultado Or True bp.Text = "0000"
End If ds.Text = "0400"
Next i ss.Text = "0800"
End If es.Text = "OCOO"
If Not Resultado Then ip.Text = "0000"
AnimaAnterior = Anlma.Enabled sp.Text = "0000"
Anima.Enabled = False BusDatos = "0000"
MsgBox ("La direcclónespecifica es SeumentoDumD.Text = "0000"
inválida, se leyo basura") DesplazamientoDump. Text = "0000"
Anima.Enabled = AnimaAnterior EstadoFetch = 0
End If End Sub
LeerBusDirecciones = Resultado
End Function Private Sub Textl-Change0
End Sub
Private Sub Siguiente-MouseMove(Button
As Integer, Shift As Integer, X As Private Sub T12-ClickO
Single, Y As Single) T1.Text = Hex(Val(Trim(T1.Text)))
' Muestra mensaje en la parte inferior T2.Text = Hex(Val(Trim(T2.Text)) )
de la pantallael mensale" Tl2.Text = Trim(T1.Text + T2.Text)
Ayudarapida.Caption = "Ejecuta el valormem = Val("&H" + Trim(T12.Text))
programa residente enmemoria, paso a End Sub
paso, considerando el ciclo de Fech"
End Sub
Private Sub textl9_MouseMove(ButtonAs
Private Sub sp-ChangeO Integer, Shift As Integer, X As Single,
If sp.Text = "I'Then sp.Text = "0000" Y As Single)
While Len(sp.Text) < 4 Ayudarapida.Caption = "ese campo nos
sp.Text = "O" + sp.Text permite modificar el dato q u e se
Wend encuerLtra en segmento:desplazamiento"
End Sub End Sub

Begin VB.PictureBox Picture12


Appearance =
Codigo Sistema Mínimo Fillstyle
Cross
-
~ I Diagonal
VERSION 4.00 Beginproperty Font
Begin VB.Form Form2 name = "Times New
Appearance = O 'Flat Roman"
BackColor = &H00400000& charset = o
Caption = "Simulador weight = 700
Sistema Minimo 8080" size = 18
ClientHeight = 5235 underline = O 'False
ClientLeft = 450 italic = -1 'True
ClientTop = 1605 strikethrough = 0 'False
Clientwidth = 5220 Endproperty
Drawstyle = 1 'Dash FontTransparent = O 'False
DrawWidth = 3 Forecolor -
- &H00000000&
FlllColor = &HOOFFFFFF&

Alejandro Montejo Rubio 27


Simulador del Sistema Mínimo I n t e l 8088
Proyecto Terminal

Height = 5955 name = "Times


HelpContextID = 2 New Roman"
Icon = "Sistema charset = o
minimo. O000
frx": weight = 700
KeyPreview = -1 'True size = 9
Left = 390 underline = o
LinkMode = 1 'Source ' False
LinkTopic =
"Principal" italic = o
MouseIcon = "Sistema ' False
minimo . frx" : O4 42 strikethrough = O
ScaleHeight = 5235 ' False
Scalewidth = 5220 Endproperty
ForeColor - -
TOP = 945
Width = 5340 &HOOFFFFOO&
WindowState = 2 'Maximized Height = 1455
Begin VB.Frame Informacion Left = 240
BackColor = &HOOEOEOEO& MultiLine = -1 'True
Beginproperty Font ScrollBars = 'Both
3
name = "Arial" TabIndex = 48
charset = o Text = "Sistema
weight = 700 minimo . frx" : 4 FCA
size = 9.75 TOP = 1920
underllne = 0 'False Width = 7095
italic = -1 'True End
strikethrough = 0 'False Begin VB.Label Label10
Endproperty Alignment 'Center
= 2
BackColor -
-
Height = 255
Left = 3000 &HOOCOCOCO&
TabIndex = 47 Borderstyle = 1 'Fixed
TOP = 240 Single
Visible = O 'False Caption -
Width = 135 "Componentes Electronicos del Sistema"
Begin VB.ConunandButton Command2 Beginproperty Font
Caption = "C&errar" name = "MS
Beginproperty Font Sans Serif"
name = "Times charset = o
New Roman" weight = 700
charset = o size = 9.75
weight = 700 underllne = o
size = 12 ' False
underline = o Italic = o
' False ' False
italic = o strlkethrough = O
' False ' False
strikethrough = 0 Endproperty
' False ForeColor -
-
Endproperty &A00000000&
Height = 495 Height = 615
Left = 4920 Left = 4080
TabIndex = 50 TabIndex = 56
TOP = 1200 TOP = 360
Width = 1455 Width = 2895
End End
Begin VB.PictureBox componente End
AutoSize = -1 'True Begin VB.CommandButton Tecla
-
-
Backcolor Caption = "F"
&HOOCOCOCO& Beginproperty Font
Borderstyle = O 'None name = "Times New
FillColor -
-
Roman"
&HOOFFFFCO& charset = o
Forecolor -
-
weight = 700
&HOOFFFFCO& slze = 21.75
Height -
-
675 underline = 'False
0
-
- 120
Left Italic = O 'False
Picture -
-
"Sistema strikethrough = 0 'False
minimo.frx":0884 Endproperty
ScaleHeight - 675 Height = 495
Scalewidth -
-
2010 Index = 15
TabIndex -
-
49 Left = 8400
-
-
Top 240 TabIndex = 38
Width -
-
2010 TOP = 4080
End Width = 975
Begin VB.TextBox Text1 End
BackColor -
- Begin VB.CommandButton Tecla
&HOOFF0000& Caption = "E "
Beginproperty Font Beginproperty Font

Alejandro Montejo Rubio 2


Simulador del Sistema Mínimo I n t e l 8088
Proyecto Terminal

name = "Times New BeginProperty Font


Roman" name = "Times New
charset = o Roman"
weight = 700 charset = o
size = 21.75 weight = 700
underline = 'False
0 size = 21.75
italic = 'False
0 underline = O 'False
strikethrough = 0 'False italic = O 'False
Endproperty strikethrough = O 'False
Height = 495 Endproperty
Index = 14 Helght = 495
Left = 7440 Index = 10
TabIndex = 37 Left = 7440
TOP = 4080 TdbIndex = 33
Width = 975 Top = 3600
End Width = 975
Begin VB.CommandButton Tecla End
Backcolor = &HOOFFFFFF& Begin VB.CommandButton Reset
=
11 11
"&Reset"
Caption Caption =
BeginProperty Font BeginProperty Font
name = "Times New name = "MS Sans
Roman" Ser1 f "
charset = o charset = o
weight = 700 weight = 700
size = 21.75 size = 8.25
underline = O 'False underline = O 'False
ltalic = O 'False italic = O 'False
strikethrough = O 'False strikethrough = O 'False
Endproperty Endproperty
Height = 495 Height = 495
Index = 13 Left = 7440
Left = 6600 TabIndex = 46
TabIndex = 36 TOP = 4695
TOP = 4080 Width = 1935
Width 855 End
End Begin VB.CommandButton Command1
Begln VB.CommandButton Tecla Captlon = "&Ejecutar"
Captlon = "C" BeginProperty Font
BeginProperty Font name = "MS Sans
name = "Times New Serif"
Roman" charset = o
charset = o weight = 700
weight = 700 size = 8.25
size = 21.75 underline = 'False
0
underline = O 'False italic = O 'False
italic = O 'False strikethrough = O 'False
strikethrough = O 'False Endproperty
Endproperty Height = 495
Height = 495 Left = 5625
Index = 12 TabIndex = 39
Left = 5640 TOP = 4695
TabIndex = 35 Wldth = 1830
TOP = 4080 End
Wldth = 975 Begin VB.CommandButton Tecla
End Appearance = 'Flat
0
Begin VB.CommandButtonTecla d6ckColor = &H80000005&
Caption = "B" Cancel = -1 'True
Beginproperty Font Caption = "O"
name = New
"Times BeginProperty Font
Roman" name = "Times New
charset = o Roman"
weight = 700 charset = o
size = 21.75 weight = 700
underline = O 'False size = 21.75
italic = O 'False underline = O 'False
strikethrough = O 'False italic = O 'False
Endproperty strikethrough = O 'False
Height = 495 Endproperty
Index = 11 Height = 495
Left = 8400 Index = o
TabIndex = 34 Left = 6600
TOP = 3600 TabIndex = 24
Width = 975 TOP = 3600
End Wldth = 855
Begin VB.CommandButton Tecla End
Caption = "A" Begln VB.CommandBuiton Tecla

Alejandro Montejo Rubio 3


Simulador del Sistema Minimo Intel 8088
Proyecto Terminal

Captlon = "9" TabIndex = 43


Beginproperty Font TOP = 1800
name = "Times New Width = 1335
Roman" End
charset = o Begin VB.CommandButton Funcion
weight = 700 Captlon -
- n- 11 I,

size = 21.15 Beginproperty Font


underline = O 'False name - -

italic = O 'False "Wingdings"


strikethrough = O 'False charset = 2
Endproperty weight = 700
Height = 495 size = 18
Index = g underline = O 'False
Left = 5640 italic = -1 'True
TabIndex = 32 strikethrough = O 'False
TOP = 3600 Endproperty
Width = 975 Helght = 615
End Index = 1
Begin VB.Timer Timer1 Left = 6240
Interval = 1000 TabIndex = 42
Left = 2160 TOP = 1800
Top = 3240 Width = 615
End End
Begin VB.CommandButton Funcion Begln VB.ComandButton Funclon
Caption -
- -11 11
Caption -
- 1, ~ I,

Beginproperty Font Beginproperty Font


- name -
-
name -

"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

Alejandro Montejo Rubio 4


Simulador del Sistema Mínimo I n t e l 8088
Proyecto Terminal

Height = 495 Height = 495


Index = E Index = 4
Left = 8400 Left = 8400
TabIndex = 31 TabIndex = 27
TOP = 3120 Top = 2640
Width = 975 Wldth = 915
End End
Begln VB.CommandButton Tecla Begin VB.CommandButton Tecla
Caption = "7" Captlon = "3"
Beginproperty Font Beginproperty Font
name = "Times New name = "Times New
Roman" Roman"
charset = o charset = o
weight = 700 weight = 700
size = 21.75 size = 21.75
underline = O 'False underline = O 'False
italic = O 'False italic = O 'False
strikethrough = O 'False strikethrough = O 'False
Endproperty Endproperty
Height = 495 Height = 495
Index = 7 Index = 3
Left = 7440 Left = 7440
TabIndex = 30 TabIndex = 26
TOP = 3120 TOP = 2640
Width = 975 Width = 975
End End
Begin VB.CommandButton Tecla Begin VB.CommandButton Tecla
Caption = 6 IT
I8 Caption = "2"
Beginproperty Font Beginproperty Font
name = New"Times name = "Times New
Roman'' Roman"
charset = o charset = o
weight = 700 weight = 700
size = 21.75 size = 21.75
underline = O 'False underline = O 'False
italic = O 'False italic = O 'False
strikethrough = O 'False strikethrough = O 'False
Endproperty Endproperty
Helght = 495 Height = 495
Index = 6 Index = 2
Left = 6600 Left = 6600
TabIndex = 29 TabIndex = 25
TOP = 3120 TOP = 2640
Width = 855 Width = 855
End End
Begin VB.CommandButtonTecla Begln VB.CommandButton Tecla
Caption = "5" Caption = " 1"

Beginproperty Font BeglnProperty Font


name = "Times New name = "Times New
Roman" Roman"
charset = o charset = o
weight = 700 weight = 700
size = 21.75 size = 21.75
underline = O 'False underline = O 'False
italic = O 'False italic = O 'False
strikethrough = O 'False strikethrough = O 'False
Endproperty Endproperty
Height = 495 Height = 495
Index = 5 Index = 1
Left = 5640 Left = 5640
TabIndex = 28 TabIndex = 23
Top = 3120 TOP = 2640
Width = 975 Wldth = 975
End End
Begin VB.CommandButton Tecla Begin VB.PictureBox Picture16
Caption = "4" Appearance = O 'Flat
Beginproperty Font BackColor = &HOOFF0000&
name = "Times New Beginproperty Font
Roman" name = "MS Sans
charset = o Serif"
weight = 100 charset = o
size = 21.75 weight = 700
underline = O 'False size = 8.25
italic = O 'False underline = O 'False
strikethrough = O 'False italic = O 'False
Endproperty strikethrough = O 'False

Alejandro Montejo Rubio 5


Simulador del Sistema Mínimo Intel 8088
Proyecto Terminal

EndProperty Picture = "Sistema


Forecolor = &H80000008& minimo, rx" f : 6A2E
Height = 420' ScaleHeight = 405
Left = 3840 ScaleWldth = 945
Picture = "Slstema TabIndex = 19
minimo . f rx"
: 4FD0 TOP = 5400
ScaleHeight = 390 Width = 975
Scalewidth = 1260 End
TabIndex = o Begln VB.TextBox Dlsplay
Top = 5400 Alignment = 'Center
2
Width = 1290 Backcolor = &H00000000&
End D-itaField -
- 11 I,

Begin VB.PictureBox Picture15 Beginproperty Font


Appearance = O 'Flat name = "Aria1
Backcolor = &HOOFF0000& Narrow"
Beginproperty Font charset = o
name = "MS Sans weight = 700
Serif" size = 18
charset = o underline = O 'False
weight = 700 italic = O 'False
size = 8.25 strikethrough = O 'False
underline = O 'False Endproperty
italic = O 'False ForeColor = &HOOOOFFOO&
strlkethrough = O 'False Height = 855
Endproperty Left = 5640
Forecolor = &H80000008& Locked = -1 'True
Height = 435 MaxLength = 14
Left = 240 TabIndex = 18
Picture = "Sistema Text = "DISPLAY "
minimo.frx1':5916 TOP = 240
ScaleHeight = 405 Width = 3735
Scalewidth = 1260 End
TabIndex = 21 O 'Flat
Top = 5400 Backcolor = &HOOFF0000&
Width = 1290 Beginproperty Font
End name = "MS Sans
Begin VB.PictureBox Picture14 Serlf"
Appearance = o 'E'lat charset = o
Backcolor = &HOOFF0000& weight = 700
Beginproperty Font size = 8.25
name = "MS Sans underline = O 'False
Serif" Italic = O 'False
charset = o strikethrough = O 'False
weight = 700 Endproperty
size = 8.25 Forecolor = &H80000008&
underline = O 'False Height = 495
italic = O 'False Left = 3240
strikethrough = O 'False Picture = "Sistema
EndProperty minimo . f rx" : 7 1AC
Forecolor = &H80000008& ScaleHeight = 465
Height = 435 Scalewidth = 840
Left = 1680 TabIndex = 17
Picture = "Sistema TOP = 4680
mlnimo. f : 62B0
rx" Width = 870
ScaleHeight = 405 End
Scalewidth = 945 Oegln VB.PictureBox Plcturell
TabIndex = 20 Appearance = O 'Flat
TOP = 5400 Backcolor = &HOOFF0000&
Width = 975 BeglnProperty Font
End name = "MS Sans
Begin VB.PictureBox Picture13 Serif"
Appearance = O 'Flat charset = o
Backcolor = &HOOFF0000& weight = 700
Beginproperty Font size = 8.25
name = "MS Sans underline = O 'False
Serif" Italic = O 'False
charset = o strikethrough = O 'False
weight = 700 Endproperty
size = 8.25 Forecolor = &H80000008&
underline = O 'False Height = 495
ltalic = 0 'False Left = 3240
strlkethrough = O 'False Picture = "Sistema
EndProperty mlnimo.frx":7932
Forecolor = &H80000008& ScaleHeight = 465
Height = 435 ScaleWldth = 840
Left = 2760 TabIndex = 16

Alejandro Montejo Rubio 6


Simulador del Sistema Mínimo Intel 8088
Proyecto Terminal

TOP = 3960 Appearance = O 'Flat


Width = 870 Backcolor = &HOOFF0000&
End Beginproperty Font
Begln VB.PlctureBox Picture10 name Sans
= "MS
Appearance = O 'Flat Serif"
Backcolor = &HOOFF0000& charset = o
Beginproperty Font weight = 700
name = "MS Sans size = 8.25
Serif" underline = O 'False
charset = o italic = O 'False
weight = 700 strikethrough = O 'False
size = 8.25 Endproperty
underline = O 'False Forecolor = &H80000008&
italic = O 'False Height = 495
strikethrough = O 'False Left = 4200
Endproperty Picture = "Sistema
Forecolor = &H80000008& minimo,frx":974A
Height = 495 ScaleHeight = 465
Left = 4200 Scalewidth = 840
Picture = "Sistema TabIndex = 12
minimo . frx" : 80B8 TOP = 3960
ScaleHeight = 465 Width = 870
Scalewidth = 840 End
TabIndex = 15 Begin VB.PictureBox Picture6
TOP = 3120 Appearance = O 'Flat
Width = 870 Backcolor = &HOOFF0000&
End Beginproperty Font
Begin VB.PictureBox Picture9 name = "MS Sans
Appearance = O 'Flat Serif"
Backcolor = &HOOFF0000& charset = o
Beginproperty Font weight = 700
name = "MS Sans size = 8.25
Serif" underline = O 'False
charset = o italic = O 'False
weight = 700 strikethrough = O 'False
size = 8.25 Endproperty
underline = O 'False Forecolor = &H80000008&
italic = O 'False Height = 480
strikethrough = O 'False Left = 2160
Endproperty Picture = "Sistema
Forecolor = &H80000008& minimo . f rx" : 9EDO
Height = 480 ScaleHeight = 450
Left = 4200 Scalewidth = 840
Picture = "Sistema TabIndex = 11
minimo.frx":883E TOP = 4560
ScaleHeight = 450 Width = 870
Scalewidth = 840 End
TabIndex = 14 Begin VB.PictureBox Plcture5
TOP = 4680 Appearance = O 'Flat
Width = 870 Backcolor = &HOOFF0000&
End Beginproperty Font
Begin VB.PictureBox Picture8 name = "MS Sans
Appearance = O 'Flat Serlf"
Backcolor = &HOOFF0000& charset = o
Beginproperty Font weight = 700
name = '7% Sans size = 8.25
Serif" underllne = O 'False
charset = o Italic = O 'False
weight = 700 strlkethrough = O 'False
size = 8.25 Endproperty
underline = O 'False Forecolor = &H80000008&
italic = O 'False Height = 495
strikethrough = O 'False Index = o
Endproperty Left = 3240
Forecolor = &H80000008& Picture = "Sistema
Height = 480 mlnimo.frx":A656
Left = 1200 ScaleHeight = 465
Picture = "Sistema ScaleWldth = 840
minimo.frx":8FC4 TabIndex = 10
ScaleHeight = 450 Top = 3120
Scalewidth = 825 Width = 870
TabIndex = 13 End
TOP = 4560 Begin VB.PictureBor Picture4
Width = 855 ADpearance = O 'Flat
End Backcolor = &HOOFF0000&
Begin VB.PictureBox Picture7 BeglnProperty Font

Alejandro Montejo Rubio 7


Simulador del Sistema Mínimo I n t e l 8088
Proyecto Terminal

name = "MS Sans size = 8.25


Serif" underllne = O 'False
charset = o italic = O 'False
weight = 700 strikethrough = O 'False
size = 8.25 Endproperty
underline = O 'False Forecolor = &H80000008&
italic = O 'False Height = 735
strikethrough = O 'False Index = o
Endproperty Left = 3480
Forecolor = &H80000008& Picture = "Sistema
Height = 495 minimo . frx" : CA06
Left = 240 ScaleHeight = 705
Picture = "Sistema Scalewidth = 1605
minimo . frx" :ADDC TabIndex = 6
ScaleHeight = 465 TOP = 240
Scalewidth = 840 Width = 1635
TabIndex = 9 End
TOP = 4560 Begin VB.PictureBox ASB-8805
Width = 870 Appearance = O 'Flat
End BackColor = &HOOFF0000&
Begin VB.PictureBox Picture3 Beginproperty Font
Appearance = O 'Flat name = "MS Sans
Backcolor = &HOOFF0000& Serif"
Beginproperty Font charset = o
name = "MS Sans weight = 700
Serif" size = 8.25
charset = o underllne = 0 'False
weight = 700 ltalic = 0 'False
size = 8.25 strlkethrough = O 'False
underline = O 'False EndProperty
italic = O 'False Forecolor = &H80000008&
strikethrough = O 'False Height = 735
Endproperty Left = 3480
Forecolor = &H80000008& Plcture = "Sistema
Height = 495 minimo.frx":DE98
Left = 1800 ScaleHelght = 705
Plcture = "Sistema Scalewidth = 1590
minimo. frx"
: B52A TabIndex = 5
ScaleHeight = 465 TOP = 1080
Scalewidth = 1185 Width = 1620
TabIndex = 8 End
TOP = 3720 Begin VB.PictureBox PHIL-9131XN
Width = 1215 Appearance = O 'Flat
End Backcolor = &HOOFF0000&
Begin VB.PictureBox Picture1 Fillcolor = &HOOFFFFFF&
Appearance = O 'Flat Beginproperty Font
BackColor = &HOOFF0000& name = "MS Sans
Beginproperty Font Serif"
name = "MS Sans charset = o
Serif" welght = 700
charset = o size = 8.25
weight = 700 underllne = O 'False
size = 8.25 italic = O 'False
underline = O 'False strikethrough = O 'False
italic = O 'False Endproperty
strlkethrough = O 'False Forecolor = &HOOFFFFFF&
Endproperty Height = 735
Forecolor = &H80000008& Left = 3480
Height = 495 Picture = "Sistema
Left = 360 minlmo.frx":F31E
Picture = "Slstema ScaleHeight = 705
minimo. f : BF98
rx" ScaleWldth = 1575
ScaleHeight = 465 TabIndex = 4
Scalewidth = 1185 TOP = 2040
TabIndex = 7 Width = 1605
TOP = 3720 End
Width = 1215 Begin VB.PictureBox Intel-D80314H
End Appearance = O 'Flat
Begin VB.PictureBox Picture2 BackColor = &HOOFF0000&
Appearance = O 'Flat Beginproperty Font
Backcolor = &HOOFF0000& name = "MS Sans
Beginproperty Font Serif"
name = "MS Sans charset = o
Serif" welght = 700
charset = o size = 8.25
weight = 700 underline = O 'False

Alejandro Montejo Rubio 8


Simulador del Sistema Mínimo Intel 8088
Proyecto Terminal

italic = O 'False Alignment 'Center


= 2
strikethrough = O 'False Borderstyle = 1 'Fixed
Endproperty Single
Forecolor = &H80000008& Caption -
Height = 735 "Registros"
Left = 240 Beginproperty Font
Plcture = "Sistema name = "MS
minimo. frx": 107A4 Sans Serif"
ScaleHeight = 705 charset = o
Scalewidth -7 2550 welght = 700
TabIndex = 3 size = 8.25
TOP = 1320 underline = o
Width = 2580 ' False
End italic = o
Begin VB.PictureBox Nec-8627P7 ' False
Appearance = O 'Flat strlkethrough = O
Backcolor = &HOOFF0000& 'False
FillColor = &HOOFFOOFF& Endproperty
Beginproperty Font Height = 255
name = "MS Sans Left = 2760
Serif" TabIndex = 61
charset = o TOP = 1320
weight = 700 Width = 1215
size = 8.25 End
underline = O 'False Begin VB.Labe1 Label5
italic = O 'False Alignment = 'Center
2
strikethrough = O 'False Borderstyle = 1 'Fixed
Endproperty Single
Forecolor = &H0080FFFF& Caption = "Enter"
Height = 735 Beginproperty Font
Left = 240 name = ."S
Picture = "Sistema Sans Serif"
minimo. frx": 127F6 charset = o
ScaleHeight = 705 weight = 700
Scalewidth = 2520 size = 8.25
TabIndex = 2 underline = o
Top = 2400 ' False
Wldth = 2550 italic = o
End 'False
Begin VB.PictureBox Nec-D8279C2 strikethrough = O
Appearance = O 'Flat ' False
Backcolor = &HOOFF0000& Endproperty
Beginproperty Font Helght = 255
name = "MS Sans Left = 1440
Serif" TabIndex = 60
charset = o TOP = 1320
weight = 700 Width = 1335
size = 8.25 End
underline = O 'False Begin VB.Labe1 Label4
italic = O 'False BorderStyle = 1 'Fixed
strikethrough = O 'False Single
Endproperty Caption -
Forecolor = &H80000008& "Instrucciones"
Height = 735 Beginproperty Font
Left = 240 name = "MS
Picture = "Slstema Sans Serif"
minirno.frx":14848 charset = o
ScaleHeight = 705 weight = 700
Scalewidth = 2535 size = 8.25
TabIndex = 1 underline = o
TOP = 240 ' False
Width = 2565 italic = o
End ' False
Begin Threed.SSPane1 SSPanell strikethrough = O
Height = 6150 ' False
Left = 5370 Endproperty
TabIndex = 62 Height = 255
TOP = -15 Left = 240
Wldth = 4245 TabIndex = 59
~Version = 65536 Top = 1320
-ExtentX = 7488 Width = 1215
-ExtentY = 10848 End
-StockProps = 15 Yegin VB.Label Label2
Backcolor = 12632256 Alignment = 'Center
2
Bevelwidth = 5 Borderstyle = 1 'Fixed
Begin VB.Labe1 Label9 Single

Alejandro Montejo Rubio 9


Simulador del Sistema Mínimo I n t e l 8088
Proyecto Terminal

Caption = "Dirección Alignment = 'Center


2
Editar" Borderstyle = 1 'Fixed
Beginproperty Font Single
name = "MS Captlon = "Label7"
Sans Serif" Beyinproperty Font
charset = o name = "MS Sans
weight = 700 Serif"
size = 8.25 charset = o
underline = o weight = 400
' False size = 8.25
italic = o underline = O 'False
' False italic = O 'False
strikethrough = O strikethrough = O 'False
' False Endproperty
Endproperty Height = 255
Height = 255 Left = 8400
Left = 240 TabIndex = 53
TabIndex = 58 TOP = 6120
Top = 5640 Width = 1215
Wldth = 2415 End
End Begin VB.Labe1 Label6
End Alignment = 'Center
2
Begin Threed.SSPane1 SSPanel2 Borderstyle = 1 'Fixed
Height = 6135 Single
Left = o Captlon = "Label6"
Tablndex = 57 Beginproperty Font
TOP = o name = "MS Sans
Width = 5415 Serif"
-Version = 65536 charset = o
-ExtentX = 9551 weight = 400
-ExtentY = 10821 size = 8.25
-StockProps = 15 underline = O 'False
Forecolor = 33023 Italic = O 'False
Backcolor = 4210752 strikethrough = O 'False
Bevelwidth = 10 Endproperty
Borderwidth = 5 Helght = 255
Outline = -1 'True Left = 7200
FloodColor = 14737632 TabIndex = 52
Font3D = 2 TOP = 6120
End Wldth = 1215
Begin VB.Label Label8 End
Borderstyle = 1 'Fixed Begln VB.Labe1 Label3
Single Alignment = 'Center
2
Caption -
~ Backcolor = &HOOCOCOCO&
"c:\actualizacion\anonimo" Borderstyle = 1 'Flxed
Beginproperty Font Single
name = "MS Sans Caption = "Simulador
Serif" Sistema Minim0 8088"
charset = o Beginproperty Font
weight = 400 name = "MS Sans
size = 8.25 Serlf"
underline = O 'False charset = o
italic = O 'False weight = 400
strikethrough = O 'False size = 8.25
Endproperty underline = O 'False
Height = 255 italic = O 'False
Left = o strikethrough = O 'False
TabIndex = 54 Endproperty
TOP = 6120 Forecolor = &H00000000&
Wldth = 4575 Height = 255
End Left = o
Begin ComctlLib.ProgressBar TabIndex = 51
ProgressBarl TOP = 6360
Height = 255 Width = 9615
Left = 4560 End
TabIndex = 55 Begin MSComDlg.CommonDialog Abrirmem
TOP = 6120 Left = 2520
Width = 2655 TOP = 3960
~ Version = 65536 ~
Verslon = 65536
-ExtentX = 4683 ~
ExtentX = 841
-ExtentY = 450 -ExtentY = a47
StockProps = 192 StockProps = o
~

Appearance = 1
~

FlleName = * .mem"
IN

Borderstyle = 1 Filter = * , mem"


I8

End End
Begin VB.Labe1 Label7 Begln VB.Labe1 Label1

Alejandro Montejo Rubio 10


Simulador del Sistema Mínimo I n t e l 8088
Proyecto Terminal

Alignment = 2 'Center Attrlbute VB-Exposed = False


Appearance = O 'Flat
BackColor = &HOOCOCOCO&
Borderstyle = 1 'Fixed
Single
Caption = "Universidad
Autonoma Metropolitana"
Beginproperty Font Private Sub ASB-8805-ClickO
name = "MS Sans ' Este evento ejecuta los
Serif" procedimientos necesarios para mostrar
charset = o el grafico y la informaclón
weight = 700 ' textual de cada componente flsico del
size = 8.25 sistema 8088,
underllne = O 'False 'La llamada al segundo procedimiento se
italic = O 'False efectua pasando los argumentos al
strikethrough = O 'False procedimiento
EndProperty 'con los nombres de los archlvos
Forecolor = &H00000000& necesarios para cada componente
Height = 270
Left = o Call Coordenadas
TabIndex = 22 Call
TOP = 6645 Componentes-lnformacion ("pic7 .bmp",
Width = 9615 "hm6264.txt")
End
Begln VB.MenuArchivo End Sub
Captlon = "&Archivo"
Begin VB.MenuMenuAbrir
Caption = "&Abrir" Private Sub ASB_8805~MouseMove(Button
Shortcut = ^A As Inteqer, Shift As Integer, X As
End Single, Y As Single)
Begin VB.MenuMenuGuardar ' Muestra mensale en la parte inferior
Caption = "&Guardar" de la pantalla el mensaje"
Shortcut = "G Label3.Caption = "Oprima sobre el
End componente un click, para información"
Begin VB.Menu Regresar-indice End Sub
Caption = "&Indice"
Shortcut = ^I
End Private Sub
Begin VB.Menu Salir CambiaDireccionEdicionComando-Click0
Caption = "&Salir" 'Segmento$ = InputBox("Dame el
Shortcut = ^X segmento") '
End 'While Len(Segmento$) < 4
End Segmento$ = "O" t Segmento$
1 I '

Begin VB.Menu Comandos IWend


Caption = "&Comandos" Segmento$ = "0000"
Begin VB.Menu Desplazamiento$ = InputBox ("Dame el
CambiaDireccionEdicionComando desplazamiento")
Caption = "&Cambiar If CLng("&h" + Desplazamiento$) <
direccion Edicion" Val (1023) Then
Shortcut = ^C
End While Len(Desp1azamientoS) < 4
Begin VB.Menu Separador DesplazamlentoS = "O" +
- 11 - 11
Desplazamiento$
Caption ~

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,

Begin VB.Menu MenuDesensamblar Else


-
- respuesta = MsgBox("E1 desplazamlento
Caption
"&Desensamblar" esta fuera de rango ,ya que el segmento
Shortcut = ^D de código es de tamaño lk (1024)
End equivalente a '03FF'")
End End If
Begin VB.Menu Ayuda
Caption = "&Ayuda" End Sub
Begin VB.Menu Hlstoarial
-
-
Caption
"&Historial" Private Sub Commandl--Click( )
Shortcut = ^H Set Descod = DireccionEditarl
End Forml.Show 1
End End Sub
End
Attribute VB-Name = "Form2"
Attribute VB-Creatable = False

Alejandro Montejo Rubio 11


Simulador del Sistema Mínimo I n t e l 8088
Proyecto Terminal

Prlvate Sub Commandl-MouseMoveiButton Registros (9) = "BX"


As Integer, Shift As Integer, X As Registros(l0) = "CX"
Single, Y As Single) Registros(l1) = "DX"
I Muestra mensale en la parte inferior Reglstros(l2) = "SI"
de la pantalla el mensaje" Registros (13) = "DI"
Label3,Caption = "Tecle de elecución, Registros (14) = "BP"
llama al CPU interno" Registros(l5: = "SS"
End Sub ReGistros (16) = "ES"
Registros(l7) = "DS"
Registros (18) = "CS"
( 1
Private Sub Command2-ClickO Inicialización del arreglo de
1nformacion.Visible = False codigos de error

End Sub Codigosdeerror ( O ) = "El Segmento de


código, esta definido en O000 H"
Private Sub Command3-Click0 Codigosdeerror ( 1 ) = "El Segmento de
' Esta Sub Cierra laventana de datos, esta definido en 0400 H"
información de componentes fisicos Codigosdeerror(2) = "El Segmento de
SSPanel1.Vlsible = False pila, esta definodo en0800 HI'
End Sub Codigosdeerror(3) = "El Segmento
estra esta, deflnido en OCOO H"
Private Sub DISPLAY-MouseMove(Butt0n AS Codigosdeerror ( 4 ) = "La divlsión
Integer, Shift As Integer, X As Single, excede el tamaño de un registro de 8
Y As Single) bits,favor de modificarlos registros
' Muestra mensaje enla parte inferior AX y el XL ''
de la pantalla el mensaje" Codigosdeerror (5) = "libre"
Label3.Caption = "Display de edición, Codigosdeerror (6) = "libre"
solo vlsula imposible editar programas" Codigosdeerror (7) = "libre"
End Sub Cod'gosdeerror (8) = "libre"
Codigosdeerror (9) = "libre"

Private Sub Ejecutar-CllckO ' ListaDirecclonamiento(1) =


Descod = DireccionEdltar1,Text "Inmediato"
Forml.Show 1 ' ListaDirecclonamiento ( 2 ) =
End Sub "Registro"
LeeDatosOperacion ' llamada a datos
Private Sub Form-Load0 de operación
Nombre$ = App.Path f Edicion = O
"\mnemonicos. 1st" SegDesensamblar = O
1 = 0 End Sub
ReDim mnemonicos (10)
Open Nombre$ For Input As 1 '
Apertura del archivo Private Sub FramelpDragDrop(Source As
microinstruciones.lst Control, X As Single, Y As Single)
While Not EOF(1)
Input #1, mnemonicos (i) ' Se End Sub
inicializa el arreglo de mnemonicos
i = i + l Private Sub Funcion-Click(1ndex As
Wend Integer)
MaximoCodigo = i Select Case Index
Close 1 Case O
CodigoOperacion = O 'TECLA DEBUSQUEDA DE
DireccionEditar = &HO ' Se CODIGO DE OPERACION 1
inlcailiza la dirreccioninicial para CodigoOperacion =
edltar un programa CodigoOperacion + 1
For i = O To 15 If CodigoOperacion >=
Tecla (i) .Enabled= False MaximoCodigo Then CodigoOperacion =
Next i MaximoCodigo - 1
For i = 3 To 4 DISPLAY.Text =
Funcion(i).Enabled = False Operacion(CodlgoOperaclon).mnemonico
Next i Case 1
DISPLAY.Text = 'TECLA DEBUSQUEDA DE
mnemonicos(Codigo0peracion) CODIGO DE OPERACION 2
Direccionamiento = 1 If CodigoOperacion > O Then
CodigoOperacion =
RegistrosiO) = "AL" ' Se CodigoOperacion - 1
lniclalizan el arreglos de registros End If
del microporcesador DISPLAY.Text =
Registros (1) = "AH" Operacion(CodigoOperacion).mnemonico
Registros (2) = "BL" Case 2
Registros ( 3 ) = "BH" ' ENTER
Registros ( 4 ) = "CL" Select Case Edicion
Registros (5) = "CH" Case O
Registros ( 6 ) = "DL" If
Registros (7) = "DH" Operacion(CodigoOperacion).ByteRegl
Registros ( 8 ) = "AX" Then

Alejandro Montejo Rubio 12


1

Simulador del Sistema Minimo I n t e l 8088


Proyecto Terminal

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 "

Funcion(4).Enabled True= Funzion (3).Enabled = False


If
Operacion(CodigoOperacion).Dato8 Then Funclon (4).Enabled = False
If For Temp = O To
ReglstroActual > 7 Then RegistroActual 15
= 7
End If Tecla(Temp).Enabled True =
If Next Temp
Operacion(CodigoOperacion).DatoHi Then ElseIf
If Operacion(CodigoOperacion).DatoHi Then
RegistroActual < 8 Then RegistroActual Edlcion = 6
= 8 D1SPLAY.Text =
End If "00"
DISPLAY.Text =
Registros(RegistroActual! Funcion ( 3 ) .Enabled = False
ElseIf
Operacion(CodigoOperacion!.OffHi Then Funcion(4).Enabled = False
Ediclon = 2 For Temp = 0 To
DISPLAY.Text = 15
'I oo
Tecla (Temp)
.Enabled
= True
Funcion ( O ) .Enabled = False Next Temp
ElseIf
Funcion (1).Enabled = False Operacion(CodigoOperaclon).OffHi Then
For Temp = O To Edicion = 8
15 DISPLAY.Text =
oo
Tecla(Temp).Enabled = True
Next Temp Funcion(3).Enabled = False
End If
Funcion (4).Enabled = False
Memoria(Direcci0nEditar) = For Temp = O To
CodigoOperacion 15
DireccionEditar =
DireccionEditar + 1 Tecla(Temp) .Enabled True =
auxS = Next Temp
Left(DirecclonEditarl.Text, 5 ) Else
AuxlS = "LH" + Edicion = O
Right(DireccionEditarl.Text, 4 ) DISPLAY.Text =
AuxlS = Operacion(CodigoOperacion).mnemonico
Tipos.BinHex(CLng(AuxlS) + 1 ) For Temp = O To
While Len(Aux1S) < 15
4
AuxlS = "o" + Tecla(Temp).Enabled = False
AuxlS Next Temp
Wend
Funcion (01 .Enabled = True
DlreccionEditarl.Text = dux$ + AuxlS
Case 1 Funcion(l).Enabled = True
If
Operaclon(CodigoOperacion).ByteReg? Funcion ( 3 ) .Enabled = False
Then
Edicion = 4 Funclon(4).Enabled = False
If End If
Operaclon(CodlgoOperacion).DatoHi Then
If Memoria(DireccionEdltar) =
RegistroActual < 8 Then RegistroActual RegistroActual
= 8 DireccionEditar =
End If DireccionEditar + 1
DISPLAY.Text = auxS =
Reglstros(RegistroActua1) Left(DireccionEditarl.Text, 5)
AuxlS = "&H" +
Funcion O ) .Enabled = False Right(DlreccionEdltarl.Text, 4 )
AuxlS =
Funcion 1) .Enabled = False Tipos. BinHex (CLng(AuxlS) + I)
While Len(Aux1S) <
Funcion 3) .Enabled = True 4

Alejandro Montejo Rubio 13


Simulador del Sistema Minimo Intel 8088
Proyecto Terminal

Auxl$ = "O" -I Auxl$ = "&H" +


Aux 1
$ Right(DirecclonEditarl.Text, 4 )
Wend Auxl$ =
Tipos.BinHex(CLng(Auxl$) + 1)
DireccionEditarl.Text = dux$ + Auxl$ Wh.lle Len(Auxl$) c
Case 2 4
Edicion = 3 AuxlS = "O" +
AuxlS
Memoria(DireccionEditar) = CLng("&h" + Wend
DISPLAY. Text)
DireccionEditar = DireccionEditarl.Text = aux$ + AuxlS
DireccionEdltar + 1 Case 4
auxS = Edlcicn = O
Left(DireccionEditarl.Text, 51 DISPLAY.Text =
AuxlS = "&H"+ Operacion(CodigoOperacion).mnemonico
Right(DireccionEditarl.Text, 4 ) For Temp = O To
Auxl$ = 15
Tipos.BinHex(CLng(Auxl$) + 1)
While Len (AuxlS) < Tecla(Temp).Enabled = False
4 Next Temp
AuxlS = "O" +
AuxlS Funcion(O).Enabled = True
Wend
Funcion(l).Enabled = True
DireccionEditarl.Text = dux$ + Auxl$
DISPLAY.Text = "00" Funclon ( 3 ) .Enabled = Fa1 se
Case 3
If Funclon ( 4 ) .Enabled = False
Operacion(CodigoOperaclon).ByteRegZ
Then Memoria(DireccionEd1tar) =
Edicion = 4 RegistroActual
If DireccionEditar =

Operacion(CodigoOperacion).DatoHl Then DireccionEditar + 1


If auxS =
RegistroActual < 8 Then RegistroActual Left(DireccionEditarl.Text, 5)
= a Auxl$ = "&H" +
End If Right(DireccionEditarl.Text, 4 )
For Temp = O TO AuxlS =
15 + 1)
Tipos. BinHex (CLng (AuxlS)
While Len(Auxl$) <
Tecla(Temp).Enabled = False 4
Next Temp Auxl$ = "O" +
AuxlS
Funcion(3) .Enabled = True Wend

Funcion(4).Enabled = True DirecclonEditar1,Text = dux$ + AuxlS


Case 5, 7, 9
Memoria (DireccionEditar) = CLng ("&h" + Edicion = O
DISPLAY.Text) For Temp = O To
DISPLAY.Text = 15
Registros(RegistroActua1)
Else Tecla(Temp).Enabled = False
Edicion = O Next Temp

Memoria (DireccionEditar)= CLng("&h" + Funclon(O).Enabled = True


DISPLAY.Text)
DISPLAY.Text = Funcion(l).Enabled = True
Operacion(CodigoOperacion).mnemonico
For Temp = O To Funcion (3).Enabled = False
15
Funcion(4).Enabled = False
Tecla(Temp).Enabled = False
Next Temp Memoria (DireccionEditar) = CLng ("&h" +
DISPLAY.Text1
Funcion(0) .Enabled
= True DirecclonEditar =
DireccionEdltar + 1
Funcion(l).Enabled = True dux$ =
Left(DirecclonEditarl.Text, 5 )
Funcion ( 3 ) .Enabled = False AuxlS = "&H" +
Right(DlreccionEditarl.Text, 4)
Funcion (4).Enabled = False Auxl$ =
End If Tipos.BinHex(CLng(Auxl$) + 1)
DireccionEditar = While Len (AuxlS) <
DireccionEditar + 1 4
auxS = AuxlS = "O" +
Left(DireccionEdltarl.Text, 5 ) Aux 1$

Alejandro Montejo Rubio 14


Simulador del Sistema Mínimo Intel 8088
Proyecto Terminal

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

Memoria (DireccionEditar) = CLng("&h" +


DISPLAY.Text) Private Sub Funcion-MouseMove(1ndex As
DISPLAY. Text = "00" Integer, Button As Integer, Shift As
DireccionEditar = Integer, X As Single, Y As Single)
DireccionEditar + 1 ' Muestra mensaje en la parteinferior
auxS = de la pantalla el mensaje"
Left(DireccionEdltarl.Text, 5) Label3.Caption = "Teclas de edición"
AuxlS = "&U" + End Sub
Right 1DireccionEditarl.Text, 4)
AuxlS =
Tipos BinHex (CLng (AuxlS) + 1) Private Sub Histoarlal-CllckO
While Len(Aux1S) < historial.Show
4 End Sub
AuxlS = "O" +
AuxlS Prlvate Sub Intel-D80314H-ClickO
Wend ' Este evento elecuta los
procedimientos necesarios para mostrar
DirecC ionEditarl.Text = aux$ + AuxlS el grar:co y la información
Case 8 ' textual de cada componente fisico del
Edicion = 9 sistema 8088,
'La llamada al segundo procedimiento se
Memoria (DireccionEditar) = CLnq ("&h" + efectua pasando los argumentos al
DISPLAY.Text) procedimiento
DISPLAY .Text = "00" 'con los nombres de los archivos
DireccionEditar = necesarios para cada componente
DireccionEditar + 1
auxS = Call Coordenadas
Left(DlreccionEditarl.Text, 5) Call
AuxlS = "&H" + Componentes-informacion ("pic9.bmp",
Right(DireccionEditarl.Text, 41 "8088.txt")
Auxl$ =
Tipos.BlnHex(CLnq(Auxl$) + 1) End Sub
While Len(Aux1S) <
4 Private Sub
Auxl$ = "O" + Intel-D80314H~MouseMove(Button As
AuxlS Integer, Shift As Integer, X As Single,
Wend Y As Single)
' Muestra mensale en !a parte inferior
DireccionEditar1.Text =- aux$ + AuxlS de la pantalla el mensaje"
Label3.Caption = "Oprima sobre el
End Select componente un click, para información"
Case 3
RegistroActual = End Sub
RegistroActual + 1
If RegistroActual > 18 Then
RegistroActual = 18 Private Sub MenuAbrir-CllckO
If ' AbrirArchivo
Operaclon(CodlgoOperacion).Dato8 Then Dim DlreccionA s Long
If RegistroActual > 7 Dim Tamaño As Integer
Then RegistroActual = 7 Dim Dato As Byte
End If Dim contador As Integer
If Dlm i
Operacion(CodigoOperacion).DatoHi Then For i = O To 65535 Step 1
If RegistroActual < 8 Memoria(i) = CLng("&h" + "00")
Then RegistroActual = 8 Next i
End If ' Form1 . DE. Text
= "O000 : 0000"
DISPLAY.Text = CodigoOperacion = O
Registros (RegistroActual) DireccionEditar = &HO
Case 4
If RegistrcActual > O Then Pru?ressBarl.Min = 1
RegistroActual = RegistroActual - 1 ProgressBarl.Max = 25
If ProgressBarl.Value =
Operacion(CodigoOperaclon).DatoE Then ProgressBarl.Min
If RegistroActual > 7
Then RegistroActual = 7 On Error GoTo Finalizar
End If Label8.Captlon = "Archivo: " +
If Abrirmem.filename
Operaclon(CodigoOperaclon).DatoHi Then Abrirmem.ShowOpen

Alejandro Montejo Rubio 15


Simulador del Sistema Mínimo I n t e l 8088
Proyecto Terminal

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

Private Sub Nec-8627P7-ClickO Private Sub


' Este evento ejecuta los PHIL_9131XNMouseMove(Button AS
procedimientos necesarios para mostrar Integer, Shift As Integer, X As Single,
el grafico y la información Y As Single)

Alejandro Montejo Rubio 16


Simulador del Sistema Mínimo I n t e l 8088
Proyecto Terminal

' Muestra mensaje en laparte inferior Call


de la pantallael mensaje" Componentes informacion ("picl9. bmp",
Label3.Caption = "Oprima sobre el 9 , 7 4 0 4 . txt")-
componente un click,para información"
End Sub End Sub

Private Sub Picturell-MouseMove(Butt0n


Private Sub Picturel-Click0 As Integer, Shift As Integer, X As
' Este evento ejecuta los Single, Y As Single)
procedimientos necesarios para mostrar ' Muestra mensaje en la parte inferior
el grafico y la información de la pantalla el mensaje"
' textual de cada componenteflslco del Label3,Caption = "Oprlrna sobre el
sistema 8088, componente un click, para información"
'La llamada al segundo procedimiento se End Sub
efectua pasando los argumentos al
procedimiento Private Sub PicturelZPClick0
'con los nombres de l o s archlvos ' Este evento ejecuta los
necesarios para cada componente procedimientos necesarios para mostrar
el grafico y la información
Call Coordenadas ' textual de cada componente fislco del
Call sistema 8088,
Componentes-informaclon ( " ~ 1 ~ 1bmp",
7. 'La llamada al segundo procedlmiento se
"14245. txt") efectua pasando los argumentos al
procedimiento
End Sub 'con los nombres de los archivos
necesarios para cada componente
Private Sub Picturel-MouseMove(Butt0n
As Integer, Shift As Integer, X As Call Coordenadas
Single, Y As Single) Call
' Muestra mensaje en la parte Inferior Componentes lnformacion ("pic15 .bmp",
de la pantalla el mensaje" "7414.txt")-
Label3.Caption = "Oprima sobre el
componente un click,para información" End Sub
End Sub
Private Sub Pi~turel2~MouseMove(Button
Private Sub Picturelo-Click0 As Integer, Shift As Integer, X As
' Este evento ejecuta los Single, Y As Single)
procedimientos necesarios para mostrar ' Muestra mensaje en la parte inferior
el grafico y la información de la pantalla el mensaje"
' textual de cada componentefisico del Label3.Caption = "Oprima sobre el
sistema 8088, componente un click, para información"
'La llamada al segundo procedimiento se End Sub
efectua pasando los argumentos al
procedimiento Private Sub Plcturel3-ClickO
'con los nombres de los archivos ' Este evento elecuta los
necesarios para cada componente procedimientos necesarios para mostrar
el grafico y la información
Call Coordenadas ' textual de cada componente fisico del
Call sistema 8088,
Componentes-informacion ("picl9.bmp", 'La llamada al segundo procedimiento se
"7404. txt") efectua pasando los argumentos al
procedimiento
End Sub 'con los nombres de los archivos
necesarios para cada componente
Private Sub Picturelo-MouseMove(Butt0n
As Integer, Shift As Integer, X As Call Coordenadas
Slngle, Y As Single) Call
' Muestra mensaje en laparte inferior Componentes informacion("pic2. bmp",
de la pantallael mensaje" "8push.txt"7
Label3.Caption = "Oprima sobre el
componente un cllck, para informaclón" End Sub
End Sub
Private Sub Picturel3~MouseMove(Button
Private Sub Picturell-Click0 As Integer, Shift As Integer, X As
' Este evento elecuta los Single, Y As Single)
procedimientos necesarlos para mostrar ' Muestia mensaje en laparte inferior
el grafico y la información de la pantalla el mensaje"
' textual de cada componentefislco del Label3.Caption = "Oprima sobre el
sistema 8088, componente un click,para información"
'La llamada al segundo procedimiento se End Sub
efectua pasando los argumentos al
procedimiento Private Sub Picturel4-Click0
'con los nombres de los archivos ' Este evento ejecuta los
necesarios para cada componente procedimientos necesarios para mostrar
el grafico y la información
Call Coordenadas

Alejandro Montejo Rubio 17


Simulador del Sistema Mínimo Intel 8088
Proyecto Terminal

' textual de cada componentefisico del Label3.Taption = "Oprima sobre el


sistema 8088, componente un click,para información"
'La llamada al segundo procedimiento se End Sub
efectua pasando los argumentos al
procedimiento Private Sub PictureZ-Click(Index As
'con los nombres de los archivos Integer)
necesarios para cada componente ' Este evento ejecuta los
procedimientos necesarios para mostrar
Call Coordenadas el grafico y la información
Call ' textual de cada componente fisico del
Componentes-informacion ("pic21. bmp", sistema 8088,
"resis. txt") 'La llamada al segundo procedimiento se
efectua pasando los argumentos al
End Sub procedimiento
'con los nombres de los archivos
Prlvate Sub Pi~turel4~MouseMove(Button necesarios para cada componente
As Integer, Shift As Integer, X As
Single, Y As Single) Call Coordenadas
' Muestra mensaje enla parte inferior Call
de la pantalla elmensaje" Componentes informacion ("pic3. bmp",
Label3.Captlon = "Oprima sobre el "2764.txt")-
componente un click,para información"
End Sub End Sub

Private Sub Picturel5-Click0 Private Sub Picture2-MouseMove(Index As


' Este evento ejecuta los Integer, Button As Integer, Shift As
procedimientos necesarios para mostrar Integer, X As Single, Y As Single)
el grafico y la información ' Muestra mensaje en la parte inferior
' textual de cada componentefisico del de la pantalla el mensaje"
sistema 8088, Label3.Caption = "Oprlma sobre el
'La llamada al segundo procedimiento se componente un click, para información"
efectua pasando los argumentos al End Sub
procedlmiento
'con los nombres de los archivos Private Sub P i ~ t u r e 3 ~ C l i c k O
necesarios para cada componente ' Este evento ejecuta l o s
procedimientos necesarios para mostrar
Call Coordenadas el grafico y la Información
Call ' textual de cada componente fisico del
Componentes-informacion ("picl6.brnp", sistema 8088,
"resis. txt") 'La llamada al segundo procedimiento se
efectua pasando l o s argumentos al
End Sub procedimiento
'con lo$ nombres de los archivos
Private Sub PicturelS~MouseMove(Button necesarios para cada componente
As Integer, Shift As Integer, X As
Single, Y As Single) Call Coordenadas
I Muestra mensaje en laparte inferior Call
de la pantalla el mensaje" Componentes-informacion ("pic8. bmp",
Label3.Caption = "Oprima sobre el "74373.txt")
componente un cllck, para información" End Sub
End Sub
Private Sub Picture3_MouseMove(Button
Private Sub P i c t ~ r e l G ~ C l i c k O As Integer, Shift A s Integer, XAs
' Este evento ejecuta los Slngle, Y As Single)
procedimientos necesariospara mostrar ' Muestra mensaje en la parte inferlor
el graflco y la información de la pantalla el mensaje"
' textual de cada componente fisico del Label3.Caption = "Oprima sobre el
sistema 8088, componente un click, para información"
'La llamada al segundo procedlmiento se End S u b
efectua pasando los argumentos al
procedimlento Private Sub P i c t ~ r e 4 ~ C l l c k O
'con los nombres de los archivos ' Este evento elecuta los
necesarios para cada componente procedimientos necesarios para mostrar
el yrzfico y la información
Call Coordenadas ' textual de cada componente fisico del
Call sistema 8088,
Componentes informacion ("pic12 .bmp", 'La llamada al segundo procedimiento se
"capa. txt") efectua pasando los argumentos al
procedimiento
End Sub 'con los nombres de los archivos
necesarios para cada componente
Private Sub PicturelG-MouseMove(Button
As Integer, Shift As Integer, X As Call Coordenadas
Single, Y As Single) Call
' Muestra mensaje en la parte inferior Componentes-informacion ("pic1 .bmp",
de la pantalla el mensaje" "7432. txt")

Alejandro Montejo Rubio


18
Simulador del Sistema Mínimo Intel 8088
Proyecto Terminal

End Sub 'La llamada al segundo procedimiento se


efectua pasando los argumentos al
procedimiento
Private Sub Picture4~MouseMove(Button 'con los nombres de los archlvos
As Integer, Shift As Integer, X As necesarios para cada componente
Single, Y As Single)
' Muestra mensaje enla parte inferior Call Coordenadas
de la pantallael mensaje" Call
Label3.Captlon = "Oprima sobre el Componentes-informacion ("pic5 .bmp",
componente un click,para información" "sn75188.txt")
End Sub
End Sub

Private Sub Pi~ture5~Click(Index As Private Sub Picture7~MouseMove(Button


Integer) As Integer, Shlft As Integer, X As
' Este evento ejecuta los Single, Y As Slngle)
procedimientos necesarios para mostrar ' Muestra mensaje en la parte inferior
el grafico y la información de la pantalla el mensaje"
' textual de cada componenteflsico del Label3.Caption = "Oprima sobre el
sistema 8088, componente un cli.ck, rara informaclón"
'La llamada al segundo procedimiento se End Su;.
efectua pasando los argumentos al
procedimiento Private Sub Picture8PClick0
'con los nombres de los archivos ' Este evento ejecuta los
necesarios para cada componente procedimientos necesarios para mostrar
el grafico y la información
Call Coordenadas ' textual de cada componente fisico del
Call sistema 8088,
Componentes informacion
("pic4.bmp", 'La llamada al segundo procedimiento se
"74121.txt") efectua pasando los argumentos al
procedimiento
End Sub 'con los nombres de los archivos
necesarios para cada componente
Private Sub Picture5-MouseMove(Index As
Integer, Button As Integer, Shift As Call Coordenadas
Integer, X As Single, Y As Single) Call
' Muestra mensaje en laparte inferior Componentes-informacion ("picll.bmp",
de la pantallael mensaje" "74138.txt")
Label3.Caption = "Oprima sobre el
componente un click, para información" End S u b
End Sub
Private Sub Pi~ture8~MouseMove(Button
Private Sub Picture6-Click0 As Integer, Shift As Integer, X As
' Este evento ejecuta los Single, Y As Single)
procedimientos necesarios para mostrar ' Muestra mensaje en la parte inferior
el grafico y la información de la pantalla el mensaje"
' textual de cada componentefisico del Label3.Caption = "Oprima sobre el
sistema 8088, componente un click, para información"
'La llamada al segundo procedimiento se End Sub
efectua pasando los argumentos al
procedlmiento Private Sub Picture9-Click0
'con los nombres de los archivos ' Este evento ejecuta los
necesarios para cada componente procedimientos necesarios para mostrar
el grafico y la información
Call Coordenadas ' textual de cada componente fislco del
Call slstema 8088,
Componentes-informacion ("piclo. bmp", 'La llamada al segundo procedimiento se
''7400.txt") efectua pasando los argumentos al
procedimiento
End Sub 'con los nombres de los archivos
necesarios para cada componente
Private Sub PictureG-MouseMove(Butt0n
As Integer, Shift As Integer, X As Call Coordenadas
Single, Y As Single) Call
' Muestra mensaje en laparte inferior Componentes informacion ("picl8.bmp",
de la pantalla el mensaje" "74138. txt"7
Label3.Caption = "Oprima sobre el
componente un click, para información" End Sub
End Sub
Private Sub Picture9MouseMove(Button
Private Sub P i ~ t u r e 7 ~ C l i c k O As Integer, Shift As Integer, X As
' Este evento ejecuta los Single, Y As Single)
procedimientos necesarios para mostrar ' Muestra mensaje en la parte inferior
el grafico y la información de la pantalla el mensaje"
' textual de cada componentefisico del Label3.Caption = "Oprima sobre el
sistema 8088, componente un click, para información"

Alejandro Montejo Rubio 19


Simulador del Sistema Mínimo I n t e l 8088
Proyecto Terminal

End Sub Case O To 9


DISPLAY.Text =
DISPLAY.Text + Chr(&H30 + Indexl
Private Sub Regresar-indicePClick() Case 10 To 15
Hide DISPLAY.Text =
Unload Form2 DISPLAY.Text + Chr(&H37 + Indexl
Portada.Show End Select
End Sub DlgitosHex = DigltosHex + 1
End If
Prlvate Sub Reset-Click0 End Sub
Dlm i
For i = 0 To 65535 Step 1
Memoria(i) = CLng("&h" + "00" 1 Public Sub
Next i Componentes lnformacion(picture As
DirecclonEditarl.Text = "0000: 0000" String, archlvo AS string)
CodigoOperacion = O ' este procedimiento se utiliza para
DirecclonEditar = &HO llamar los archivos *.bmp que tienen
End Sub información grafica de los
'componentes fisicos del sistema 8088,
Private Sub Reset-MouseMovelButton As los cuales son asignados al objeto
Integer, Shift As Integer, X As Single, COMPONENTE.picture;
Y As Single) ' Ademas de cargar al Objeto
' Muestra mensaje enla parte inferior form2.textl.text el archivo de texto de
de la pantalla el mensaje" información del componente
Label3.Caption = "Resetea la memoria" Set X = Loadpicture (App.Path + " \ " +
End Sub picture)
componente.picture = X
b$ = App.Path + " \ " + archivo
Private Sub Salir-Click0 Open b$ For Input As #1
End Texto$ = " "
End Sub Do While Not EOF(1)
Line Input #1, a$
Texto$ = Texto$ + a$ + ChrS (131
Private Sub SSCommandl-CllckO + ChrS(101
LOOP
End Sub Textl.Text = Texto$

Prlvate Sub S S P a n e l l " o u s e M o v e ( B u t t 0 n Close #1


As Integer, Shift As Integer, X As
Single, Y As Single) End Sub
' Muestra mensaje en la parte inferior Public Sub Coordenadas0
de la pantalla el mensaje" ' El objeto FRAME llamado Información
Label3.Caption = "Area de edición de conlunta a los objetos text1 y plcture
programas" , los cuales
End Sub ' n o s muestran la información textual y
grafica de cada componente fisico del
sistema.
Private S u b SSPanel2~MouseMove(Button ' Aqul se modifican l a s propiedades de
As Integer, Shift As Integer, X As coordenadas, para restaurar el objeto
Single, Y As Single) Información.
' Muestra mensaje enla parte inferior
de la pantalla el mensaje" 1nformaclon.Visible = True
Label3.Caption = "Area sin uso en 1nformacion.Height = 3495
ejecución" 1nformacion.Left = 960
End Sub 1nformacion.Top = 360
1nformacion.Width = 7695

Private Sub Tecla-Click(1ndex As End Sub


Integer)
' Este procedimiento muestra enel Private Sub TeclaMouseMove(1ndexAs
o b ~ e t odisplay el valor hexadecimal de Integer, Button As I ~ ~ c e g e rShift
, As
la tecla oprimlda Integer, X As Single, Y As Single)
' Muestra mensaje en la parte inferior
If DigitosHex = O Then DISPLAY.Text de la pantalla el mensale"
I , I,
~
Label3.Caption = "Teclas de ediclón
If DigitosHex = 2 Then numerica , hexadecimal"
DISPLAY.Text = End Sub
Rlght (DISPLAY. Text,11
DigitosHex = DigitosHex - 1 Private S u b Timerl-Timer0
End If Label6.Caption = Time
If DigitosHex < 2 Then Label7.Caption = Date
Select Case Index End Sub

Codigo Desensambla
VERSION 4.00 Begin VB.Form Desensamblador

Alejandro Montejo Rubio 20


Simulador del Sistema Minimo I n t e l 8088
Proyecto Terminal

Appearance -
- O 'Flat k = l
-
- &HOOFF0000& While Mid(Texto, k, 1) <>
BackColor " "

Caption - "Codigo And k < Len(Texto)


ensamblador" k = k + l
ClientHeight = 4965 Wend
-
- 1035 Texto = Mid(Texto, 1, k) + " "
ClientLeft
ClientTop - 1455 If Operacion(Memoria(indice +
Clientwidth -- 2535 segini)).ByteRegl Then
-
- O 'False Texto = Texto +
ControlBox
FillColor -
- &HOOFFFFFF& Registros(Memoria(indice + segini +
Fillstyle -- O 'Solid Tamaño))
Beginproperty Font Tamaño = Tamaño + 1
name = "MS Sans Operandol = True
Serif" End If
charset = o If Operacion(Memoria(indice +
weight = 700 segini)).OffHi Then
size = 9.75 If Operandol Then Texto =
underline = O 'False Texco + " , "
italic = O 'False Texto = Texto + " [ ' I

strikethrough = O 'False dux = Memoria(indice +


Endproperty segini + Tamaño)
FontTransparent = O 'False Texto = Texto + BlnHex(aux)
Forecolor -
-
&HOOFFFFOO& dux = Memoria(indice +
Height - 5655 seginl + Tamaño + 1)
HelpContextID = 4 Texto = Texto + BinHex(aux)
-
- 975 Texto = Texto + " I "
Left
LinkTopic - "Form3" Tamaño = Tamaño + 2
ScaleHeight - 20. 687 End If
ScaleMode -
- 4 'Character If Operacion(Memoria(indice +
Scalewidth -
-
21.125 segini)) . Dato8 Then
-
- 825 If Operandol Then Texto =
TOP
Width -
- 2655 Texto + ", "
Begin ~ ~ . V S c r o l l B aBarravertical
r aux = Memoria(indice +
Height = 4815 segini + Tamaño1
Largechange = 20 Texto = Texto + BinHex(aux)
Left = 6960 Tamaño = Tamaño + 1
Max = 1024 End If
TabIndex = o If Operacion(Memoria(ind1ce +
Top = o segin? ).DatoHi Then
Width = 240 If Operando1 Then Texto=
End Texto c 11 11

Begin VB.Menu Comandos aux = Memoria(1ndice +


Caption = "&Comandors" seginl + Tamaño)
Begin VB.Menu CambiarDireccion Texto = Texto + BinHex(aux1
Caption = "&Cambiar dux = Memoria(indice +
dlreccion de inicio" segini + Tamaño + 1)
End Texto = Texto + BinHex(aux)
Begin VB.MenuEjecutar Tamaño = Tamaño + 2
Caption - End If
"&Ejecutar" If Operacion(Memoria(indice +
End segini) ).ByteReg2 Then
Begin VB.Menu Borrar Texto = Texto +
Caption = "&Salir" Registros(Memoria(indice + segini +
End Tamaño) )
End Tamaño = Tamaño + 1
End End If
Attribute VB-Name = "Desensamblador" Operandol = False
Attribute VB-Creatable = False If indice < BarraVertlcal.Va1ue
Attrlbute VB-Exposed = False And Llnea = O Then CambioAtras = Tamaño
If indice >=
Public Sub PonCódigo(NumLineaAs BarraVeLtical.Value Then
Integer, segini As Long) If Linea = O Then
Llnea = O CambioAdelante = Tamaño
Dim dux As Long End If
indice = O Linea = Linea + 1
Tamaño = 1 Print Texto
End If
Operandol = False indice = indice + Tamaño
Desensamblador.Sca1eMode = 4 Tamaño = 1
Desensamblador.CurrentX = O Wend
Desensamblador.CurrentY = O End Sub
While indice < 1024 And Llnea <
NumLinea Private Sub BarraVertical_ChangeO
Texto = If banderaCambios Then
Operacion(Memoria(indice + banderacambios = False
segini)).mnemonico

Alejandro Montejo Rubio 2


Simuladordel Sistema Minimo I n t e l 8088
Proyecto Terminal

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

Código Historial Beginproperty Font IOBE35203-


8F91-llCE-9DE3-0OAAOl74BB851)
VERSION 4.00 ame N = '"S
Begin VB.Formhistorial Sans Serif"
Backcolor = &HOOCOCOCO& Size = 12
Caption = "Form3" Charset = o
ClientHeight = 4140 Weight = 400
ClientLeft = 1140 Underline = O 'False
ClientTop = 1515 Italic = O 'False
Clientwidth = 7305 Strikethrough = O 'False
ClipControls = O 'False Endproperty
ControlBox = O 'False Height = 420
Height = 4545 Left = 3720
Left = 1080 TabIndex = 1
LinkTopic = "Form3" TOP = 6360
ScaleHeight = 4140 Wldth = 1935
Scalewidth = 7305 End
TOP = 1170 Begin VB.PictureBox SSTabl
Width = 7425 Backcolor -
-
Windowstate = 2 'Maximized &H00808080&
Begin VB.PictureBox SSPanell Beginproperty Font (OBE35203-
Forecolor = &H00000000& 8F91-llCE-9DE3-00AAO04BB851)
Height = 6975 Name = "MSSerlf"
Sans
Left = 1440 Size -
ScaleHeight = 6915 -
-
Charset
Scalewidth = 9555 Weight -
-
TabIndex = o Underline -
- ' False
TOP = 600 Italic -
- ' False
Width = 9615 Strikethrough = ' False
Begin VB.CheckBox Check1 Endproperty
Caption = "Color ForeColor -
- FF0000&
Ambar" Height 735
Helght = 255 Left 600
Left = 840 ScaleHeight 675
TabIndex = 6 Scalewidth 8355
TOP = 6240 TabIndex 2
Width = 1215 TOP 840
End Width 8415
Begin VB.CommandButton Command3 End
Caption = "C&errar" Begin VB.PictureBox SSPanel2
Height = 4455

Alejandro Montejo Rubio 3


Simulador del Sistema Minimo Intel 8088
Proyecto Terminal

Left = 600 LOOP


ScaleHeight = 439s tEXT2.Text = Texto$
Scalewidth = 8355 Close #1
TabIndex = 4 End Sub
TOP = 1560
Width = 8415 Private Sub Checkl-Click0
Begin VB.TextBox Text2 If Checkl.Value = 1 Then
-
- tEXT2.BackColor = &HO&
BackColor
&HOOFF0000& tEXT2.ForeColor = &HFFOO&
Beginproperty Font Checkl.Caption = "Color Azul"
{OBE35203-8F91-llCE-9DE3-0OAAOO4BB851) Else
Name = "MS If Checkl.Value = O Then
Sans Serif" tEXT2,BackColor = &HFF0000
Size = 9.75 tEXT2.ForeColor = &HFFFFOO
Charset = o Checkl. Caption= "Color Ambar"

Weight = 400 End If


Underline = O 'False Ena If
Italic = 0 'False
Strikethrough = O 'False End Sub
Endproperty
Forecolor = &HOOFFFFOO& Private Sub Command3-Click0
Height = 3615 Hide
Left = 600 Unload historial
MultiLine = -1 'True Form2.Show
ScrollBars = 'Both
3 End Sub
TabIndex = 5
TOP = 480 Private Sub Form-Load ( )
Visible = O 'False tEXT2.Vlslble = True
Width = I455 Call llamarhistorial ("3000.TXT")
End End Sub
End
I Begin VB.Label Label10 Sub SSTabl-Click(Previ0usTab As
Alignment = 2 'Center Integer)
AutoSize = -1 'True tEXT2.Visible = False
Caption = "Familia tEXT2.Visible = True
Intel" Index = sstabl.Tab
Beginproperty Font (OBE35203-
8F91-1lCE-9DE3-00AAOO4BB8~~] Select Lase Index
Name = "MS Sans Serif" Case O
Size = 13.5 Call llamarhistorial ("3000.TXT")
Charset = o Case 1
Weight = 700 Call llamarhistorial ("4004. txt")
Underline = O 'False Case 2
Italic = O 'False Call llamarh~storial("4040. txt")
Strlkethrough = O 'False Case 3
Endproperty Call llamarhistorial ("8008. txt")
Height = 360 Case 4
Left = 3615 Call llamarhistorial ("8048. txt")
TabIndex = 3 Case 5
Top = 240 Call llamarhistorial(' "8080. txt")
Width = 1725 Case 6
End Call llamarhistorial( "8085.txt")
End Case 7
End Call llamarhistorial( "8086.txt")
Attribute VB-Name = "historial" Case 8
Attribute VB-Creatable = False C a l l llamarhlstorial( "80088.txt")
Attribute VB-Exposed = False Case 9
Sub llamarhistorial(archivoAs String) Call llamarhistorial( "80286.txt")
b$ = App.Path + " \ " + archivo Case ,O
Open b$ For Input As #1 Call llamarhistorial "80386. txt")
Texto$ = I"' End Select
Do While Not EOF(1) End Sub
Line Input #1, a$
Texto$ = Texto$ + a$ + ChrS(13) + Private Sub tEXT2-ChangeO
Chr$ ( 10) End Sub

2
Alejandro Montejo Rubio

S-ar putea să vă placă și