ruíz !y - 148.206.53.84148.206.53.84/tesiuami/uam5688.pdfmodos de direccionamiento ... el intel...

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

Upload: vuongdat

Post on 27-Mar-2018

216 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Ruíz !Y - 148.206.53.84148.206.53.84/tesiuami/UAM5688.pdfMODOS DE DIRECCIONAMIENTO ... El Intel 4004 es el primer microprocesador aparecido en el ... se almacenan en un stack de 4

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

Page 2: Ruíz !Y - 148.206.53.84148.206.53.84/tesiuami/UAM5688.pdfMODOS DE DIRECCIONAMIENTO ... El Intel 4004 es el primer microprocesador aparecido en el ... se almacenan en un stack de 4
Page 3: Ruíz !Y - 148.206.53.84148.206.53.84/tesiuami/UAM5688.pdfMODOS DE DIRECCIONAMIENTO ... El Intel 4004 es el primer microprocesador aparecido en el ... se almacenan en un stack de 4

AVISO.

El software que se describe en este manual está protegido por derechos de autor. Queda prohibida su fotocopia o reproducción, en cualquier forma, sin previa autorización por escrito del autor.

Los nombres de productos aquí mencionados pueden 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, el logotipo de Microsoft, MS-DOS, Microsoft Visual Basic, MicrosoR Power Point y Microsoft Word, son marcas registradas

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

Paintbrush es una marca de ZsoR Corporatión. Core1 Drow ver.7 es un producto registrado por Lotus Inc.

Page 4: Ruíz !Y - 148.206.53.84148.206.53.84/tesiuami/UAM5688.pdfMODOS DE DIRECCIONAMIENTO ... El Intel 4004 es el primer microprocesador aparecido en el ... se almacenan en un stack de 4

INTRODUCCION ................................................................................................................................. 1

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

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

RESEÑA DEL PROCESADOR INTEL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 INTEL 3000 .......................................................................................................................................... 4

INTEL 8008 .......................................................................................................................................... 5 INTEL 8048 (MCS-48) ......................................................................................................................... 5

INTEL 8086 .......................................................................................................................................... 7

INTEL 4004 .......................................................................................................................................... 4 INTEL 4040 .......................................................................................................................................... 4

INTEL 8080 .......................................................................................................................................... 6 INTEL 8085 .......................................................................................................................................... 6

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 DEL SISTEMA: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

PRESENTACI~N . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 PORTADA .... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

Alejandro Montejo Rubio

Page 5: Ruíz !Y - 148.206.53.84148.206.53.84/tesiuami/UAM5688.pdfMODOS DE DIRECCIONAMIENTO ... El Intel 4004 es el primer microprocesador aparecido en el ... se almacenan en un stack de 4

1

EDITOR ............................................................................................................................................ 29 COMPONENTES G ~ F I C O S . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 MENUS ............................................................................................................................................. 30 MICROAYUDA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 VENTANA DEL SIMUIADOR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 REGISTROS APUNTADORES E iNDlCES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

MODOS DE DIRECCIONAMIENTO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

EJEMPLOS DE APLICACIdN: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

INFORMACIóN TÉCNICA DEL FUNCIONAMIENTO INTERNO DEL SOFTWARE ....................... 49

INFORMACldN TÉCNICA DEL FUNCIONAMIENTO INTERNO DEL SOFTWARE (MANUAL TÉCNICO) ............. 50

REGISTROS DE SEGMENTO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

Registros Internos del Microprocesador ............................................................................................ 37

Carga de datos: ................................................................................................................................. 37

Arquitectura Interna BAsica del Sistema Mínimo 8088 ...................................................................... 50 Ciclo de Fetkh . (algoritmo llamado Siguiente-click, localizado en la forma 1 . frm) ............................. 50 PROCEDIMIENTO DE EDICIóN DE PROGRAMAS ............................................................................. 65

CONCLUSIONES .............................................................................................................................. 66

APENDICE ......................................................................................................................................... 67

Codigo Fuente ................................................................................................................................... 67

BlBLlOGRAFlA ................................................................................................................................ 123

Alejandro Montejo Rubio . .

Page 6: Ruíz !Y - 148.206.53.84148.206.53.84/tesiuami/UAM5688.pdfMODOS DE DIRECCIONAMIENTO ... El Intel 4004 es el primer microprocesador aparecido en el ... se almacenan en un stack de 4

Simulador del Sistema Mínimo Intel 8088 Proyecto Terminal

INTRODUCCI~N.

Alejandro Montejo Rubio 1

Page 7: Ruíz !Y - 148.206.53.84148.206.53.84/tesiuami/UAM5688.pdfMODOS DE DIRECCIONAMIENTO ... El Intel 4004 es el primer microprocesador aparecido en el ... se almacenan en un stack de 4

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 para el ser humano.

El microprocesador 8088 es predecesor de una gran familia, esto se da porqué actualmente está familia de microprocesadores es la más empleada comercialmente en el mundo. Por lo anterior es necesario que las nuevas generaciones de estudiantes relacionados con el desarrollo en computación a bajo nivel, cotlozcan el funcionamiento de esta familia. Se estudia al microprocesador 8088 porque conocido su funcionamiento, es fácil de aprender el funcionamiento de los demás elementos de esa familia.

La tecnología actual hace posible y necesario que el aprendizaje en el ámbito computacional se haga más eficiente, hacibndolo más dinhico, interesante y agradable. Para aprender 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 resultados, según las condiciones iniciales que se le proporcione. Est6 herramienta se le comce como simulador de rnicroprocesador.

Esté reporte se divide para su mejor comprensión en seis capitulas importantes:

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 que compete en este proyecto, mencionando induso los más recientes.

Arquileckrra del microprocesador, permitirá una comprensión más fácil al estudiante, dados sus esquemas y diagramas simplificando su esktdio y funciones atrgveZ del despliegue de cuadros de dialago con el fin de e>cplicar cada componente.

Funcionamiento del Simulador, mediante las principales operaciones 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 de la r e d i c i h del simulador.

Condusiones personales y el &digo del sistema. Conformado por el &diga fuente del simulador

Page 8: Ruíz !Y - 148.206.53.84148.206.53.84/tesiuami/UAM5688.pdfMODOS DE DIRECCIONAMIENTO ... El Intel 4004 es el primer microprocesador aparecido en el ... se almacenan en un stack de 4

c Simulador del Sistema Mínimo Intel 8088 Proyecto Terminal

Reseña histórica del microprocesador Intel

Alejandro Montejo Rubio 3

Page 9: Ruíz !Y - 148.206.53.84148.206.53.84/tesiuami/UAM5688.pdfMODOS DE DIRECCIONAMIENTO ... El Intel 4004 es el primer microprocesador aparecido en el ... se almacenan en un stack de 4

Simulador del Sistema Mínimo Intel 8088 Proyecto Terminal

RESENA DEL PROCESAUOR INTEL

INTEL 3000

La familia 3000 de INTEL constituye un procesador microprogramable constituido con elementos 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 hardware externo). E! chip que completa el procesadores el 3002, Elemento Procesador Central (CPE).Cada CPE contiene una unidad aritmética (ALU) de 2 bits, un registro de dirección de memoria, un acumulador y 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, y saltos condicionales hacia la próxima microinstrucción, y todo ello se ejecuta en un Único ciclo de 160 ns. 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 el primer microprocesador aparecido en el mercado y miembro de la familia MCS-4, conjunto microcornputador de 4 bits. La estructura de direccionado es tal que existe diferenciación entre programas y datos, tanto desde el punto de vista del medio de almacenamiento como del sistema de direccionado. El MCS-4 puede parecer a primera vista difícil de manejar dadas sus características, pero una 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-4 estén realizados en circuitos integrados dual-inline de 16 patillas; pero esto es causa de que el ciclo de 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 y por lo tanto el contador de programa es de 12 bits con lo cual la capacidad de direccionado es de 4 Kbits de 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 8008 fue 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 proporcionalidad entre 8008-8080 y 4004-4040. El 4040 sigue siendo un chip P-MOS de

Alejandro Montejo Rubio 4

Page 10: Ruíz !Y - 148.206.53.84148.206.53.84/tesiuami/UAM5688.pdfMODOS DE DIRECCIONAMIENTO ... El Intel 4004 es el primer microprocesador aparecido en el ... se almacenan en un stack de 4

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

SI NO Instrucciones Lógicas 24 16 Numero De Registros 8K 4K Espacio en ROM 24 Terminales 16 Terminales

Interrupciones NO SI Instrucciones HALT NO SI Stack De Dirección De Retorno 8* 12 4*'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 las bifurcaciones sigue siendo a través de registros de 12 bits, se han creado instrucciones especiales de bifurcación y de llamadas a rutinas entre bancos. Las interrupciones se manejan creando una llamada a subrutina a una dirección fija de 12 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 almacenan en un stack de 8 posiciones, con lo que se admiten hasta siete niveles de subrutina. Para que las interrupciones puedan ser atendidas conviene dejar siempre un nivel de chip de entrada y salida 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 un computador de 7 registros. Uno de ellos es el acumulador que es el registro por el cual pasan todas las instrucciones aritméticas y de entradalsalida. El 8008 no soporta instrucciones con direccionamiento directo de 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 significa que deben utilizarse por lo menos 3 instrucciones para cargar un dato de memoria en el acumulador. El encapsulado en 16 patillas obliga a que todos los datos y direcciones viajen por un Único bus bidireccional de 8 bits. Las direcciones, que son de 14 bits, necesitan dos ciclos consecutivos para ser enviadas hacia 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ón del 8008 es un modelo de sencillez. Cuando llega una petición de interrupción, el procesador acaba la instrucción en curso e inhibe la incrementación del contador de programa, pues emite una señal indicando que ha reconocido la interrupción y seguidamente procede a una fase normal de extracción de la próxima instrucción. Unos circuitos exteriores activados por la señal de interrupción reconocida fuerzan entonces en el bus de datos una instrucción, y esta instrucción externa, que generalmente es una llamada a rutina, queda intercalada en la secuencia del programa. El 8008 presenta un problema en el manejo de interrupciones. Cuando llega una interrupción es 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 parte ha beneficiado a la familia 8008 ya que el 8080 ha aparecido con varios chips periférico que son así mismo aplicables al 8008 y que simplifica notablemente 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 de entradalsalida

Alejandro Montejo Rubio 5

Page 11: Ruíz !Y - 148.206.53.84148.206.53.84/tesiuami/UAM5688.pdfMODOS DE DIRECCIONAMIENTO ... El Intel 4004 es el primer microprocesador aparecido en el ... se almacenan en un stack de 4

Simulador del Sistema Minimo Intel 8088 Proyecto Terminal

Temporizador/Contador programable de 8 bits

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 cambio la 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 que se desea ajustar exactamente la memoria del sistema a la memoria necesaria utilizando ROM externas. Los 8048/8748/8035 pueden utilizar lineas de entradalsalida como líneas de comunicación con elementos de memoria externos cuando se desea expandir la capacidad propia del chip. Para este fin hay una serie de dispositivos 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 las series 4000 u 8000. No obstante, el sistema de desarrollo MDS-800 dispone de software para aplicaciones al sistema 48, incluyendo editor ensamblador y monitor para puesta a punto de programas junto con un emulador en tiempo real del sistema con 8048 (ICE-48). El ultimo miembro de la familia MSC-48 es el 8049, es compatible pin a pin con los demás miembros de la familia y dispone de 2K 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 punto de vista de la programación es compatible con su predecesor su arquitectura es substancialmente 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 40 patillas en vez de 18, lo que permite disponer en paralelo los buses de datos y direcciones evitándose la necesidad de multiplexados; en segundo lugar, la utilización de la tecnologia N-MOS en vez 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ética decimal, saltos indirectos, operaciones sobre registros y datos de memoria de doble longitud. 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 con este microprocesador. Entre ellos se encuentran: RAM, ROM y PROM de diversas configuraciones y tamaños, driver de bus, circuitos de interface de aplicación personal, interface para comunicaciones, generador de reloj, etc.

INTEL 8085

Microprocesador de 8 bits con una estructura y conjunto de instrucciones 100% compatible con el 8080. Se trata de una versión mejorada del 8080, pero que participa básicamente de todas sus caracteristicas. Las ventajas que 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

Alimentación a una sola tensión ( 5 V en vez de 5.12 y -1 2 ). Generador de reloj incluido en el chip.

b) Mayor simplicidad de uso

Alejandro Montejo Rubio 6

Page 12: Ruíz !Y - 148.206.53.84148.206.53.84/tesiuami/UAM5688.pdfMODOS DE DIRECCIONAMIENTO ... El Intel 4004 es el primer microprocesador aparecido en el ... se almacenan en un stack de 4

Simulador del Sistema Minimo Intel 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éricos se emiten por el bus de datos codificados requiriéndose la utilización de un circuito auxiliar, 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 de la 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/S directamente 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 Con el uso de estos dispositivos puede realizarse un sistema completo con 3 chips (CPU 8085, memoria de

programa 8355, memoria de datos 81 55 y E/S en los anteriores 81 55 y 8355). Además del 8085 soporta toda la familia de productos del sistema 8080 (RAM, ROM, EPROM, circuitos de control de memoria y circuitos de control de 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 de direccionado del orden de los Mbytes. El 8086 tiene una longitud de palabra de 16 bits y una capacidad de 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 sistema y modo programa presentando algunas limitaciones para su utilización de ambientes mú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 de la ejecución de las instrucciones. Tal arquitectura tiene la ventaja de que permite 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 TEST para 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 8086 dispone de una amplia gama de circuitos adicionales que complementan la familia entre los que se puede destacar el 8089 que es un controlador de canal con acceso directo a memoria y que contiene una unidad central basada en el propio 8086 con instrucciones especializadas para la ejecución de programas de canal. 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 de Memorla

BUS-B

- uccioner de

Unldad Interface de BUS

Unidad de e)ecuc~ón y control del slstema

Unidad elecucl

I Yrl I YL I I BH I BL I

Alejandro Montejo Rubio 7 I

Page 13: Ruíz !Y - 148.206.53.84148.206.53.84/tesiuami/UAM5688.pdfMODOS DE DIRECCIONAMIENTO ... El Intel 4004 es el primer microprocesador aparecido en el ... se almacenan en un stack de 4

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 son idénticos, de modo que lo que se mencione acerca del primero aplica por igual al otro. El 8088 puede direccionar 220 bytes, numerados de manera consecutiva a partir 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 programa tiene un valor de 1 204, la siguiente instrucción será 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.

En forma similar, existen los registros de segmento de datos y segmento de pila, para tener acceso a dichos 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ún registro de segmento. Algunos compiladores limitan el código (las instrucciones) de los programas a 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 de 20 bits.

El 8088 tiene 14 registros, todos de 16 bits, pero cada uno diferente. En principio, AX se usa 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 que sólo usan A X .

BX se usa por lo general para almacenar apuntadores de memoria: CX para almacenar el contador en las 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.

Cada uno de estos registros de 16 bits consta de una mitad inferior y de una superior, las cuales se pueden 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 Rubio 8

Page 14: Ruíz !Y - 148.206.53.84148.206.53.84/tesiuami/UAM5688.pdfMODOS DE DIRECCIONAMIENTO ... El Intel 4004 es el primer microprocesador aparecido en el ... se almacenan en un stack de 4

Simulador del Sistema Mínimo Inte 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).

A continuación, vienen los cuatro registros de segmento descritos con anterioridad, seguidos del contador de 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 poco lo 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 siguiente significado: el bit R determina la dirección en las operaciones de cadena; 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 de O 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 mayor parte de las instrucciones tienen una variedad de codificaciones, dependiendo de la naturaleza de los operandos.

Los campos src son orígenes o fuente de información y no se modifican; en contraste, los campos dst son destinos y por lo general las instrucciones modifican su contenido. Existen reglas acerca de que se puede ser 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 instrucciones tienen dos variantes, una que opera en palabras de 16 bits y otra que opera en bytes de 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 datos alrededor de la máquina, entre los registros, la memoria y la pila. El segundo grupo hace operaciones 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 decimal para 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 siguientes dos grupos se refieren a verificaciones y comparaciones y a los saltos independientes de los resultados de éstas. Los resultados de las comparaciones se almacenan en los diferentes bits del registro de 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 Rubio 9

I

Page 15: Ruíz !Y - 148.206.53.84148.206.53.84/tesiuami/UAM5688.pdfMODOS DE DIRECCIONAMIENTO ... El Intel 4004 es el primer microprocesador aparecido en el ... se almacenan en un stack de 4

Simulador del Sistema Mínimo Intel 8088 Proyecto Terminal

El 8088 tiene algunas instrucciones para cargar, almacenar, mover, comparar y examinar cadenas de caracteres o palabras. Estas, pueden tener como prefijo un byte especial llamado REP, el cual hace que la instrucción se repita hasta alcanzar una determinada condición, como en el registro CX que sé decrementa después de cada iteración, hasta llegar a O. En esta forma, bloques arbitrarios de datos se pueden mover, comparar, etc.

HLDA I T T T T * CLK RST READ, 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. Cada uno de estos prefijos es un byte especial que puede preceder a la mayoría de las instrucciones. REP ocasiona que la instrucción que le sigue se repita, como se mencionó con anterioridad; LOCK reserva el bus para la instrucción completa, para permitir la sincronización de multiprocesos. Otros prefijos se usan para forzar a una instrucción a que extraiga su operando de la pila o del segmento extra, en vez de hacerlo del segmento de datos.

En el nivel de máquina convencional, el procesador 80286 es muy parecido al 8088. Para facilitar que los programas del 8088 corrieran en el 80286, Intel equipó a la pastilla con dos modos de operación. En el modo de direccionamiento real (normalmente denominado modo real), el 80286 pretende ser un 8088 y hace (casi) todo lo que un 8088 hubiera efectuado. En el modo protegido de direccionamiento virtual (usualmente denominado modo protegido), ofrece algunas características que no existen en el 8088.

En ambos modos, el 80286 tiene los mismos 14 registros, los cuales tienen la misma longitud y realizan las mismas funciones que en el 8088. Además, todas las instrucciones trabajan en el 80286, en las dos modalidades y tienen la misma semántica con excepción de unos cuantos casos. Las unicas diferencias se encuentran en las 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 valor salvado. Esta diferencia se debe a cambios en el microcódigo. En general, casi todos los programas "bien comportados" en el 8088 correrán sin necesidad de modificaciones en el 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. En modo real, de 80286 al igual que el 8088 tiene un espacio lineal de direcciones de 1M. En modo protegido, tiene 16 384 segmentos, cada uno hasta de 64K bytes de largo. Durante el diseño del 80286 surgió la cuestión de cómo permitir que los programas usaran esta memoria adicional sin modificar la máquina de manera radical.

Alejandro Montejo Rubio 10

Page 16: Ruíz !Y - 148.206.53.84148.206.53.84/tesiuami/UAM5688.pdfMODOS DE DIRECCIONAMIENTO ... El Intel 4004 es el primer microprocesador aparecido en el ... se almacenan en un stack de 4

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 segmento de datos se 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.

En modo protegido, el 80286 tiene también otras diferencias con respecto al 8088. El uso de la palabra "protegido" en el nombre de la modalidad sugiere que proporciona cierta protección. Esta observación es correcta; es posible inicializar las tablas de segmento de tal forma que cuando se utilice el 80286 para un sistema de 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 primera vuelta. La mayoría de estas instrucciones hacen posible realizar operaciones claves con 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 permiten en qué instrucciones. Por ejemplo, la instrucción PUSH puede ahora tener 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 y DI en ese orden, 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 manejar la 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 que el mismo trabajo se puede realizar con una secuencia de instrucciones del 8088, aunque en forma más lenta.

Por último, las instrucciones VERR y VERW se refieren a los procesos de segmentación del 80286. Estas permiten que un programa mida el terreno antes de entrar en él. Un programa puede evitar caer en un error de 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 memoria consistente de muchos segmentos de 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 del 8088.

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 el sistema operativo, las cuales pueden emular (simular) dichas instrucciones. Como resultado, es posible tener ejecutando al mismo tiempo varios programas del 8088, cada uno protegido de los otros. y el sistema operativo protegido de todos ellos.

Alejandro Montejo Rubio 11

Page 17: Ruíz !Y - 148.206.53.84148.206.53.84/tesiuami/UAM5688.pdfMODOS DE DIRECCIONAMIENTO ... El Intel 4004 es el primer microprocesador aparecido en el ... se almacenan en un stack de 4

Simulador del Sistema Mínimo Inte l 8088 Proyecto Terminal

Muchas de las computadoras basadas en el procesador 80386 utilizan UNlX como su sistema operativo nativo y proporcionan múltiples ventanas a los usuarios. En una o más de estas ventanas, el usuario puede ejecutar viejos programas en MS-DOS. Este truco se logra haciendo que UNlX cambie al modo virtual antes de 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 correr en 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 compatibilidad con los programas del 80286 que manejan segmentos de dicha longitud. Este logro, en apariencia imposible, se alcanzó de una manera muy habilidosa. Tanto el 80286 como el 80386 utilizan selectores en sus registros de segmento. En esencia, cada selector es sólo un índice dentro de las dos tablas de 8K de descriptores de 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 segmentos de 32 bits, la dirección máxima es 4G (232 bytes, cerca de 4 mil millones), y todas las operaciones que manipulan palabras lo hacen en 32 bits. También es posible ignorar estos 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.

Como resultado de esta arquitectura, un programa en el 80386 puede direccionar un máximo de 16 384 segmentos de hasta 4G cada uno, para un espacio 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, pertenecen al 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, datos y pila en cada momento, al igual que sucede en el 8088. También como en el 8088, existe un registro de segmento extra, para hacer posible el acceso temporal a otro segmento. En el 80386 se incluyen dos registros de 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 palabra a AX/EAX, la moverá a EAX, a menos que un 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 nuevo conjunto de posibilidades (modos) de direccionamiento. Estos incluyen formas eficientes de accesar 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 pila o en alguna otra parte.

La incorporación de los registros de segmento FS y GS, requirió de dos nuevos prefijos para especificar la siguiente instrucción que utilizarán, en lugar del segmento que normalmente se utiliza (DS). Además se agregaron 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 último punto es la presencia de unas cuantas instrucciones nuevas para verificación de bits, conversión de 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 Rubio 12

Page 18: Ruíz !Y - 148.206.53.84148.206.53.84/tesiuami/UAM5688.pdfMODOS DE DIRECCIONAMIENTO ... El Intel 4004 es el primer microprocesador aparecido en el ... se almacenan en un stack de 4

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

Page 19: Ruíz !Y - 148.206.53.84148.206.53.84/tesiuami/UAM5688.pdfMODOS DE DIRECCIONAMIENTO ... El Intel 4004 es el primer microprocesador aparecido en el ... se almacenan en un stack de 4

Simulador d e l Sistema Minim Intel 8088 Proyedo Teminal

Arquitectura del microprocesador Intel 8088

Page 20: Ruíz !Y - 148.206.53.84148.206.53.84/tesiuami/UAM5688.pdfMODOS DE DIRECCIONAMIENTO ... El Intel 4004 es el primer microprocesador aparecido en el ... se almacenan en un stack de 4

Simulador del Sistema Mínimo Inte l 8088 Proyecto Terminal

(ARQUITECTURA BASCA DEL MICROPROCESADOR 8088)

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

Microprocesador

Ocupado 1 Ocioso I Ocupado I Ocupado 1 Ocioso I Ocupado I 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 de entraddsalida (E/S) para los dispositivos de 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 lectura o de escritura .

Canal de dirección (20 bits) S A, f) A,, Sistema 8088 Do D, t Canal de datos ( 8 bits) 3

Canal de control 3 RD, WR IO/M

A memoria y EIS

1 I I

1 Alejandro Montejo Rubio 15

Page 21: Ruíz !Y - 148.206.53.84148.206.53.84/tesiuami/UAM5688.pdfMODOS DE DIRECCIONAMIENTO ... El Intel 4004 es el primer microprocesador aparecido en el ... se almacenan en un stack de 4

I

Simulador del Sistema Mínimo Intel 8088 Proyecto Terminal

El ancho del canal de datos determina cuantos bytes se transfieren a la vez entre el microprocesador y la memoria, y el ancho de canal de direcciones determina cuanta memoria puede dirrecionar el microprocesador.

LA MEMORIA Y EL MICROPROCESADOR

El espacio de direccionamiento de un sistema basado en un microprocesador, se denomina memoria lógica o memoria fisica. La memoria lógica es el sistema de memoria tal y como lo veo un programador, mientras que 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 microprocesador Intel 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 de bites de memoria disponible en este sistema

Cuando este microprocesador dirreciona una palabra de 16 bits en la memoria, se accesan 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 Rubio 16

Page 22: Ruíz !Y - 148.206.53.84148.206.53.84/tesiuami/UAM5688.pdfMODOS DE DIRECCIONAMIENTO ... El Intel 4004 es el primer microprocesador aparecido en el ... se almacenan en un stack de 4

Simulador del Sistema Minimo Inte l 8088 Proyecto Terminal

bits AH AX

bits

BL BH BX AL

I cx I CH I CL I I

DX DL DH SP BP DI SI

IP

DS ES SS

Acumulador Índice base Contador

Datos Apuntador a pila Apuntador a base

Índice destino Índice fuente

Apuntador de instrucciones

Banderas Segmento de código Segmento de datos

Segmento extra

Registros de microprocesador 8088

El arreglo de registros internos del microprocesador esta dividido en tres grupos: registros de 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 registros de uso general se pueden direccionar en el 8088 como registros 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, Contador y 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 conteo de ciertas instrucciones para corrimientos (CL) y rotaciones del numero 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 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

Estos registros son también de uso general , pero se utilizan más a menudo para apuntar a la localidad de la memoria que contiene los datos del operando de muchas instrucciones.

Alejandro Montejo Rubio 17

Page 23: Ruíz !Y - 148.206.53.84148.206.53.84/tesiuami/UAM5688.pdfMODOS DE DIRECCIONAMIENTO ... El Intel 4004 es el primer microprocesador aparecido en el ... se almacenan en un stack de 4

Simulador del Sistema Mínimo Intel 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 de uso 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 con las instrucciones de cadenas o arreglos.

DI (Índice de datos): Se emplea para dirrecionar datos destino en forma indirecta para utilizarlos con las instrucciones de cadenas o arreglos.

IP ( Apuntador de instrucciones ): Se utidza siempre para dirrecionar 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 ).

Registros de segmento

Los registros de segmento, generan direcciones en la memoria junto con otros 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. El registro 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 64 K bytes. segmento de código esta limitado en el 8088 a una longitud de 64 Kbytes.

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 (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 también dirreciona los datos que hay dentro del segmento de pila.

DIRECCIONAMIENTO DEL 8088

El microprocesador 8088, funciona en modo real. El funcionamiento en modo real permite que el microprocesador sólo direcciones al primer lMbyte de espacio en la 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 inicial de cualquier segmento de memoria de 64K 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 esquema de dirrecionamiento de segmento más desplazamiento selecciona una localidad en la memoria.

Alejandro Montejo Rubio 18

Page 24: Ruíz !Y - 148.206.53.84148.206.53.84/tesiuami/UAM5688.pdfMODOS DE DIRECCIONAMIENTO ... El Intel 4004 es el primer microprocesador aparecido en el ... se almacenan en un stack de 4

Simulador del Sistema Minimo Intel 8088 Proyecto Terminal

Memoria en modo real

En la figura anterior se muestra un segmento de memoria de empieza en 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 1 FOOOH 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

Alejandro Montejo Rubio

cs IP SS SP 6 BP DS BX, DI, SI o un numero de 16 bits ES DI para instrucciones de cadena

19

Page 25: Ruíz !Y - 148.206.53.84148.206.53.84/tesiuami/UAM5688.pdfMODOS DE DIRECCIONAMIENTO ... El Intel 4004 es el primer microprocesador aparecido en el ... se almacenan en un stack de 4

Simulador del Sistema Minimo Intel 8088 Proyecto Terminal

El microprocesador 8088 permite tener cuatro segmentos de memoria; Se debe de 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 1 FFFF

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

Alejandro Montejo Rubio

Segmento de pila

Segmento de Datos

- It! Segmento de Código

20

Page 26: Ruíz !Y - 148.206.53.84148.206.53.84/tesiuami/UAM5688.pdfMODOS DE DIRECCIONAMIENTO ... El Intel 4004 es el primer microprocesador aparecido en el ... se almacenan en un stack de 4

Simulador del Sistema Minimo Inte 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 instrucciones para el 8088 incluye instrucciones para la transferencia de datos que transfieren bytes, y palabras, de datos entre la memoria y los registros del microprocesador.

Aritméticas.

El 8088 puede sumar, restar y multiplicar y dividir 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 Rubio 21

Page 27: Ruíz !Y - 148.206.53.84148.206.53.84/tesiuami/UAM5688.pdfMODOS DE DIRECCIONAMIENTO ... El Intel 4004 es el primer microprocesador aparecido en el ... se almacenan en un stack de 4

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

Page 28: Ruíz !Y - 148.206.53.84148.206.53.84/tesiuami/UAM5688.pdfMODOS DE DIRECCIONAMIENTO ... El Intel 4004 es el primer microprocesador aparecido en el ... se almacenan en un stack de 4

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

Salva las palabras en la pila PUSH

Carga byte, palabra POP Recupera una palabra de la pila

Aritméticas ADD

CMP

Suma datos entre registros o la memoria y otro

Decrementa DEC Compara datos

registro

DIV División con signo IDIV División sin signo

IMUL

Resta datos entre los registros y la memoria u otro SUB Multiplica con signo MUL

Incrementa INC Multiplicación con signo

registro Manipulación de Bits

AND Invertir (comdemento a uno) NOT

Y ( AND) lógica

I OR I O lógica Instrucciones de

Cadenas CMPS ComDaración entre memoria v memoria LODS

Mover de memoria a memoria MOVS Cargar el acumulador

SCAS Almacenar en el acumulador STOS

Comparación entre la memoria y el acumulador

Transferencia de programa

CALL Llama a un mocedimiento

I JMP CERCANO Salta a otra parte del programa dentro del mismo segmento

JMP LEJANO I Salta a otra parte del programa en otro segmento LOOP I ReDite ciclo CX veces

I RET I Retorna de un procedimiento

Alejandro Montejo Rubio 22

Page 29: Ruíz !Y - 148.206.53.84148.206.53.84/tesiuami/UAM5688.pdfMODOS DE DIRECCIONAMIENTO ... El Intel 4004 es el primer microprocesador aparecido en el ... se almacenan en un stack de 4

Simulador del Sistema Minimo Intel 8088 Proyecto Terminal

Funcionamiento del Simulador.

1 Alejandro Montejo Rubio 23 I

Page 30: Ruíz !Y - 148.206.53.84148.206.53.84/tesiuami/UAM5688.pdfMODOS DE DIRECCIONAMIENTO ... El Intel 4004 es el primer microprocesador aparecido en el ... se almacenan en un stack de 4

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 )

0 Realizar una herramienta útil y didáctica para el aprendizaje en la utilización y sin requerirlo físicamente.

manipulación de las instrucciones 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 esto la enseñanza en nuestro país implemento los planes y programas para desarrollar el estudio y aprendizaje de dicha ciencia; Por lo cual dicho desarrollo ha llevado a la docencia a tomar acciones de enseñanza, las cuales se han visto un poco limitadas ya que no existen programas computacionales que faciliten la practica directamente en una computadora de los temas planeados de acuerdo a los planes de estudios. Es por ello que en la actualidad el desarrollo de 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 labores de programación en el sistema hexadecimal, utilizando las principales instrucciones que 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 adecuada explotación del sistema mínimo (Intel 8088), asi como de poder proporcionar una herramienta de aprendizaje y experimentación para los alumnos con materias enfocadas a la lngenieria en Electrónica o áreas afines.

DESCRIPCION DEL SISTEMA:

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

El simulador está formado por todas las partes físicas (circuitos integrados) del sistema mínimo, como son la memoria, el microprocesador> bus de datos, un teclado, 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ínimos del Sistema El equipo mínimo necesario para ejecutar este programa es el siguiente:

Alejandro Montejo Rubio 24

Page 31: Ruíz !Y - 148.206.53.84148.206.53.84/tesiuami/UAM5688.pdfMODOS DE DIRECCIONAMIENTO ... El Intel 4004 es el primer microprocesador aparecido en el ... se almacenan en un stack de 4

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)

So f tware

1 .- Windows 3.xx (en adelante) 2.- Discos de instalación (incluido). 3.- A r c h i v o de ejemplos incluido).

b) Instalación

A cont inuación, se expl icará paso a paso, como instalar, accesar y uti l izar el programa, as í como una descr ipc ión de su func ionamiento y su ayuda escr i ta.

Comenzando desde las especi f icaciones ya señaladas con anter ior idad, (Requisi to ind ispensab le : con tar con Windows 3 . * ) , primero se deberá ingresar en Windows:

Abocando solo dos casos de instalación, para Windows 3.1 1 y para Windows 95.

* WIN 3.1 1

Uti l izando el ratón ( recomendable) se tendrá que escoger (dando doble c l ick al bo tón izquierdo del ratón)

e l icono o archivo de “Principal”, posteriormente se deberá seleccionar e l icono l lamado “Administrador de archivos”, aquí se desplegara una ventana, en donde se tiene que especi f icar la un idad en la cual 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 la unidad de disco asignada, Seleccionar “Archivo”, y después “Ejecutar” .

*Nota* (cabe hacer mención que como casi ya es de dominio general, Windows brinda hasta tres opciones diferentes de realizar una selección u opción (Por medio de las barras de menús, las llamadas rápidas que se realizan con la letra subrayada y simultáneamente la tecla ALT y los iconos). Para nuestro caso nos abocaremos a la utilización de iconos en la mayoría de los casos. Estas opciones también se aplican para la nueva versión de Windows 95 e inclusive en esta versión existen mas opciones de Ejecución.

Otra opc ión es que en el momento de seleccionar e l archivo “Setup.exe” , se presione dos veces el botón izquierdo del ratón. Esto, automáticamente ejecutará e l programa de instalación seleccionado. Posteriormente aparecerá una ventana que pedirá la confirmación de la e jecución del s istema ( t iene que marcar “Aceptar” 1. En breve aparecerá una ventana indicando la ejecución de SETUP:EXE. La pantal la de instalación del Simulador del sistema mín imo 8088 solici tará al usuario especif ique si el archivo y/o la ruta son correctos ( solo pres ione Cont inuar 1.

* Win95.

Una vez accesado Windows ir al botón de in ic io s i tuado en la barra de herramientas si tuado (por lo general) en la parte infer ior izquierda de la pantal la

Alejandro Montejo Rubio 25

Page 32: Ruíz !Y - 148.206.53.84148.206.53.84/tesiuami/UAM5688.pdfMODOS DE DIRECCIONAMIENTO ... El Intel 4004 es el primer microprocesador aparecido en el ... se almacenan en un stack de 4

Simulador del Sistema Minimo Intel 8088 Proyecto Terminal

Figura 1 A continuación se abrirá una ventana mostrando los elementos del escritorio, seleccione "Ejecutar"

Figura 2 Figura 3

En las figuras anteriores se muestra paso a paso el procedimiento a realizar para la ejecución del programa, 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 en el ratón para ejecutar el sistema.

Por medio del presente Manual se pretende dar al Usuario un bosquejo de lo que el sistema puede realizar.

Alejandro Montejo Rubio 26

Page 33: Ruíz !Y - 148.206.53.84148.206.53.84/tesiuami/UAM5688.pdfMODOS DE DIRECCIONAMIENTO ... El Intel 4004 es el primer microprocesador aparecido en el ... se almacenan en un stack de 4

Simulador del Sistema Mínimo Intel 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, una breve explicación de lo que realiza cada uno de los botones y funciones con los que cuentan dichas 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 Rubio 27

Page 34: Ruíz !Y - 148.206.53.84148.206.53.84/tesiuami/UAM5688.pdfMODOS DE DIRECCIONAMIENTO ... El Intel 4004 es el primer microprocesador aparecido en el ... se almacenan en un stack de 4

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 Componentes Gráficos 0 Menús 0 Microavuda

Alejandro Montejo Rubio 28

Page 35: Ruíz !Y - 148.206.53.84148.206.53.84/tesiuami/UAM5688.pdfMODOS DE DIRECCIONAMIENTO ... El Intel 4004 es el primer microprocesador aparecido en el ... se almacenan en un stack de 4

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

Page 36: Ruíz !Y - 148.206.53.84148.206.53.84/tesiuami/UAM5688.pdfMODOS DE DIRECCIONAMIENTO ... El Intel 4004 es el primer microprocesador aparecido en el ... se almacenan en un stack de 4

Simulador del Sistema Mínimo Intel 8088 Proyecto Terminal

Componentes Gráficos

Al hacer un clic sobre cualquier componente gráfico se abre una ventana la cual muestra un zoom del componente y muestra información técnica del mismo relevante, as¡ como su uso más común en la 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 +

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

A, este menú cuenta con cuatro subménus que son:

memoria.

Alejandro Montejo Rubio 30

Page 37: Ruíz !Y - 148.206.53.84148.206.53.84/tesiuami/UAM5688.pdfMODOS DE DIRECCIONAMIENTO ... El Intel 4004 es el primer microprocesador aparecido en el ... se almacenan en un stack de 4

Simulador del Sistema Minimo Inte l 8088 Proyecto Terminal

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

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

podemos cambiar el desplazamiento, dentro del segmento de código para editar 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): Muestra una ventana con el código en lenguaje ensamblador

m Historial (CTRL + H): Muestra una breve reseña histórica de la familia Intel. Con dos modos de Dresentación de colores para su mejor visualización.

de Portada

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

Page 38: Ruíz !Y - 148.206.53.84148.206.53.84/tesiuami/UAM5688.pdfMODOS DE DIRECCIONAMIENTO ... El Intel 4004 es el primer microprocesador aparecido en el ... se almacenan en un stack de 4

Simulador del Sistema Mínimo Intel 8088 Proyecto Terminal

0 La caja de texto que se encuentra del lado derecho de la etiqueta anterior nos muestra el porcentaje de archivo que se ha cargado en memoria.

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. 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 mientras desea seguir editando, en caso contrario su programa editado se guardara 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 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 de esté 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

Page 39: Ruíz !Y - 148.206.53.84148.206.53.84/tesiuami/UAM5688.pdfMODOS DE DIRECCIONAMIENTO ... El Intel 4004 es el primer microprocesador aparecido en el ... se almacenan en un stack de 4

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.

Los registros de uso general se pueden direccionar en el 8088 como registros de 1 6 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, Contador y 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 conteo de ciertas instrucciones para corrimientos (CL) y rotaciones del nú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 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

Estos registros son también de uso general , pero se utilizan mds a menudo para apuntar a la localidad 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 en forma indirecta para utilizarlos con las instrucciones de cadenas o arreglos.

DI (indice de datos): Se emplea para direccionar datos destino en forma indirecta para utilizarlos con las instrucciones de cadenas o arreglos.

IP ( Apuntador de instrucciones 1: Se utiliza siempre para direccionar a la siguiente instrucción que va a ejecutar el microprocesador. Para formar la localidad real de la siguiente instrucción se suma el contenido de IP con CS (por) 10H. Cabe señalar que se puede realizar direccionamiento indirecto de datos por medio de estos registros excepto con el apuntador a instrucción ( IP 1.

Registros de segmento

Los registros de segmento, generan direcciones en la memoria junto con otros registros.

CS ( código 1: El segmento de código es una porción de la memoria que tiene los programas y procedimientos utilizados por los programas. El registro de segmento de código define la dirección inicial de la sección de memoria que tiene el c6digo. En modo real , define el inicio de una sección de 64 K bytes. segmento de código esta limitado en el 8088 a una longitud de 6 4 Kbytes. Definido en el segmento 0000.

Alejandro Montejo Rubio 33

Page 40: Ruíz !Y - 148.206.53.84148.206.53.84/tesiuami/UAM5688.pdfMODOS DE DIRECCIONAMIENTO ... El Intel 4004 es el primer microprocesador aparecido en el ... se almacenan en un stack de 4

Simulador del Sistema Minimo Intel 8088 Proyecto Terminal

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 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(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 segmento 0800.

Todos estos registros de segmento pueden direccionar hasta 1024 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 operando forma parte de la instrucción; normalmente se sitúa a 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.

dispositivos de E/S conectados en el sistema.

dependiendo del valor que las cajas de segmento y 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 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".

0 Bus de datos : El canal transfiere éstos entre el microprocesador y la memoria y los

0 Mapa Gráfico de la memoria : Muestra los valores internos de la memoria,

0 Botones de Control : Estos se encuentran etiquetados con los siguientes Rótulos : Reset : Inicializa los registros internos a cero, exceptuando los registros de

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

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.

-

segmentos

por el valor de la caja de intervalo, activada por la caja Atiempo.

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 de abrir un archivo que se haya editado

previamente

Alejandro Montejo Rubio 34

Page 41: Ruíz !Y - 148.206.53.84148.206.53.84/tesiuami/UAM5688.pdfMODOS DE DIRECCIONAMIENTO ... El Intel 4004 es el primer microprocesador aparecido en el ... se almacenan en un stack de 4

Simulador del Sistema Mínimo Intel 8088 Proyecto Terminal

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

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

Cada vez que Ud. ejecute el comando de abrir un nuevo archivo deberá de actualizar la Dirección a Editar

Alejandro Montejo Rubio 35

Page 42: Ruíz !Y - 148.206.53.84148.206.53.84/tesiuami/UAM5688.pdfMODOS DE DIRECCIONAMIENTO ... El Intel 4004 es el primer microprocesador aparecido en el ... se almacenan en un stack de 4

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

Page 43: Ruíz !Y - 148.206.53.84148.206.53.84/tesiuami/UAM5688.pdfMODOS DE DIRECCIONAMIENTO ... El Intel 4004 es el primer microprocesador aparecido en el ... se almacenan en un stack de 4

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

Page 44: Ruíz !Y - 148.206.53.84148.206.53.84/tesiuami/UAM5688.pdfMODOS DE DIRECCIONAMIENTO ... El Intel 4004 es el primer microprocesador aparecido en el ... se almacenan en un stack de 4

Simulador del Sistema Mínimo Intel 8088 Proyecto Terminal

ARCHIVO:CARGA2,MEM Se le asignara un valor doble a memoria

MOV DI 00022h I Inmediato I 03 I OD I O 0 I 22

ARCHIVO: CARGA3.MEM

ARCHIVO: CARGA4.MEM

INS I REG I REG 11 o9 Reaistro 02 MOV BX DS 12 08 02 Registro MOV Ax cs

C.reg C.reg C.ins Direccionamiento

Reaistro I 02 I MOV SI BX

nc OD 02 Reaistro MOV DI SI o9 oc 02 Registro MOV SI BX 08 OA 02 Registro MOV DI Ax OE O B 02 Registro MOV DX BP 08 o9 02 Registro MOV BX Ax o9 oc 02 Registro

Alejandro Montejo Rubio 38

Page 45: Ruíz !Y - 148.206.53.84148.206.53.84/tesiuami/UAM5688.pdfMODOS DE DIRECCIONAMIENTO ... El Intel 4004 es el primer microprocesador aparecido en el ... se almacenan en un stack de 4

Simulador del Sistema Mínimo Intel 8088 Proyecto Terminal

ARCHIVO: CARGA5.MEM

INS Ofsset

12 O 0 04 Directo MOV 0012h AH Lo Hi DS 8 bits C.reg Ofsset

01

dirección I REG C.ins Direccionamiento

&

MOV 1254h AL DD I 02 5F 04 Directo MOV 5FDDh BL 54 I O 0 12 04 Directo

~

MOV 2365h BH

01 FF AD 04 Directo MOV ADFF AH 05 AA 12 04 Directo MOV 12AAh CH 03 65 23 04 Directo "

MOV FD89 BL

04 36 12 04 Directo MOV 1236h CL 07 64 23 04 Directo MOV 2364 DH 05 32 56 04 Directo MOV 5632 CH 02 89 FD 04 Directo

ARCHIVO: CARGA6.MEM

INS Ofsset

12 O 0 04 Directo MOV 0012h Ax Lo Hi DS 16 bits C.reg Ofsset

08

dirección I REG C.ins Direccionamiento

ARCHIVO: CARGA7.MEM

Alejandro Montejo Rubio 39

Page 46: Ruíz !Y - 148.206.53.84148.206.53.84/tesiuami/UAM5688.pdfMODOS DE DIRECCIONAMIENTO ... El Intel 4004 es el primer microprocesador aparecido en el ... se almacenan en un stack de 4

Simulador del Sistema Mínimo Intel 8088 Proyecto Terminal

ARCHIVO: CARGA8.MEM

Reg INS I bits [ Dirm

C.reg C.ins Direccionamiento Hi MOV AX 0012h

63 52 OC 05 Directo MOV SI 5263h DD 5F OA 05 Directo MOV cx 5FDDh 54 12 O9 05 Directo MOV BX 1254h 12 O 0 08 05 Directo

Ofsset Ofsset DS Lo

I

MOV DI 1245h

33 56 O9 05 Directo MOV BX 5633h 6A 98 08 05 Directo MOV AX 986Ah 45 12 OD 05 Directo

~~

MOV DX 2365h I Directo AA 12 OC 05 MOV SI 12AAh I Directo 65 23 OB 05

I I I I

MOV DI 1236h I Directo I 05 I OD I 12 I 36

Suma de datos:

ARCHIVO: SUMA1 .MEM

ARCHIVO: SUMA2.MEM

DATO

Bits INS

33 25 08 08 Inmediato ADD AX 2533h

Dato Hi Dato C.reg C.ins Direccionamiento 16 REG

Lo

ADD BX FF58h

A5 F4 OB 08 Inmediato ADD DX F4A5 h D8 52 OA 08 Inmediato ADD CX 52D8h 58 FF O9 08 Inmediato

~~ .. " "

ADD AX 5263h

22 O 0 OD 08 Inmediato ADD DI 00022h C6 5c OC 08 Inmediato ADD SI 5CC6h 89 AD OB 08 Inmediato ADD DX AD89h 33 26 OA 08 Inmediato ADD CX 2633h 2A 45 O9 08 Inmediato ADD BX 452Ah 63 52 08 08 Inmediato

Alejandro Montejo Rubio 40

Page 47: Ruíz !Y - 148.206.53.84148.206.53.84/tesiuami/UAM5688.pdfMODOS DE DIRECCIONAMIENTO ... El Intel 4004 es el primer microprocesador aparecido en el ... se almacenan en un stack de 4

Simulador del Sistema Mínimo Intel 8088 Proyecto Terminal

ARCHIVO: SUMA3.MEM

ARCHIVO: SUMA4.MEM

ARCHIVO: SUMA5MEM

ADD DX 2635h 22 00 OD OA Inmediato ADD DI 00022h 35 26 OB OA Inmediato

Alejandro Montejo Rubio 41

Page 48: Ruíz !Y - 148.206.53.84148.206.53.84/tesiuami/UAM5688.pdfMODOS DE DIRECCIONAMIENTO ... El Intel 4004 es el primer microprocesador aparecido en el ... se almacenan en un stack de 4

Simulador del Sistema Mínimo Intel 8088 Proyecto Terminal

ARCHIVO: RESTA2.MEM

INS Direccionamiento REG 8 bits REG ,nst

03 O1 OE Registro SUB AH BH 02 O0 OE Registro SUB AL BL

Reg. Cód Cód Cód

Reg.

nn I SUB BH AL I Reaistro I OE ~ [""m uu I

SUB BL AH

04 06 OE Reaistro SUB DL CL 08 05 OE Registro SUB CH DL 07 04 OE Registro SUB CL DH o1 02 OE Registro

ARCHIVO: RESTA3.MEM

Bits SUB AX 2533h SUB BX FF58h SUB CX 52D8h SUB DX F4A5h SUB AX 5263h SUB BX 452Ah

2633h

SUB 5CC6h SUB 00022h

ARCHIVO: RESTA4.MEM

Direccionamiento

Inmediato Inmediato Inmediato Inmediato Inmediato Inmediato Inmediato Inmediato Inmediato Inmediato

Cód Ins

OF OF OF OF OF OF OF OF OF OF

- - - - - - - - - -

Cód Reg

08 o9 OA OB 08 o9 OA OB oc OD

I N S I REG 1 16 bits Cód Ins

SUB AX DS Registro

10 Registro SUB DI AX 10 Registro SUB SI DI 10 Registro SUB AX ES 10 Registro SUB SI SS 10 Registro SUB DI DS 10 Registro SUB BP cs 10 Registro SUB DX BX 10 Registro SUB CX cs 10 Registro SUB BX BP 10

REG Direccionamiento

Dato Dato Lo Hi

D8 F4 A5 52 I 63

O 0 I 22

Cód I Cód.Re I

OB I O9 "1

oc OD OD

Alejandro Montejo Rubio 43

Page 49: Ruíz !Y - 148.206.53.84148.206.53.84/tesiuami/UAM5688.pdfMODOS DE DIRECCIONAMIENTO ... El Intel 4004 es el primer microprocesador aparecido en el ... se almacenan en un stack de 4

Simulador del Sistema Mínimo Intel 8088 Proyecto Terminal

ARCHIVO: RESTA5.MEM

Producto de datos:

ARCHIVO: PRODUCTO1 .MEM

ARCHIVO: PRODUCT02.MEM

I

MUL 1236h I Directo I 13 I 12 36 ~ ~~

Alejandro Montejo Rubio 44

Page 50: Ruíz !Y - 148.206.53.84148.206.53.84/tesiuami/UAM5688.pdfMODOS DE DIRECCIONAMIENTO ... El Intel 4004 es el primer microprocesador aparecido en el ... se almacenan en un stack de 4

Simulador del Sistema Mínimo Intel 8088 Proyecto Terminal

Incremento de datos:

ARCHIVO: INCRE1.MEM

INS I REG I Direccionarniento INC AL Registro

Cód Reg. Cód lnst

00 14 INC AL Reaistro 05 14 INC CH Registro 04 14 INC CL Registro 03 14 INC BL Registro 02 14 INC BH Registro 01 14 INC AH Registro 00 14

INC BL Registro

14 INC Ax Registro 06 14 INC DL Registro 03 14

OD 14 INC DI Reaistro oc 14 I NC SI Registro OA 14 INC cx Registro 09 14 INC BX Registro 08

-

ARCHIVO: INCRE2.MEM

Alejandro Montejo Rubio 45

Page 51: Ruíz !Y - 148.206.53.84148.206.53.84/tesiuami/UAM5688.pdfMODOS DE DIRECCIONAMIENTO ... El Intel 4004 es el primer microprocesador aparecido en el ... se almacenan en un stack de 4

Simulador del Sistema Mínimo Intel 8088 Proyecto Terminal

Decremento de datos:

ARCHIVO: DECREl .MEM

ARCHIVO: DECRE2.MEM

Alejandro Montejo Rubio 46

Page 52: Ruíz !Y - 148.206.53.84148.206.53.84/tesiuami/UAM5688.pdfMODOS DE DIRECCIONAMIENTO ... El Intel 4004 es el primer microprocesador aparecido en el ... se almacenan en un stack de 4

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

I

JMP 0002h I Directo I 18 I O 0 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 PUSH BX Inmediato PUSH cx Inmediato

o9 19

08 19 PUSH Ax Inmediato OA 19 PUSH cx Inmediato o9 19 PUSH BX Inmediato oc 19 PUSH SI Inmediato OB 19 PUSH DX Inmediato OA 19

PUSH DX Inmediato OD 19 PUSH DI Inmediato OB 19

ARCHIVO: PUSH2.MEM

Alejandro Montejo Rubio 47

Page 53: Ruíz !Y - 148.206.53.84148.206.53.84/tesiuami/UAM5688.pdfMODOS DE DIRECCIONAMIENTO ... El Intel 4004 es el primer microprocesador aparecido en el ... se almacenan en un stack de 4

Simulador del Sistema Minimo Intel 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

POP o9 1B POP BX Inmediato 08 1B

-~ ~ cx Inmediato I 1B I OA I POP DX Inmediato POP SI Inmediato

OB 1B

08 1B POP Ax Inmediato OA 1B POP cx Inmediato o9 1B POP BX Inmediato oc 1B

POP DX Inmediato POP DI Inmediato

OB 1B OD 1B

ARCHIVO: POP2.MEM

Alejandro Montejo Rubio 48

Page 54: Ruíz !Y - 148.206.53.84148.206.53.84/tesiuami/UAM5688.pdfMODOS DE DIRECCIONAMIENTO ... El Intel 4004 es el primer microprocesador aparecido en el ... se almacenan en un stack de 4

Simulador del Sistema Mínimo Intel 8088 Proyecto Terminal

Información Técnica del Funcionamiento Interno del Software

Alejandro Montejo Rubio 49

Page 55: Ruíz !Y - 148.206.53.84148.206.53.84/tesiuami/UAM5688.pdfMODOS DE DIRECCIONAMIENTO ... El Intel 4004 es el primer microprocesador aparecido en el ... se almacenan en un stack de 4

Simulador del Sistema Mínimo Inte 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ó un sistema 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- procesador

Ejecutar Decodificar Recuperar Ejecutar Decodificar Recuperar

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 de memoria mediante un algoritmo llamado decodifica(). localizado en la formal

3.-El microprocesador ejecuta el código de instrucción mediante un algoritmo llamado 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 que empezar a definir la implementación de la memoria, de acuerdo a la arquitectura interna del microprocesador 8088, sabemos que este es capaz de 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

Page 56: Ruíz !Y - 148.206.53.84148.206.53.84/tesiuami/UAM5688.pdfMODOS DE DIRECCIONAMIENTO ... El Intel 4004 es el primer microprocesador aparecido en el ... se almacenan en un stack de 4

Simulador del Sistema Mínimo Intel 8088 Proyecto Terminal

Por lo cual implementamos un arreglo de las siguientes 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 segmento de 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 en un archivo 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

Page 57: Ruíz !Y - 148.206.53.84148.206.53.84/tesiuami/UAM5688.pdfMODOS DE DIRECCIONAMIENTO ... El Intel 4004 es el primer microprocesador aparecido en el ... se almacenan en un stack de 4

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 ejecutar e l s istema este archivo se lee y se cargan los arreglos los cuales describen el proceso de carga de instrucciones, propiedades, y microinstrucciones.

En donde Nombre de la inst rucc ión es un dato que se in t roduci rá en un ar reglo l lamado mnemónico de t ipo Cadena.

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

Ejemplo:

3

imp

V ByteReg1 As Boolean F ByteReg2 As Boolean V Dato8 As Boolean F DatoHi As Boolean F DatoLo As Boolean F OfMi As Boolean F OffLo As Boolean MOV mnemonico As String

Micro(40) As String

Define si en la instrucción existe Registro en el destino Define si en la instrucción existe Registro en el origen Define si en la instrucción existe un datos de 8 bits Define si en la instrucción existe un dato alto Define si en la instrucción existe un dato bajo Define si en la instrucción existe un offset alto Define si en la instrucción existe un offset bajo Define el nombre de la instrucción 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 la siguiente pagina se muestra una tabla con las microinstrucciones que se Idementaron en el desarrol lo, 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 registro destino lo que hay en el bus de datos DESTINO=BUSDATOS Asigna al bus de datos lo que se encuentra en el registro origen

ASIGNA Inicializa la Dosición de la memoria en el semento de datos DATASEGMENT Asigna al registro destino lo que hay en el registro origen

I Y

ASIGNA=MEMORIA I Asigna lo que hay en una posición de memoria a un registro I

Alejandro Montejo Rubio 52

Page 58: Ruíz !Y - 148.206.53.84148.206.53.84/tesiuami/UAM5688.pdfMODOS DE DIRECCIONAMIENTO ... El Intel 4004 es el primer microprocesador aparecido en el ... se almacenan en un stack de 4

1 - - MEMORIA=ASIGNA ] Asigna lo que hay en el registro origen a una dirección de memoria S U M A

Suma el contenido de memoria a un registro destino S U M A M E M Suma el contenido de un origen con el contenido de un destino

D I V I D E Divide el contenido de una dirección de memoria con el registro destino D I V I D E M E M Divide el contenido de un origen con el contenido de un destino

Simulador del Sistema Minimo Intel 8088 Proyecto Terminal

ASIGNA=MEMORIA 1 Asigna lo que hay en una posición de memoria a un registro destino

-

P U S H M E M

Brinca El Ip A Un Desplazamiento Dentro Del Segmento De Código S A L T A este valor en una dirección del segmento de datos. Desapila el contenido de una dirección de memoria del segmento de pila, y coloca POPMEM un registro destino. Desapila el contenido de una dirección de memoria del segmento de pila y lo carga en POPREG dirección de memoria del segmento de pila. Apila el contenido de una dirección de memoria del segmento de datos, en una

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

- R E S T A

Multiplica el origen con un destino MULTIPLICA Resta el contenido de una dirección de memoria con el contenido de un destino RESTAMEM Resta el contenido de un origen con el contenido de un destino

M U L T I P L I C A M E M Incrementa en una unidad el contenido del destino I N C R E M E N T A Multiplica el contenido en una dirección de memoria con un registro destino.

I N C R E M E N T A M E M

Apila el contenido de un registro en una dirección de pila P U S H R E G lnicializa la memoria en el segmento de pila S T A C K S E G M E N T

Decrementa en una unidad el contenido de una dirección de memoria. D E C R E M E N T A M E M Decrementa en una unidad el contenido de un registro destino DECREMENTA Incrementa en una unidad el contenido de una dirección de memoria.

Instrucción NO P FFFFFFF O MOV R8 DATO8 VFVFFFF 3 DETECTA BUSDATOS=ORIGEN DESTINO=BUSDATOS

MOV REG REG VVFFFFF 2 DETECTA AS I GNA

MOV R16 DATO16 VFFVVFF 3 DETECTA BUSDATOS=ORIGEN DESTINO=BUSDATOS

MOV MEM REG FVFFFVV

Alejandro Montejo Rubio

Función Esta instrucción no hace nada

Carga un registro de 8 bits con un dato de 8 bits.

Carga un registro destino con el contenido de un registro origen.

Carga un registro de 16 bits con un datos de 16 bits.

Carga en una dirección de memoria del segmento de datos, el

53

Page 59: Ruíz !Y - 148.206.53.84148.206.53.84/tesiuami/UAM5688.pdfMODOS DE DIRECCIONAMIENTO ... El Intel 4004 es el primer microprocesador aparecido en el ... se almacenan en un stack de 4

DATASEGMENT DETECTA MAR=DIRECCION BUSDATOS=ORIGEN ASIGNA=MEMORIA

MOV REG MEM VFFFFVV 3 DATASEGMENT DETECTA MEMORIA=ASIGNA

bits.

Carga en un registro origen, el contenido de una dirección de memoria que se encuentra en el segmento de datos.

Simulador del Sistema Mínimo Intel 8088

I contenido de un registro de 3 ó 16

-

ADD R8 DATO8 un dato de 8 bits. VFVFFFF Suma a un registro origen de 8 bits

BUSDATOS=ORIGEN DETECTA 3

SUMA I ADD R8 R8 Suma el contenido de un registro VVFFFFF de 8 bits el contenido de otro

registro de 8 bits. DETECTA

ADD R16 Dl6 VFFVVFF 3 DETECTA BUSDATOS=ORIGEN SUMA

ADD R16 R16 VVFFFFF 2 DETECTA SUMA

ADD REG MEM VFFFFVV 3 DATASEGMENT DETECTA SUMAMEM

DIV R8 VFFFFFF 2 DETECTA DIVIDE

DIV MEM FFFFFVV 3

Suma el contenido de un registro de 16 bits un dato de 16 bits.

Suma el contenido de un registro de 16 bits con el contenido de un registro de 16 bits.

Suma el contenido de un registro de 16 ó 8 bits con el contenido de una dirección de memoria del segmento de datos.

Divide el contenido del registrc AX entre el contenido de ur registro de 8 bits. Poniendo e cociente en AL y el residuo er AH

Divide el contenido del registrc AX entre el contenido de un;

Proyecto Terminal

Alejandro Montejo Rubio 54

Page 60: Ruíz !Y - 148.206.53.84148.206.53.84/tesiuami/UAM5688.pdfMODOS DE DIRECCIONAMIENTO ... El Intel 4004 es el primer microprocesador aparecido en el ... se almacenan en un stack de 4

Simulador del Sistema Minimo Inte l 8088

c B DATASEGMENT DETECTA DIVIDEMEM

SUB R8 DATO8 VFVFFFF 3 DETECTA BUSDATOS=ORIGEN RESTA

SUB R8 R8 VVFFFFF 2 DETECTA RESTA

SUB R16 Dl6 VFFVVFF 3 DETECTA BUSDATOS=ORIGEN RESTA

SUB R16 R16 VVFFFFF 2 DETECTA RESTA

SUB REG MEM VFFFFVV 3 DATASEGMENT DETECTA RESTAMEM

MUL R8 VFFFFFF 2 DETECTA MULTIPLICA

MUL MEM FFFFFVV 3 DATASEGMENT DETECTA MULTIPLICAMEM

INC R8 VFFFFFF 2 DETECTA INCREMENTA

INC MEM FFFFFVV

Alejandro Montejo Rubio

dirección de 8 bits cre la memoria, que se encuentra en el segmento de datos. Poniendo el cociente en AL y el residuo en AH Resta el contenido de un registro de 8 bits con el contenido de un registro de 8 bits.

Resta el contenido de un registro de 8 bits con el contenido de un registro de 8 bits.

Resta el contenido de un registro de 16 bits con un dato de 16 bits.

Resta el contenido de un registro de 16 bits con el contenido de un registro de 16 bits.

Resta el contenido de un registro de 16 bits, cnn el contenido de una dirección de memoria dentro del segmento de datos.

Multiplica el contenido del registro AL con el contenido de un registro de 8 bits. El producto lo deposita en el registro AX.

Multiplica el contenido del registro AL con el contenido de una dirección de memoria del segmento de datos. y el producto lo deposita en el registro AX. Incrementa el contenido en una unidad del registro de 8 bits ó 16 bits

Incrementa el contenido de una dirección de memoria dentro

Proyecto Terminal

55

Page 61: Ruíz !Y - 148.206.53.84148.206.53.84/tesiuami/UAM5688.pdfMODOS DE DIRECCIONAMIENTO ... El Intel 4004 es el primer microprocesador aparecido en el ... se almacenan en un stack de 4

b P 3 DATASEGMENT DETECTA INCREMENTAMEM

DEC R8 VFFFFFF 2 DETECTA DECREMENTA

DEC MEM FFFFFVV 3 DATASEGMENT DETECTA DECREMENTAMEM

JMP RELATIVO VFFFFFF 2 DETECTA SALTA

PUSH REG VFFFFFF 3 STACKSEGMENT DETECTA PUSHREG

PUSH MEM FFFFFVV 4 DATASEGMENT STACKSEGMENT DETECTA PUSHMEM

POP REG VFFFFFF 3 STACKSEGMENT DETECTA POPREG

POP MEM FFFFFVV 4 STACKSEGMENT DATASEGMENT DETECTA POPMEM

Simulador del Sistema Mínimo Inte l 8088 Proyecto Terminal

del segmento de datos en una unidad.

Decrementa el contenido de un registro de 8 ó 16 bits en una unidad.

Decrementa el contenido de una dirección de memoria dentro del segmento de datos en una unidad.

Realiza un salto dentro del segmento de código, incrementando el ip con el contenido de un registro de 8 bits.

Realiza un apilamiento de un registro de 16 bits dentro del segmento de pila.

Realiza un apilamiento del contenido de una dirección dentro del segmento de datos, en una dirección dentro del segmento de pila.

Despila el contenido de una dirección del segmento de pila en un registro de 16 bits.

Desapila el contenido del segmento de pila , y lo pone en una dirección de memoria dentro del segmento de datos.

En seguida se muestra el contenido del archivo de ayuda, formado por los archivos ayuda.rtf, y ayuda.hpj

Ayuda.hpj : Se requiere Compilar en hc 3.1 lOPTlONSl errorlog = Erroresxrr

Alejandro Montejo Rubio 56

Page 62: Ruíz !Y - 148.206.53.84148.206.53.84/tesiuami/UAM5688.pdfMODOS DE DIRECCIONAMIENTO ... El Intel 4004 es el primer microprocesador aparecido en el ... se almacenan en un stack de 4

Simulador del Sistema Mínimo Inte 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 MENlJS 12 MICRO 13 nrr 14 BYTES 15 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 en un simulador de estas características. Cabe señalar que este sistema tiene sus limitaciones de 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 todas las propiedades del microprocesador =MICRO.

Alejandro Montejo Rubio 57

Page 63: Ruíz !Y - 148.206.53.84148.206.53.84/tesiuami/UAM5688.pdfMODOS DE DIRECCIONAMIENTO ... El Intel 4004 es el primer microprocesador aparecido en el ... se almacenan en un stack de 4

Simulador del Sistema Mínimo Intel 8088 Proyecto Terminal

"

RQGT. NMI INT

RST n + o

3 READY

% o_

ALU de 16 brts - 4

n reglstros de

dpMX banderas

m a -

GND D

4 VCC

so-S2 . unidad de apuntador interriaz de BUS LOCK

D T F D m , ALE

m ADO A16153 INTA, liZi;,AD15 AI 9156

El contenido de esta ayuda esta dividido en cuatro secciones:

0 SimuladorSIMULADOR 0 Micro InternoMIC 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, 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.

para la memoria del sistema o el espacio de entradaisalida (E/S) para los dispositivos de E/s del sistema.

dispositivos de E/S conectados en el sistema.

0 Bus de Direcciones : El canal de direcciones suministra una dirección en la memoria

0 Bus de datos : El canal transfiere éstos entre el microprocesador y la memoria y los

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

Page 64: Ruíz !Y - 148.206.53.84148.206.53.84/tesiuami/UAM5688.pdfMODOS DE DIRECCIONAMIENTO ... El Intel 4004 es el primer microprocesador aparecido en el ... se almacenan en un stack de 4

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 contiene una 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 de guardar 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 actualizar la 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, Contador y 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 conteo de ciertas instrucciones para corrimientos (CL) y rotaciones del numero 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 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 Estos registros son también de uso general , pero se utilizan más a menudo para apuntar a la localidad de la

memoria que contiene los datos del operando de muchas instrucciones.

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 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 en forma indirecta para utilizarlos con las instrucciones de cadenas o arreglos.

DI (lndice de datos): Se emplea para direccionar datos destino en forma indirecta para utilizarlos con las instrucciones de cadenas o arreglos.

Alejandro Montejo Rubio 59

Page 65: Ruíz !Y - 148.206.53.84148.206.53.84/tesiuami/UAM5688.pdfMODOS DE DIRECCIONAMIENTO ... El Intel 4004 es el primer microprocesador aparecido en el ... se almacenan en un stack de 4

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 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 ): 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 código. En modo real , define el inicio de una sección de 6 4 K bytes. segmento de código esta limitado en el 8088 a una longitud de 64 Kbytes. Definido en 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(segmento 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 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 bien oprimiendo en la etiqueta de segmento de registro. Cabe señalar que podemos cambiar 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 de los 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 Montejo Rubio 60

Page 66: Ruíz !Y - 148.206.53.84148.206.53.84/tesiuami/UAM5688.pdfMODOS DE DIRECCIONAMIENTO ... El Intel 4004 es el primer microprocesador aparecido en el ... se almacenan en un stack de 4

Alejandro Montejo Rubio 61

Page 67: Ruíz !Y - 148.206.53.84148.206.53.84/tesiuami/UAM5688.pdfMODOS DE DIRECCIONAMIENTO ... El Intel 4004 es el primer microprocesador aparecido en el ... se almacenan en un stack de 4

Simulador del Sistema Mínimo Intel 8088 Proyecto Terminal

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. 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 derecho del 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

Page 68: Ruíz !Y - 148.206.53.84148.206.53.84/tesiuami/UAM5688.pdfMODOS DE DIRECCIONAMIENTO ... El Intel 4004 es el primer microprocesador aparecido en el ... se almacenan en un stack de 4

Simulador del Sistema Mínimo Inte l 8088 Proyecto Terminal

TECLAS

Las Teclas se clasifica en:

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

Estas teclas se componen de las teclas de instrucción que son las 2 teclas que' 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 u fl 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 formar el conjunto de los números representados en la base hexadecimal.

Las teclas de función son :

Tecla EiecutarTECLAEJE Tecla ResetTECLARES

Tecla Ejecutar: Nos permite ejecutar la pantalla de ejecución de programas, 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+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 ~ N FÍSICA

La Dirección de Editar muestra la dirección a editar del segmento de código, esta se 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.

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

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

o Cambiar Dirección de Edición(CTRL + C) : Nos muestra una caja de mensaje menú cuenta con tres subménus que son :

donde podemos cambiar el desplazamiento, dentro del segmento de código para editar programas.

Alejandro Montejo Rubio 63

Page 69: Ruíz !Y - 148.206.53.84148.206.53.84/tesiuami/UAM5688.pdfMODOS DE DIRECCIONAMIENTO ... El Intel 4004 es el primer microprocesador aparecido en el ... se almacenan en un stack de 4

Simulador del Sistema Mínimo Inte l 8088 Proyecto Terminal

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

Desensamblar (CTRL + D) : Muestra una ventana con el código en lenguaje

0 Historial (CTRL + H) : Muestra una breve reseña histórica de la familia Intel

muestra las operaciones internas de ejecución

ensamblador.

Microprocesador Intel 8088. El Intel 8088 es un procesador del tipo NMOS que se vende empacado con 40 patas.Tiene una trayectoria interna

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 necesite la siguiente instrucción ya estar disponible. El Intel 8088 pude trabajar en dos modos :

0 Modo mínimo. Modo máximo.

Modo de trabajo del Micro procesador Modo Mínimo / Modo Máximo

En el modo máximo se tienen 40 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 para el 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 de memoria cuando el 8088 lo solicita en cuatro ciclos de bus. La señal INTR y NMI se utilizan para provocar 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 con un dato de punto flotante el 8088 arrancando el 8087.La señal S3 a S6 y QSx contienen información del estado interno de la CPU.

BIT: Digito binario: la unidad de datos más pequeiia que un equipo puede almacenar. Los bits se expresan como 1 O O .

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

Page 70: Ruíz !Y - 148.206.53.84148.206.53.84/tesiuami/UAM5688.pdfMODOS DE DIRECCIONAMIENTO ... El Intel 4004 es el primer microprocesador aparecido en el ... se almacenan en un stack de 4

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

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 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 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. desee limpiar la memoria en cualquier programa que este editando, y que no haya sido guardado previamente

Alejandro Montejo Rubio 65

Page 71: Ruíz !Y - 148.206.53.84148.206.53.84/tesiuami/UAM5688.pdfMODOS DE DIRECCIONAMIENTO ... El Intel 4004 es el primer microprocesador aparecido en el ... se almacenan en un stack de 4

Simulador del Sistema Mínimo Inte 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 conjunto de instrucciones soportadas por el microprocesador.

La principal caracteristica que nos hereda este simulador, es que debido ha la estructura, y al tipo de instrucciones manejadas con microinstrucciones, podemos seguir aumentando las características del sistema implementado una gran numero de instrucciones para el crecimiento de este simulador.

Esta herramienta cubre las principales Características e instrucciones de lenguaje ensamblador, para poder practicar y desarrollar pequeños programas, que permitan la practica de usuarios expertos e inexpertos, en el tema de Lenguaje ensamblador, trabajado bajo el 8088 de la familia Intel, y asi mismo poder seguir el comportamiento del 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 Rubio 66

Page 72: Ruíz !Y - 148.206.53.84148.206.53.84/tesiuami/UAM5688.pdfMODOS DE DIRECCIONAMIENTO ... El Intel 4004 es el primer microprocesador aparecido en el ... se almacenan en un stack de 4

Apéndice.

Código Fuente A aontinuadón se muestra en el siguiente orden el d i g o .

Form=Portada. f rm Module=Tipos; Tipos y variables globales. Bas Form=CPU interno. Frm Form=Sistema minimo. f rm Form=Desensamblador.frm

Object=(F9043C88-F6F2-lOlA-A3C9- Form=historial.frm

08002B2F49FB]#1.0#0; COMDLG32.OCX Object=(BDC217C8-ED16-llCD-956C- 0000C04E4COA)#1.0#0; TABCTL32.OCX Object=(3B7C8863-D78F-lOlB-B9B5- 04021C009402}#1.0#0; RICHTX32.OCX Object=(6B7E6392-850A-lO1B-AFCO- 4210102A8DA7]#1.0#0; COMCTL32.0CX Object=(FAEEE763-117E-lOlB-8933- 08002B2F4F5A)#1.0#0; DBLIST3Z.OCX 0bject=(00028C01-0000-0000-0000- 000000000046]#1.0#0; DBGRID32.0CX Reference=*\G(BEF6EOOl-A874-lOlA-8BBA- 00A?l00300CAB)#2.O#O#D:\WINDOWS\SYSTEM\O LEPR032.DLL#Standard OLE Types Reference=*\G{00025EOl-OOOO-OOOO-COOO- OOOOOOOOOO46)#3.O#O#D:\ARCHIVOS DE PROGRAMA\ARCHIVOS

PROGW\A#Microsoft DA0 3.0 Object Library Object=(OBA686C6-F7D3-lOlA-993E- 0000COEF6F5E]#1.0#0; THREED32.0CX Object=[C932BA88-4374-lOlB-A56C- 00AA003668DC)#1.0#0; MSMASK32.OCX Object=[B16553C3-06DB-lOlB-85B2- 0000C009BE81)#1.0#0; SPIN32.OCX Object-(27395F88-OCOC-1OlB-A3C9- 08002B2F49FB)#1.0#0; PICCLP32.OCX Object=[648A5603-2C6E-lOlB-82B6- 000000000014~#1.0#0; MSCOMM32.OCX Object=(ClA8AF28-1257-10lB-8FBO- 0020AF039CA3f#1.0#0; MCI32.OCX Object=(20C62CAE-15DA-lOlB-B9A8- 444553540000)#1.0#0; MSMAPI32.OCX

04021C009402)#1.0#0; KEYSTA32.0CX

04021C009402f#1.0#0; GAUGE32.0CX Object=[0842D103-1E19-lOlB-9AAF- lA1626551E7C}#1.0#0: GRAPH32.OCX Object={F72CC888-5ADC-101B-A56C- OOAAOO3668DC)#1.0#0; ANIBTN32.OCX Object={BE4F3ACB-AEC9-10lA-947B- OODD010F7B46)#1.0#0; MSOUTL32.0CX Object=midfile; mid Ohject=mplayer; mplayer.exe Object=AVIFile; avi Ohject=Package; packager.exe ProjWinSize=127,195,300,411 ProjWinShow=2 IconForm="Forml" HelpFile="C: \actualizacion\Ayuda.hlp"

COMUNES\MICROSOD:\ARCHIVOS DE

Ohject=(B9D22273-OC24-101B-AEBD-

Object={7A080CC8-26E2-101B-AEBD-

Alejandro Montejo Rubio

Title="Simula-1" ExeName32="prueba. exe" Name="Proyectl" HelpContextID="l" StartMode=O VersionCompatible32="0" Ma j orVer=l MinorVer=O RevisionVer=O AutoIncrementVer=O ServerSupportFiles=O VersionCompanyName="UAM. "

Código Portada VERSION 4.00 Begin VB-Form Portada

Appearance = O 'Flat Backcolor = &HOOFF0000& Caption ClientHeight = 4140 ClientLeft = 2430 ClientTop = 1320 Clientwidth = 7305 FillColor = hHOOCOCOCO& Forecolor = &H00000000& Height = 4545 HelpContextID = 1 Left = 2370 LinkTopic ScaleHeight

= "Form3"

Scalewidth = 4140 = 7305

Width = 7425 Windowstate Begin VB.Timer Timer1

= 2 'Maximized

= "Portada"

TOP = 975

Left Interval = 3000

= 1320 TOP = 6600

End Begin VB.PictureBox SSPanell

Backcolor = &HOOCOCOCO& Beginproperty Font IOBE35203-

8F91-llCE-9DE3-00AAO04BB851} Name = "MS Sans

Size Charset

= 24

Weight = o

Underline = 700

Italic = O 'False

Strikethrough = O 'False = O 'False

Endproperty Height = 240 Left = 2160 ScaleHeight = 180 Scalewidth = 195 TabIndex = o Width Begin VB.PictureBox Picture1

Serif"

TOP = 6480 = 255

Appearance Backcolor

= O 'Flat

Borderstyle = O 'None ClipControls = O 'False DrawMode = 15 'Merge

Fillstyle = 2

FontTransparent = O 'False Forecolor = &H80000008& Height = 2055

- - &H80000005&

Pen Not

'Horizontal Line

67

Page 73: Ruíz !Y - 148.206.53.84148.206.53.84/tesiuami/UAM5688.pdfMODOS DE DIRECCIONAMIENTO ... El Intel 4004 es el primer microprocesador aparecido en el ... se almacenan en un stack de 4

Left = 360 Picture

ScaleHeight = 2055 Scalewidth = 3735 TabIndex = 1

Width = 3735 Begin VB.Labe1 Label1

- ~

"portada.frx":0000

TOP = 480

Caption

Height = 15 Left = 1440 TabIndex = 4

Width = 2295

- -

"Labell"

TOP = 2040

End End Begin VB.Frame Frame1

- -

&HOOCOCOCO& Backcolor

Height Left

= 4935

TabIndex = 240

TOP = 2

Width = 240 = 7695

Begin VB.PictureBox SSPanel2

Beginproperty Font (OBE35203-8F91- Backcolor = &HOOCOCOCO&

llCE-9DE3-00AA004BB851) Name = "MS Sans Serif" Size = 18 Charset = o Weight = 700 Underline Italic

= O False

Strikethrough = O False = -1 True

Endproperty Height = 1095 Left = 720 ScaleHelght = 1035 Scalewidth = 6195 TabIndex Top

= 3

Wldth = 3360 = 6255

End Begin VB.Labe1 Label3 Alignment = 2 Center Borderstyle = 1 Fixed Single Caption="Universidad Autonoma

Beginproperty Font (OBE35203-8F91- Metropolitana"

llCE-9DE3-00AA004BB851) Name="MS Sans Serif" Size= 12

Charset = o Weight = 700 Underline = o

Endproperty Height Left = 3960 TabIndex = 6

Width

= 735

TOP = 360

End Begin VB.Labe1 Label2

= 3615

Alignment = 2 Caption = "Casa abierta al Tiempo"

(OBE35203-8F91-1lCE-9DE3-OOAA004BB851) Beginproperty Font

Sans Serif" Name '"S

Size = 12 Charset Weight = I00

= o

Alejandro Montejo Rubio

Simulador del Sistema Mínimo Intel 8088 Proyecto Terminal

Underline = o EndProperty Height Left TabIndex = 5 TOP = 2280 Width = 3015

= 375 = 600

End End

End Begln VB.PictureBox SSPanel3

Backcolor = &HOOCOCOCO& Height = 6495 Left = 1440

Scalewidth ScaleHeight = 6435

= 9075 TabIndex = 7 TOP Width

= 720 = 9135

Begin VB. Frame Frame2 Height = 4695 Left = 600 TabIndex Top

= 8

Wldth = 600 = 7935

Begin VB.PictureBox SSPanel4 Backcolor

Beginproperty Font

- -

&HOOFF8080&

(OBE35203-8F91-llCE-9DE3-OOAAOO4BB851) Name = "Times New Roman" Size = 54.75 Charset = o Weight = 700 Underline = O 'False Italic = -1 'True Strikethrough = 0 'False Endproperty

Forecolor = &HOOFF0000& Helght = 1965 Left = 2880 ScaleHeight = 1905 ScaleWidtk TabIndex

= 3945

TOP = 15

Width = 1 6 8 0

Begin VB.Labe1 Label8 = 4005

BackColor = &H00000000& BackStyle = o

Beginproperty Font (OBE35203-8F91- 'Transparent

llCE-9DE3-00AA004BB851) Name = "Times New Roman" Size = 12 Charset = 0 Weight = 700 Underline = O 'False Italic = O 'False Strikethrough = O 'False

Forecolor = &H00000000& Height = 285 Left = 240 TabIndex = 1 8

TOP = 1320 Width = 3495

Endproperty

End Begln VB.Labe1 Label7 Backcolor Backstyle

= &HOOOOOOFF& = O 'Transparent

Beginproperty Font (OBE35203-8F91-

Name = "Times New Roman"

Charset Size = 12

= o Weight = IO0

11CE-9DE3-00AA004BB851)

2

Page 74: Ruíz !Y - 148.206.53.84148.206.53.84/tesiuami/UAM5688.pdfMODOS DE DIRECCIONAMIENTO ... El Intel 4004 es el primer microprocesador aparecido en el ... se almacenan en un stack de 4

-l

Simulador del Sistema Mínimo Intel 8088 Proyecto Terminal

Underline = O 'Falso Italic = O 'Falso Strikethrough = O 'Falso

ForeColor = &H00000000& Height = 285 Left = 240 TabIndex = 17

Wldth = 3495

Endproperty

TOP = 840

End Begin VB.Labe1 Label6 BackColor = &HOOOOOOOO&

Backstyle = o BeginProperty Font

'Transparent

{ O B E 3 5 2 0 3 - 8 F 9 1 - l l C E - 9 D E 3 - O O A A O O 4 B B 8 5 1 j Name= "Times New Roman" Size = 12 Charset Welght Underline = O 'False Italic = O 'False Strikethrough = O 'False

ForeColor = &H00000000& Height = 285 Left = 240 TabIndex = 16 Top = 360 Width = 3315

= o = 700

Endproperty

End End Begin VB.PictureBox SSPanel5

BackColor = &HOOCOCOCO& ForeColor = &HOOOOOOCO& Height = 2535 Left = 2520 ScaleHeight = 2475 Scalewidth = 4635 TabIndex = 19

Width = 4695 TOP = 1440

End Begin VB.PictureBox SSCommand4

BeginProperty Font (OBE35203-8F91-llCE-9DE3-OOAAOO4BB851)

Name= "MS Sans Serif" Size= 9.75 Charset= O Weight = 700 Underline = O 'False Italic = 0 ' F a l s e Strikethrough = 0 'False

Endproperty Height Left

= 495 = 360

ScaleHeight Scalewidth

= 435 = 1635

TabIndex = 12

Width = 1695 TOP = 3120

End Begin VB.PictureBox SSCommand3

llCE-9DE3-00AA004BB851) BeginProperty Font (OBE35203-8F91-

Name= "MS Sans Serif"

Charset Size= 9.15

Weight = 700 Underline = O 'False

Strikethrough = O 'False ItdllC = O 'False

Endproperty Height = 495 Left = 360

= o

ScaleHelght = 435 Scalewidth = 1635 TabIndex = 11 TOP Width

= 2625 = 1695

End Begin VB.PictureBox SSCommand2

BeginProperty Font

Name = "MS Sans Serif" Size = 9.15 Charset Weight Underline = 0 'False Italic = O 'False Strikethrough = O 'False Endproperty Height = 495 Left = 360 ScaleHeight = 435

{ O B E 3 5 2 0 3 - 8 F 9 1 - l l C E - 9 D E 3 - O O A A O O 4 B B 8 5 1 j

= o = 700

ScaleWidt!I = 1635 TabIndex = 10

Width = 1695 End Begin VB.PlctureBox SSCommandl

TOP = 2160

BeginProperty Font

Name= "MS Sans Serif" Size = 9.15 Charset Weight Underline = O 'False Italic = O 'False Strikethrough = O 'False Endproperty Height = 495 Left = 360 ScaleHeight = 435 Scalewidth = 1635 TabIndex = 9

Width

(OBE35203-8F91-llCE-9DE3-OOAAOO4BB851)

= o = 700

TOP = 1680 = 1695

End Begin VB.Labe1 Label4

Alignment = 2 'Center Borderstyle = 1 'Fixed Single Caption = "Contenido" BeginProperty Font (OBE35203-

Name = "MS Sans Serif"

Charset Size = 18

Weight = 700 Underline = 0 'False Italic = O 'False Strikethrough = O 'False Endproperty Helght = 495 Left = 1920 TabIndex = 13 TOP = 360 Width = 3975

8F91-llCE-9DE3-00AAOO4BB851)

= o

End End

Begin VB.Labe1 Label5 Appearance = O 'Flat

BackColor = &H80000005& BackStyle Caption ="Oprima el bóton de la opción

= O 'Transparent

que requiera" ForeColor= &H80000008& Height = 255 Left = 600 TabIndex = 14 TOP = 5400

Alejandro Montejo Rubio 3

i

Page 75: Ruíz !Y - 148.206.53.84148.206.53.84/tesiuami/UAM5688.pdfMODOS DE DIRECCIONAMIENTO ... El Intel 4004 es el primer microprocesador aparecido en el ... se almacenan en un stack de 4

Width = 3015 End

End End Attribute VB-Name = "Portada" Attribute VB-Creatable = False Attribute VB-Exposed = False

Private Sub Toolbar2-ButtonClick(ByVal Button As Button) End Sub

Private Sub Commandl-Click0 End Sub

Private Sub Command2-CllckO End End Sub

Private Sub Form-Load ( ) SSPanell.Height = 5535 SSPanell.Top = 720 SSPanell.Left = 720 SSPanell.Width = 8295 SSPanel3.Visible = False Timerl.Interva1 = 2000 End Sub

Private Sub SSComm2andl-Click0 Label6.Caption = "Alejandro Montejo Rubio" End Sub

Private Sub Label4-Click0 End Sub

Private Sub SSCommandl-Click0

Codigo Modulo Tipos y Variables Attribute VB-Name = "Tipos" Public Type TEprom

Inicio As Long Fin As Long

End Type

Public Type TInformacionOperaciones ByteRegl As Boolean'Estado 1 EyteReg2 As Boolean 'Estado 4 Dato8 As Boolean 'Estado 5 DatoHi As Boolean 'Estado 6 DatoLo As Boolean 'Estado I OffHi AS Boolean 'Estado 2 y 8 OffLo As Boolean 'Estado 3 y 9 mnemonic0 As String Micro(40) As String

End Type

Public mnemonicos0 As Strlng Public EstadoFetch As Integer Public Memoria(0 To 1048575) As Byte ' Declaración del arreglo de memoria Public DirecionamientoRegistro As Byte Public CodigoDireccionamiento As Byte Public CodigoRegistrol As Byte ' Con uso Public CodigoRegistro2 As Byte 'Con u s o Public CodigoSegmento As Long Public CodigoDesplazamiento As Long Public NumEprom As Integer, NumRam As

Public Eprom() As TEprom Integer

Public RAM() As TEprom Public Dato As Long Public DireccionEditar

Simulador del Sistema Mínimo Intel 8088 Proyecto Terminal

Label7.Caption = "Alejandro Montejo Rubio"

SSPanel4. Caption = " I '

End Sub

private Sub SSCommand2-Click0 Label6. Caption = " "

Label7.Caption = "Diplomado Miguel Angel Ruíz Sanchez. I' Label8 .Caption = " "

SSPanel4.Caption = I"'

End Sub

Private Sub SSCommand3-Click0 Label7.Caption = "Ejecutando"

Hide Form2. Show

Unload Portada End Sub

Private Sub SSCommand4-Click0 Hide End End Sub

End Sub Private Sub SSPanel4-ClickO

Private Sub Timerl-Timer0 Dim contador As Integer While contador < 4000

Wend contador = contador + 1

SSPanell.Vislble = False SSPanel3.Visible = True

End Sub

Public DigitosHex As Integer Public Registros ( O Tc. 19) As String Public RegistroActual As Integer Public Direccionamiento As Integer Public NumByteMeter Public ListaDirecclonamiento(1 To 2) As String 'Nueva modificación del 11 de mayo de 1997 Public MaximoCodlgo Public CodlgoOperacion As Byte Public ModoDireccionamiento As Byte Public Registro1 As Byte Public Registro2 As Byte Public DatoByte As Long Public DatoWord As Long Public Direccion As Long Public Operacion(100) As TInformacionOperaciones Public Edicion As Long Public BanderaRegistro AS Boolean Public CambioAdelante As Integer Public CambioAtras As Integer Public UltimoValor As Integer Public banderacambios As Boolean Public SegDesensamblar As Long Public Origen AS String 'Orlgen de instrucclón Public Destino As TextBox 'destlno de instrucción Publlc Codigosdeerror(0 To 10) AS String ' Arreglo de errores Public Descod As TextBox ' Varibale que guarda el desplazamiento de código Public Sub Error(numer0 As Integer) End Sub

Alejandro Montejo Rubio 4

Page 76: Ruíz !Y - 148.206.53.84148.206.53.84/tesiuami/UAM5688.pdfMODOS DE DIRECCIONAMIENTO ... El Intel 4004 es el primer microprocesador aparecido en el ... se almacenan en un stack de 4

Simulador del Sistema Mínimo Inte l 8088 Proyecto Terminal

Public Function BinHex$(num AS Long)

While num <> O cad$ = " "

If num Mod 16 < 10 Then

16) 1 + cad$ cad$ = LTrim(Str$(num Mod

Else Select Case num Mod 16

Case 10

Case 11

Case 12

Case 13

Case 14

Case 15

cads = "A" + cad$

cad$ = "B" + cad$

cad$ = "C" + cad$

cad$ = "D" + cad$

cad$ = "E" + cad$

cad$ = "F" + cad$ End Select

End If num = num \ 16

Wend If cad$ = " I ' Then cads = " o " BinHex$ = cad$

End Function

Public Sub GuardarArchlvoO Dim Direccion As Long Dim Tamaño As Integer On Error GoTo Finalizar Abrirmem.DialogTitle = "Guardar

Abrirmem.ShowSave Open AbrirMemoria.filename For

Output As 1 Direccion = O Do

Direccion =

If Direccion >= 1023 Then Exit Do

memoria ''

Forml.ObtenDireccionNoCero(Direccion)

Print #1, Direccion dux& = Direccion

Forml.ObtenTamaño(aux&) Tamaño =

Print #1, Tamaño For i = 1 To Tamaño Print #1, Memoria(Direcci0n + i -

1 ) Next i Direccion = Direccion + Tamaño

Loop Until Direccion >= 1023 Close 1

Finalizar: End Sub

Public Sub LeeDatosOperacionO

" \ M i c r o I n s t r u c c i o n e s . I s t " For Input As 1

Open App.Path +

i = O While Not EOF(1)

W i t h Operacion (i) Input #1, .mnemonic0 Input #1, aux If Mid$(aux, 1, 1) = "V"

Then

Then

Else

End If If Mid$(aux, 2, 1 ) = "V"

.ByteReg2 = True

.ByteRegl = True

.ByteRegl = False

Else

Then

Then

Then

Then

Then

End If If Mid$ (dux, 3, 1) = "V"

.ByteReg2 = False

.Dato8 = True

.Dato8 = False Else

End If If Mid$(aux, 4, 1) = "V"

Else .DatoHi = True

End If .DatoHi = False

If MidS (dux, 5, 1) = "V"

.DatoLo = True Else

.DatoLo = False End If If Mid$(au.c, 6, 1 ) = "V"

.OffHi = True

.OffHi = False Else

End If If Mid$ (aux, 7, 1) = "V"

.OffLo = True

.OffLo = False Else

End If Input #1, Mic For k = 1 To Mic

Next k Input #1, .Micro(k)

End With i = i + l

Wend MaximoCodigo = i Close (1)

End Sub Public Sub AbrirArchivoO

Dim Direccion As Long Dlm Tamaño As Integer Dim Dato As Byte On Error GoTo Finalizar AbrirMemoria.ShowOpen Open AbrlrMemoria.filename For

On Error GoTo Finalizarcerrar While Not EOF(1)

Input As 1

Input #1, Direccion, Tamaño For i = 1 To Tamaño

Input #1, Dato Memoria(Direccion + i - 1 )

= Dato

Wend Finalizarcerrar:

Close 1 Forml.HazDump

Next i

Finalizar: End Sub

Public Sub ValidaHexadecimal(KeyAscii As Integer, Objeto As TextBox)

If KeyAscii = 8 Then 0bjeto.Text = "O" +

KeyAscii = O 0bjeto.SelStart = 4

Caracter = Chr(KeyAscii1 If (Caracter >= "O" And

Mid(Objeto.Text, 1, 3)

Else

Caracter <= "9") Or (Caracter >= "A"

Alejandro Montejo Rubio 2

Page 77: Ruíz !Y - 148.206.53.84148.206.53.84/tesiuami/UAM5688.pdfMODOS DE DIRECCIONAMIENTO ... El Intel 4004 es el primer microprocesador aparecido en el ... se almacenan en un stack de 4

Simulador del Sistema Mínimo Inte l 8088 Proyecto Terminal

And Caracter <= "F") Or (Caracter >= "a" And Caracter <= "f") Then

Asc (Ucase (Caracter) ) KeyAscii =

cadena$ = " "

cadena$ = Mid(Objeto.Text, 2, 3) 0bjeto.Text = cadena$

Codigo CPU Interno VERSION 4.00 Begin VB.Form Forml

Backcolor = &HOOCOCOCO& Borderstyle = 1 'Fixed Single Caption = "CPU 8088" ClientHeight = 6690 ClientLeft = -210 ClientTop = 720 ClientWldth = 9510 Beginproperty Font iOBE35203-8F91-

Name = "Courier" Slze = 9.15

Weight Charset = o Underline = O 'False Italic = O 'False Strikethrough = O 'False

llCE-9DE3-00AA004BB851;

= 400

Endproperty Height = 7380 HelpContextID = 3 Left = -270 LlnkTopic = "Forml" MaxButton = O 'False MinButton = O 'False ScaleHeight = 6690 Scalewidth = 9510 TOP Visible Width = 9630 Windowstate = 2 'Maximized Begin VB.TextBox DE

= 90 = O 'False

Backcolor = &H00000000& Beginproperty Font iOBE35203-

8F91-llCE-9DE3-00AAOO4BB85l)

Serif" Name = "MS Sans

Size Charset

= 8.25 = o

Weight Underline

= 700

Italic = O 'False

Strikethrough = O 'False = O 'False

EndProperty Forecolor = &HOOFFFFFF& Height Left

= 285 = 4680

MaxLength TabIndex

= 9

Text = 83 = "0000: 0000"

Width = 1095 TOP = 2280

End Begin VB.CommandButton Command3

Caption

Beginproperty Font (OBE35203-

- -

"Entrar-Dato-Mod"

8F91-llCE-9DE3-00AAOO4BB85l]

Serlf" Name = "MS Sans

Size = 8.25 Charset = o Welght = 400 Underline = O 'False Italic = O 'False Strikethrough = O 'False

Endproperty

0bjeto.SelStart = 4 Else

End If KeyAscii = O

End If End Sub

Height HelpContextID = Left TabIndex TOP WhatsThisHelpID = Width

- -

- - - - - -

- -

End Begin VB.TextBox 12

Height Left TabIndex Text TOP Visible Width

- - - - - - - - - - - - - -

End Begin VB.TextBox Ll

Height Left TabIndex Text TOP Visible Width

- - - - - - - - - - - - - -

End

255 2 6120 79 6600 1 1575

285 8520 78

5160 "Textl"

255 O 'False

285 8160 71

5160 "Textl"

O 'False 375

Begin VB.CommandButton Command2 Caption

Beginproperty Font iOBE35203-

- -

"&Desensamblador"

8F91-llCE-9DE3-0OAAOO4BB85l) Name = "MS Sans

Serlf" Size Charset Weight Underline Italic Strikethrough

8.25 O 400 O 'False O 'False O 'False

Endproperty Height Left TabIndex = 76

Width

= 255 = 2640

TOP = 7080 = 1335

End Begin VB.TextBox intervalo

Enabled Beginproperty Font (OBE35203-

= O 'False

8F91-llCE-9DE3-00AAO04BB851] Name = "MS Sans

Size = 8.25 Charset Weiqht

= = o = 400

Underline Italic

= O 'False

Strikethrough = O 'False = O 'False

Serif"

Height Endproperty

Left = 4320 MaxLength = 5 TabIndex = 73 Text = " 1 0 0 0 " TOP Width

= 285

= 6600 = 495

End Begin VB.CheckBox Checkl

Caption = "Checkl"

Alejandro Montejo Rubio 3

Page 78: Ruíz !Y - 148.206.53.84148.206.53.84/tesiuami/UAM5688.pdfMODOS DE DIRECCIONAMIENTO ... El Intel 4004 es el primer microprocesador aparecido en el ... se almacenan en un stack de 4

Name

Charset Size

Weight Underline Italic Strlkethrough

Endproperty Height Left Tablndex TOP Width

Serif"

- - - - - - - - - -

End Begin VB.TextBox MAR

Enabled Height - - Left Tablndex Text Top Visible Width

- -

- - - - - - - - - - - -

End Begin VB.TextBox T12

Helght - - Left TabIndex Text Top Visible Width

- - - - - - - - - - - -

End Begin VB.TextBox T2

Height - - Left TabIndex Text -

TOP Visible Width

- - - - - - - - - - -

End Begin VB.TextBox T1

Enabled Height - - Left TabIndex Text TOP Visible Width

- -

- - - - - - - - - - - -

End Begin VB.TextBox AL

BackColor - -

270 Left = 2880 TabIndex = 71 Top = 6585 Width = 255

End Begin VB.CommandButton Command1

Caption = "&Reset" Beginproperty Font {OBE35203-

8F51-llCE-9DE3-00AAOO4BB851) = "MS Sans

= 8.25 = o = 400 = O 'False = O 'False = O 'False

255 1680 64 6000 8 5 5

O 'False 285 8160 63 "MAR" 4920 O 'False 615

285 87 60 62 "T12" 4920 O 'False 615

495 9360 61 "T2 '' 4920 O 'False 615

O 'False 285 8760 60 "T1" 5160 O 'False 615

&H00000000& BeglnProperty Font iOBE35203-

8F91-llCE-5DE3-00AAOO4BB851) Name = "MS Sans

Size Charset

= 8.25

Weight = o

Underline = 400

Italic = O 'False

Strikethrough = O 'False = O 'False

Endproperty

Serif"

Alejandro Montejo Rubio

Simulador del Sistema Mínimo Inte l 8088 Proyecto Terminal

Forecolor = &HOOOOFFOO& Height = 285 Left = 6840 TabIndex Text

= 55 = " 0 0 "

Width = 375 Top = 1200

End Begin VB.TextBox BL

BackColor = &H00000000& Beginproperty Font iOBE35203-

8F91-llCE-5DE3-00AAOO4BB851)

Serif" Name = "MS Sans

Size Charset

= 8.25

Weight = o = 400

Underline Italic

= O 'False

Strlkethrough = 0 'False = O 'False

Endproperty ForeColor = &HOOOOFFOO& Height = 285 Left = 6840 TabIndex = 54 Text = 11 0 0 I T

TOP Width

= 1560 = 375

End Begin VB.TextBox CL

BackColor = &H00000000& Beginproperty Font (0BE35203-

8F91-1lCE-5DE3-00AAOO4BB851] Name = "MS Sans

Charset Size = 8.25

Weight Underline = O 'False Italic = O 'False Strikethrough = O 'False

Serif"

= o = 400

Endproperty Forecolor = &HOOOOFFOO& Height = 285 Left = 6840 Tablndex Text

= 53 = "00"

TOP Wldth

= 1920 = 315

End Begin VB.TextBox DL

BackColor = &H00000000& Beginproperty Font (OBE35203-

8F91-llCE-9DE3-00AAO04BB851) Name = "MS Sans

Charset Size = 8.25

Weight = 400 Underline = O 'False Italic = O 'False Strikethrough = O 'False

Serif"

= o

Endproperty Forecolor = &HOOOOFFOO& Height = 285 Left = 6840 Tablndex = 52 Text = "00"

Width TOP = 2280

= 375 End Begin VB.TextBox AH

BackColor = &H00000000& Beginproperty Font iOBE35203-

8F91-llCE-9DE3-00AAO04BB8511

2

Page 79: Ruíz !Y - 148.206.53.84148.206.53.84/tesiuami/UAM5688.pdfMODOS DE DIRECCIONAMIENTO ... El Intel 4004 es el primer microprocesador aparecido en el ... se almacenan en un stack de 4

Name = "MS Sans

Size Charset

= 8.25 = o

Weight Underline

= 400

Italic = O 'False = O 'False

Strikethrough = O 'False Endproperty ForeColor = &HOOOOFFOO& Height Left TabIndex Text TOP Width

Serif"

= 285 = 6480 = 47 = "00" = 1200 = 375

End Begin VB.TextBox BH

Backcolor &H00000000& Beginproperty Font (OBE35203-

8F91-llCE-5DE3-00AAOO4BB851) Name = "MS Sans

Size Charset Weight = 400 Underline = O 'False Italic = O 'False Strikethrough = O 'False

Serif" = 8.25 = o

Endproperty ForeColor = &HOOOOFFOO& Height = 285 Left = 6480 TabIndex = 46 Text = I. 0 0 11

TOP Width

= 1560 = 315

End Begin VB.TextBox CH

BackColor = &H00000000& Beginproperty Font (OBE35203-

8F51-llCE-5DE3-00AAO04BB851)

Serif" Name = "MS Sans

Size = 8.25 Charset = o Weight = 400 Underline = O 'False Italic = O 'False Strikethrough = O 'False

Endproperty ForeColor = &HOOOOFFOO& Height Left

= 285

TabIndex = 6480

Text = 45 = "00"

Width TOP = 1520

= 375 End Begin VB.TextBox DH

Backcolor = &H00000000& Beginproperty Font (OBE35203-

8F51-llCE-5DE3-00AAO04BB851) Name

Charset Size = 8.25

= o Weight Underline

= 400

Italic = O 'False

Strikethrough = O 'False = O 'False

Endproperty

Height Forecolor = &HOOOOFFOO&

Left = 6480 TabIndex = 44

Serif" = "MS Sans

= 285

Alejandro Montejo Rubio

Simulador del Sistema Mínimo Intel 8088 Proyecto Terminal

Text = "00"

Width TOP = 2280

= 315 End Begin VB.TextBox Nuevovalor

BackColor = &H00000000& Forecolor = &HOOOOFFOO& Height = 285 Left = 7080 MaxLength = 2 TabIndex = 43 Text TOP Width

= I I 0 0 11

= 6120 = 455

End Begin VB.TextBox DesplazamientoDump

BackColor = &H00000000& Beginproperty FQnt (OBE35203-

8F51-i~CE-5DE3-00AAO04BB851)

Serif" Name = "MS Sans

Size Charset

= 8.25

Weight = o

Underline = 400

Italic = O 'False

Strikethrough = O 'False = O 'False

Endproperty Forecolor = &HOOOOFFOO& Height Left

= 285

MaxLength = 5880 = 4

TabIndex Text

= 38 = "0000"

Width Top = 6120

= 615 End Begin VB.TextBox SegmentoDump

Backcolor = &H00000000& Peginproperty Font (OBE35203-

8F51-llCE-9DE3-00AA004BB851) Name = "MS Sans

Size Charset

= 8.25 = o

Weight = 400 Underline Italic

= O 'False

Strikethrough = O 'False = O 'False

Endproperty ForeColor = &HOOOOFFOO& Height = 285 Left = 3560 MaxLength = 4 TabIndex = 37 Text = "0000" TOP Width

Serif"

= 6120 = 615

End Begin VB. TextRox Piimp

BackColor = &HOOFF0000& Forecolor = &HOOFFFFOO& Height = 3015 Left = 2880 Locked = -1 'True MultiLine = -1 'True TabIndex = 36 Top = 3120 Width = 4655

End Begin VB. Frame Frame1

BackColor = &HOOOOOOFF& Caption

Beginproperty Font (OBE35203- memoria"

= "Mapa de

8F~1-llCE-~DE3-00AA004BB851)

3

Page 80: Ruíz !Y - 148.206.53.84148.206.53.84/tesiuami/UAM5688.pdfMODOS DE DIRECCIONAMIENTO ... El Intel 4004 es el primer microprocesador aparecido en el ... se almacenan en un stack de 4

Name = "MS Sans

Size Charset

= 8.25

Weight = o = 400

Underline Italic

= O 'False

Strikethrough = O 'False = O 'False

Height Endproperty

Left TabIndex = 34

Width = 3135 Begin VB.TextBox Eproml

Serif"

= 6135 = 7920

TOP = 1320

- -

&HOOFFFFOO& BackColor

Beginproperty Font (OBE35203-

Name = "MS

Size = 8.25 Charset Weight

= o = 700

Underline = o Italic = o Strikethrough = O

8F91-llCE-9DE3-00AAO04BB851)

Sans Serif"

' False

' False

' False Endproperty ForeColor

Height = 1155 Left = 15 Locked = -1 'True MultiLine = -1 'True TabIndex = 35 Text

- -

&H00000000&

- -

"cpuint-l. frx": O000 TOP = 240 Width

End Begin VB.Labe1 Label35

= 3105

Appearance = O 'Flat Backcolor

Caption = "ES estra

Beginproperty Font (OBE35203-

- -

&HOOOOFFOO&

OCOOH - OFFFH"

8F91-llCE-9DE3-00AAO04BB851) Name

Size Charset

= 8.25 = o

Weiqht = 700 Underline = o Italic = o Strikethrough = O

Sans Serlf" = "MS

' False

' False

' False Endproperty Forecolor

Height = 255 Left = 240 TabIndex Top Width

- -

&H80000008&

= 75 = 4680 = 2655

End Begin VB.Labe1 Label30

Appearance = O 'Flat Backcolor - -

&HOOOOFFOO&

Simulador del Sistema Minimo Inte l 8088 Proyecto Terminal

Caption = "SS pila

Beginproperty Font (OBE35203-

N ame = "MS

Size Charset

= 8.25

Weight = o

Underline = 700 = o

Italic = o Strikethrough = O

0800H - OBFFH"

8F91-llCE-9DE3-00AAO04BB851)

Sans Serif"

I False

' False

' False Endproperty Forecolor

Height = 255 Left = 240 TabIndex = 69

Width TOP = 4920

= 2655

- -

&H80002308&

End Begin VB.Label Label36

Alignment = 2 'Center Backcolor

Borderstyle = 1 'Fixed

Caption = "MEMORIA

Beginproperty Font (OBE35203-

Name = "MS

Size = 13.5 Charset = o Welght = 700 Underline = o Italic = o Strikethrough = O

- -

&HOOOOOOFF&

Single

LIBRE"

8F91-llCE-9DE3-00AA004BB851)

Sans Serif"

'False

' False

'False Endproperty Height Left

= 495

TabIndex = 120 = 82

Top = 2640 Width = 2625

End Begin VB.Label Label32

Appearance = O 'Flat BackColor

Caption = "CS código

Beginpropert\: Font (OBE35203-

- -

&HOOOOFFOO&

OOOOH - 03FFH"

8F91-ilCE-9DE3-00AAO04BB851)

Sans Serif" Name

Size Charset Weight Underline

Italic

Strikethrough

'False

'False

' False Endproperty Forecolor - -

&H80000008& Height - -

Left - -

= 8.25 = o = 700 = o

= o

= o

255 240

Alejandro Montejo Rubio 4

Page 81: Ruíz !Y - 148.206.53.84148.206.53.84/tesiuami/UAM5688.pdfMODOS DE DIRECCIONAMIENTO ... El Intel 4004 es el primer microprocesador aparecido en el ... se almacenan en un stack de 4

TabIndex TO? Width

= 70 = 5400 = 2775

End Begin VB.Labe1 Label29

Appearance = O 'Flat BackColor

Caption = "DS datos

Beginproperty Font (OBE35203-

- -

&HOOOOFFOO&

0400H - 07FFH"

8F91-llCE-9DE3-00AAO04BB851~ Name

Charset Size = 8.25

= o Weight = 100 Underline = o Italic = o Strikethrough = O

Sans Serif" = "MS

' False

' False

' False Endproperty Forecolor

Height Left

= 255

TabIndex = 240 = 68

Width = 2775

- -

&H80000008&

TOP = 5190

End Begin VB.Labe1 Label28

BackColor

Caption = "OO0OH

Beginproperty Font IOBE35203-

Name = "MS

Charset Size = 8.25

Weight = o = 700

Underline = o Italic = o Strikethrough = O

- -

&HOO@OFF@O&

Inicio de Ram"

8F91-llCE-9DE3-00AAO04BB851)

Sans Serif''

' False

' False

' False Endproperty Height Left TabIndex TOP Width

= 255 = 120 = 67 = 5790 = 2535

End Begin VB.Labe1 Label27

BackColor

Borderstyle = 1 'Fixed

Caption

Beginproperty Font (OBE35203-

Name = "MS

Charset Size = 8.25

Weight = o = 700

Underline = o Italic = o

- -

&HOOO@FFOO&

Single

MEMORIA RAM" = "FFFFH

8F91-llCE-9DE3-0OAAO04BB851)

Sans Serif"

' False

' False

Alejandro Montejo Rubio

Simulador del Sistema Mínimo Intel 8088 Proyecto Terminal

' False Strikethrough = O

Endproperty Height Left TabIndex = 66 To? = 4380 Width = 3135

= 1725 = o

End End Begin VB.ComandButton ComandoAnima

Captlon = "&Anima" Beginproperty Font IOBE35203-

8F91-llCE-9DE3-00AA004BB851) Name = "MS Sans

Slze Charset

= 8.25

Welght = o

Underline = 400

Italic = O 'False = O 'False

Endproperty Strikethrough = O 'False

Height Left TabIndex To? Width

Serif"

= 255 = 1 6 8 0 = 33 = 6360 = 855

End Begin VB.Timer Anima

Enabled Interval

= O 'False

Left = 200 = 8760

TO? = 4920 End Begin VB.CommandButton Siguiente

Caption = "&Slguiente" SPginProperty Font (OBE35203-

8F91-1lCE-9DE3-00AAOO4BB851) Name = "MS Sans

Size Charset

= 8.25 = o

Weight Underline

= 400 = O 'False

Italic = O 'False Strikethrough = O 'False

Serif"

Endproperty Height = 255 Left = 1680 TabIndex = 31

Width = 855 TO? = 6720

End Begin VB.TextBox BusDatos

Alignment = 2 'Center BackColor = &HOOOOOOO0& Enabled EeginProperty Font (OBE35203-

= 0 'False

8F91-llCE-9DE3-00AAO04BB851] Name = "MS Sans

Size Charset

= 8.25

Weight = o

Underline = 400

Italic = O 'False

Strikethrough = 0 'False = 0 'False

Endproperty Forecolor Height

= &HO@OO@@FF&

Left = 285

TabIndex = 5040

Text = 30 = "0000"

Width = 615

Serif"

TOP = 1560

5

Page 82: Ruíz !Y - 148.206.53.84148.206.53.84/tesiuami/UAM5688.pdfMODOS DE DIRECCIONAMIENTO ... El Intel 4004 es el primer microprocesador aparecido en el ... se almacenan en un stack de 4

End Begin VB.TextBox BusDirecciones

BackColor = &H00000000& Enabled Beginproperty Font lOBE35203-

= O 'False

8F91-llCE-9DE3-00AAOO4BB85l) Name = "MS Sans

Size Charset Weight = 400 Underline = O 'False Italic Strikethrough = 0 'False

= O 'False

Endproperty Forecolor = &HOOOOOOFF& Height Left TabIndex = 28 Text = "00000"

Width = 615

Serlf" = 8.25 = o

= 285 = 5040

Top = 1 2 0 0

End Begin VB.TextBox DX

Backcolor = &HOOOOOOO0& Beginproperty Font iOBE35203-

8F91-llCE-9DE3-00AAO04BB851)

Serif" Name = "MS Sans

Size Charset

= 8.25

Weight = o = 400

Underline Italic

= O 'False = O 'False

Strikethrough = O 'False Endproperty Forecolor = &HOOOOFF00& Height = 285 Left TabIndex Text = " 0 0 0 0 "

Width

= 2160 = 26

TOP = 2400

End Begin VB.TextBox IP

= 615

BackColor = &H00000000& Beginproperty Font (OBE35203-

8F91-llCE-9DE3-00AAOO4BE851} Name = "MS Sans

Charset Size = 8.25

Welght = 400 Underline = O 'False Italic = O 'False Strikethrough = O 'False

Serlf"

= o

Endproperty Forecolor = &HOOOOFFOO& Helght Left

= 285 = 2160

MaxLength TabIndex

= 4

Text = 25 = " 0 0 0 0 "

Width = 615 TOP = 5640

End Begin VB.TextBox SP

Backcolor = &H00000000& Beginproperty Font (OBE35203-

8F91-llCE-9DE3-00AAO04EB851}

Serif" Name = "MS Sans

Size = 8.25 Charset = o Weight = 400 Underline = O 'False

Alejandro Montejo Rubio

Simulador del Sistema Minimo Intel 8088 Proyecto Terminal

Itallc Strikethrough = 0 'False

= O 'False

Endproperty Forecolor = &HOOOOFFOO& Height = 285 Left TabIndex Text = " 0 0 0 0 " TOP Width

= 2160 = 23

= 5280 = 615

End Begin VB.TextBox ES

BackColor = &H00000000& Beginproperty Font lOBE35203-

8F91-11CE-9DE3-00AAO04BB851} Name = "MS Sans

Charset Size = 8.25

= o Weight Underline

= 400 = O 'False

Italic = O 'False Strikethrough = O 'False

Serif"

Endproperty Forecolor = &HOOOOFFOO& Height = 285 Left = 2160 TabIndex Text Top Width

= 21 = " 0 0 0 0 " = 4920 = 615

End Begin VB.TextBox SS

Backcolor = &H00000000& Beginproperty Font iOBE35203-

8F91-llCE-9DE3-00AAO04BB851}

Serif" Name = "MS Sans

Charset Size = 8.25

Weight = o = 400

Underline Italic

= O 'False = O 'False

Strikethrough = O 'False Endproperty Forecolor = &HOOOOFFOO& Height Left TabIndex = 1 9 Text = " 0 0 0 0 " Top = 4560 Width = 615

= 285 = 2160

End Begin VB.TextBox DS

Backcolor = &H00000000& Beginproperty Font (OBE35203-

8F91-llCE-9DE3-00AAO04BB851} N ame = "MS Sans

Size Charset

= 8.25

Weight = o

Underline = 400 = O 'False

Italic = O 'False Strikethrough = O 'False

Serif"

Endproperty Forecolor = &HOOOOFFOO& Height Left TabIndex Text

Width

= 285 = 2160 = 11 = " 0 0 0 0 "

= 615 TOP = 4200

End Begin VB.TextBox CS

BackColor = &HOO000000&

6

Page 83: Ruíz !Y - 148.206.53.84148.206.53.84/tesiuami/UAM5688.pdfMODOS DE DIRECCIONAMIENTO ... El Intel 4004 es el primer microprocesador aparecido en el ... se almacenan en un stack de 4

8F91-llCE-9DE3-00AAO04BB651} BeginProperty Font (OBE35203-

Name = "MS Sans

Size = 8.25 Charset = o Weight = 400 Underline Italic

= O 'False

Strikethrough = O 'False = O 'False

Endproperty Forecolor = &HOOOOFFOO& Height Left TabIndex Text

Width

Serif"

= 265 = 2160 = 15 == " 0 0 0 0 "

= 615 TOP = 3640

End Begin VB.TextBox BP

Backcolor = &H00000000& BeglnProperty Font iOBE35203-

8F91-llCE-9DE3-00AAO04BB851}

Serif" Name = "MS Sans

Size Charset

= 8.25

Weight = o = 400

Underline Italic

= O 'False = O 'False

Strikethrough = O 'False Endproperty Forecolor = &HOOOOFFOO& Height = 285 Left = 2160 TabIndex = 13 Text = " 0 0 0 0 "

Width TOP = 3480

End Begln VB.TextBox DI

= 615

Backcolor = &H00000000& Beginproperty Font (OBE35203-

8F91-llCE-9DE3-00AAO04BB851) Name

Size Charset Weight = 400 Underline = O 'False Italic = O 'False Strikethrough = 0 'False

Serif" = "MS Sans

= 6.25 = o

Endproperty Forecolor = &HOOOOFFOO& Height Left TabIndex Text TOP Width

= 285 = 2160 = 11 = " 0 0 0 0 " = 3120 = 615

End Begin VB.TextBox SI

Backcolor = &H00000000& Beginproperty Font (OBE35203-

8F91-llCE-9DE3-00AAOO4BB851} Name = "MS Sans

Charset Size = 8.25

= o Weight Underline

= 4 0 0 = O 'False

Italic = O 'False Strikethrough = O 'False

Serif"

Endproperty Forecolor = &HOOOOFFOO& Height = 285

Alejandro Montejo Rubio

Simulador del Sistema Mínimo Intel 8088 Proyecto Terminal

Left = 2160 TabIndex = 9 Text = " 0 0 0 0 "

Width TOP = 2760

End Begln VB.TextBox CX

= 615

Backcolor = &H00000000& Beginproperty Font (OBE35203-

8F91-llCE-9DE3-00AAO04BB651) Name

Charset Size = 6.25

Weight = 400 Underline = O 'False Italic Strikethrough = O 'False

= O 'False

Endproperty ForeColor = &HOOOOFFOO& Height = 265 Left TabIndex Text TOP Width

Serif" = "MS Sans

= o

= 2 1 6 0 = 6 = " 0 0 0 0 " = 2040 = 615

End Begin VB.TextBox BX

Backcolor = &HOOOOOOOO& Beginproperty Font iOBE35203-

8F91-llCE-9DE3-00AAO04BB651) Name = "MS Sans

Charset Size = 8.25

Weight = o = 400

Underline Italic

= O 'False = O 'False

Strikethrough = O 'False Endproperty Forecolor = &HOOOOFFOO& Height Left TabIndex = 4 Text = " 0 0 0 0 " TOP Width

Serif"

= 285 = 2160

= 1660 = 615

End Begin VB.TextBox AX

BackColor = &H00000000& Beginproperty Font (OBE35203-

8F91-llCE-9DE3-00AA004BB6511

Serif" Name = "MS Sans

Size Charset

= 8.25

Weight = o = 400

Underline Italic

= O 'False

Strikethrough = O 'False = O 'False

Endproperty Forecolor = &HOOOOFFOO& Helght Left TabIndex Text

Width

= 265 = 2160 = 2 = " 0 0 0 0 "

End = 615

Begin VB.CommandButton fin

TOP = 1320

Caption = "Fi&n" Beginproperty Font (OBE35203-

8F91-llCE-9DE3-00AAO04BB851) Name

Size = 8.25 Serlf"

= "MS Sans

7

Page 84: Ruíz !Y - 148.206.53.84148.206.53.84/tesiuami/UAM5688.pdfMODOS DE DIRECCIONAMIENTO ... El Intel 4004 es el primer microprocesador aparecido en el ... se almacenan en un stack de 4

Charset Weight

= o = 400

Underline Italic

= O 'False = 0 'False

Strikethrough = O 'False Endproperty Height = 255 Left = 1680 TabIndex = o Width TOP = 7080

= 855 End Begin VB.PictureBox SSPanell

AutoSize = -1 'True Height 7 6375 Left = 7800 ScaleHeight = 6315 Scalewidth = 3330 TabIndex = 85

Width TOP = 1200

= 3390 End Begin VB.PictureBox Proceso

Height = 255 Left = 4200 ScaleHeight = 195 Scalewidth = 3435 TabIndex TOP

= 81

Width = 7200 = 3495

End Begin VB.PictureBox AbrirMemoria

Height = 480 Left = 9840 ScaleHeight = 420 Scalewidth = 1140 TabIndex = 86

Width = 1200 TOP = 1800

End Begln VB.Labe1 Label17

Borderstyle = 1 'Fixed

Caption = "Segmento" Beginproperty Font iOBE35203-

Single

8F91-llCE-9DE3-00AAO04BB851) Name = "MS Sans

lse lse lse

Serif" Size Charset

= 8.25

Weight = o

Underline = 400

Italic = O 'Fa

Strikethrough = O 'Fa = O 'Fa

EndProperty Height = 285 Left = 2880 TabIndex = 40

Width = 1095 TOP = 6120

End Begin VB.Labe1 Label38

Borderstyle = 1 'Fixed Slngle

Captlon = "Dirección

BeglnProperty Font iOBE35203- Edltar"

8F91-llCE-9DE3-00AAO04BB851) Name = "MS Sans

Charset Size = 8.25

Weight = 400 Underline = 0 'False Italic = 0 'False Strikethrough = O 'False

Serif"

= o

Alejandro Montejo Rubio

Simulador del Sistema Mínimo Intel 8088 Proyecto Terminal

Endproperty Height Left TabIndex = 84 Top Width

= 270 = 3000

= 2280 = 1455

End Begin VB.Labe1 Label37

Borderstyle = 1 'Fixed

BeginProperty Font (OBE35203- Single

8F91-llCE-9DE3-00AAO04BB851) Name = "MS Sans

Size Charset Welght Underline = O 'False Italic = O 'False Strikethrough = 0 'False

Serif" = 8.25 = o = 400

Height Endproperty

Left = 255 = 4200

TabIndex = 8 0 TOP = 6960 Width = 3495

End Begin VB.Labe1 Label34

Alignment = 2 'Center Borderstyle = 1 'Fixed

Caption Beginproperty Font (OBE35203-

= "Intervalo" Single

8F91-llCE-9DE3-00AAO04BB851) Name = "MS Sans

Size Charset

= 8.25

Weight = o = 400

Underline = O 'False Italic Strikethrough = O 'False

= O 'False

Endproperty Height Left TabIndex

Width

Serif"

= 300 = 4920 = 74

= 1095 TOP = 6600

End Begin VB.Labe1 Label33

Backstyle = o Borderstyle = 1 'Fixed

Caption = "A Tiempo" BeglnProperty Font iOBE35203-

'Transparent

Single

8F91-llSE-9DE3-00AAO04BB851] Name

Size = 8.25 Charset = o Weight = 400 Underline = O 'False Italic = O 'False Strikethrough = O 'False

Serif" = "MS Sans

EndProperty Height = 270 Left = 3240 TabIndex Top Width

= 72 = 6585 = 855

End Begin VB.Labe1 Ayudarapida

Alignment = 2 'Center BackColor = &HOOCOCOCO&

8

Page 85: Ruíz !Y - 148.206.53.84148.206.53.84/tesiuami/UAM5688.pdfMODOS DE DIRECCIONAMIENTO ... El Intel 4004 es el primer microprocesador aparecido en el ... se almacenan en un stack de 4

Borderstyle = 1 'Fixed

Caption = "Labe127" Beginproperty Font (OBE35203-

Slngle

8F91-llCE-9DE3-00AAO04BB851) Name = "MS Serif" Size Charset

= 8.25

Weight = o = 400

Underline Italic

= O 'False = O 'False

Strikethrough = O 'False Endproperty Forecolor = &H00000000& Height Left

= 255

TabIndex = 1560 = 65 = 7560

Wldth = 9615 TOP

End Begin VB.Label Label26

Alignment = 2 'Center Borderstyle = 1 'Fixed

Caption = MAL VI Beginproperty Font IOBE35203-

Single

8F91-llCE-9DE3-00AAO04BB8511 Name = "MS Sans

Size = 8.25 Charset Weight

= o = 400

Underline Italic

= O 'False

Strikethrough = 0 'False = O 'False

Endproperty Height Left TabIndex = 59

Wldth

Serif"

= 285 = 7200

TOP = 1200

End Begin VB.Labe1 Label25

= 375

Alignment Borderstyle

= 2 'Center = 1 'Fixed

Caption = "BL" Beginproperty Font (OBE35203-

Single

8F91-llCE-9DE3-00AAO04BB851) Name = "MS Sans

Size Charset Weight = 400 Underline = O 'False Italic = O 'False Strikethrough = O 'False

Serif" = 8.25 = o

Height EndProperty

Left = 7200 TabIndex = 58 TOP = 1560 Width = 375

= 285

End Begin VB.Label Label24

Alignment = 2 'Center Borderstyle = 1 ' Flxed

Caption Beginproperty Font íOBE35203-

= "CL" Single

8F91-llCE-9DE3-OOAAO04BB851) Name = "MS Sans

Size Charset Weight

Serif" = 8.25 = o = 400

Alejandro Montejo Rubio

Simulador del Sistema Minimo Intel 8088 Proyecto Terminal

Underline = O 'False Italic Strikethrough = O 'False

= O 'False

Endproperty Height = 285 Left = 7200 TabIndex TOP

= 57

Width = 1920 = 315

End Begin VB.Labe1 Label23

Alignment Borderstyle

= 2 'Center = 1 'Fixed

Caption BeglnProperty Font (OBE35203-

= "DL" Single

8F91-llCE-9DE3-00AAO04BB851) Name = "MS Sans

Size = 8.25 Charset = o Weight Underllne

= 400 = O 'False

Italic Strikethrough = O 'False

= O 'False

Endproperty Height = 285 Left = 7200 TabIndex = 56

Width TOP = 2280

Serif"

= 375 End Begin VB.Labe1 Label22

Alignment = 2 'Center QorderStyle = 1 'Fixed

Caption = "AH" BeglnProperty Font (OBE35203-

Single

8F91-llCE-9DE3-00AA004BB851) Name = "MS Sans

Size Charset

= 8.25 = o

Weight Underline

= 400

Italic = O 'False = O 'False

Strikethrough = O 'False

Height Endproperty

= 285 Left = 6120 TabIndex TOP

= 51

Width = 1200 = 315

Serif"

End Begin VB.Label Label21

4lignment = 2 'Center Borderstyle = 1 'Fixed

Captlon = "BH" Beginproperty Font íOBE35203-

Single

8F91-1lCE-9DE3-00AAOO4BB851) Name = "MS Sans

Size Charset

= 8.25

Weight = o

Underline = 400

Italic = O 'False = O 'False

Endproperty Strikethrough = O 'False

Height Left TabIndex TOP Width

Serif"

= 285 = 6120 = 50 = 1560 = 315

End

9

Page 86: Ruíz !Y - 148.206.53.84148.206.53.84/tesiuami/UAM5688.pdfMODOS DE DIRECCIONAMIENTO ... El Intel 4004 es el primer microprocesador aparecido en el ... se almacenan en un stack de 4

Begin VB.Labe1 Label20 Alignment = 2 'Center Borderstyle = 1 'Fixed

Caption = "CH" BeglnProperty Font lOBE35203-

Single

8F91-llCE-9DE3-00AAO04BB8511 Name = "MS Sans

Size = 8.25 Charset Weight

= o

Underline = 400 = O 'False

Italic Strikethrough = O 'False

= O 'False

Height Endproperty

Left TabIndex TOP Width

Serif"

= 285 = 6120 = 49 = 1920 = 375

End Begln VB.Labe1 Label19

Alignment Borderstyle

= 2 'Center = 1 'Fixed

Caption BeginProperty Font (OBE35203-

= " DH" Single

8F91-llCE-9DE3-00AAO04BB851) Name = "MS Sans

Charset Size = 8.25

Weight = 400 Underline Italic

= 0 'False = O 'False

Strikethrough = O 'False

Height Endproperty

Left = 6120 TabIndex = 48

Width

Serif"

= o

= 285

TOP = 2280 = 375

End Begin VB.Label text19

Alignment = 2 'Center Borderstyle = 1 'Fixed

Caption = "Valor" BeginProperty Font (OBE35203-

Single

8F91-llCE-9DE3-00AAO04BB851] Name

Size = 8.25

Weight Charset = o

= 400 Underline Itallc

= 0 'False

Strikethrough = O 'False = O 'False

EndProperty Height = 270 Left = 6480 TabIndex TOP Width

Serlf" = "MS Sans

= 42 = 6120 = 615

End Begin VB.Labe1 Label18

Alignment = 2 'Center Backcolor = &HOOCOCOCO& Borderstyle = 1 'Fixed

Caption BeginProperty Font lOBE35203-

Single = "Dump"

8F91-llCE-9DE3-00AAO04BB851) Name = "MS Sans

Serif"

Alejandro Montejo Rubio

Simulador del Sistema Mínimo Intel 8088 Proyecto Terminal

Size = 8.25 Charset = o Weight Underline

= 400

Italic = O 'False = O 'False

Strlkethrough = 0 'False Endproperty ForeColor = &H00000000& Height = 255 Left = 3000 TabIndex = 41

Width TOP = 2640

= 4815 End Begin VB.Labe1 Label16

Single

"Desplazamiento"

Borderstyle = 1 'Fixed

Caption - -

BeginProperty Font (OBE35203- 8F91-llCE-9DE3-00AA004BB851)

Serif" Name = "MS Sans

Size Charset Weight Underline = O 'False Italic = O 'False Strlkethrough = O 'False

= 8.25 = o = 400

EndProperty Height = 285 Left = 4680 TabIndex = 39 TOP Width

= 6120 = 1215

End Begin VB.Labe1 Estado

Alignment = 2 'Center Backstyle = o Borderstyle = 1 'Fixed

Caption = "CICLO DE

BeginProperty Font iOBE35203-

'Transparent

Single

FECH"

8F91-llCE-9DE3-00AAO04BB851] Name = "MS Sans

Slze = 8.25 Charset = o Weight Underline

= 400

Italic = O 'False

Strikethrough = O 'False = O 'False

Serif"

Endproperty qeight Left TabIndex = 32

Wldth

= 255 = 3000

TOP = 1920

End Begin VB.Labe1 Label15

= 3015

Borderstyle = 1 'Fixed

Captlon = "Bus Datos" BeginProperty Font lOBE35203-

Single

8F91-llCE-9DE3-00AAO04BB851) Name

Size = 8.25 Charset Weight = 400

= o

Underline Italic

= O 'False

Strikethrough = O 'False = O 'False

Endproperty

Serif" = "MS Sans

10

Page 87: Ruíz !Y - 148.206.53.84148.206.53.84/tesiuami/UAM5688.pdfMODOS DE DIRECCIONAMIENTO ... El Intel 4004 es el primer microprocesador aparecido en el ... se almacenan en un stack de 4

Height Left TabIndex Top Width

= 270 = 3000 = 29 = 1560 = 1935

End Begin VB.Labe1 Label14

Borderstyle = 1 'Fixed

Caption = "Bus

Beginproperty Font (OBE35203-

Single

Direcclones"

8F91-llCE-9DE3-00AAO04BB851) Name = "MS Sans

Size Charset Weight = 400 Underline = O 'False Italic = O 'False Strikethrough = O 'False

Serlf" = 8.25 = o

Height Endproperty

Left = 3000 TabIndex = 21

Width

= 285

TOP = 1200 = 1935

End Begin VB.Labe1 Label13

BackColor = &HOOCOCOCO& Borderstyle = 1 'Fixed

Caption Beginproperty Font (OBE35203-

Single = 11 I I8

8F91-llCE-9DE3-00AAOO4BB851) Name = "MS Sans

Charset Size = 8.25

Welght Underline = O 'False Italic = O 'False Strikethrough = O 'False

Serif"

= o = 400

EndProperty Height Left TabIndex

Width

= 285 = 1680 = 24

= 375 TOP = 5640

End Begin VB.Labe1 Label12

Borderstyle = 1 'Fixed

Caption Beginproperty Font (OBE35203-

= "SP" Single

8F91-llCE-9DE3-00AAO04BB851) Name

Size Charset Weight = 400 Underline = O 'False Italic = O 'False Strikethrough = O 'False

Serif" = "MS Sans

= 8.25 = o

Endproperty Helght = 285 Left = 1680 TabIndex = 22

Width TOP = 5280

End Begin VB.Labe1 Label11

= 3 1 5

Borderstyle = 1 'Fixed

Caption = "ES" Single

Alejandro Montejo Rubio

Simulador del Sistema Mínimo Inte l 8088 Proyecto Terminal

8F91-llCE-9DE3-00AA004BB851) Beginproperty Font (OBE35203-

Serif" Name = "MS Sans

Size Charset Weight = 400 Underline = O 'False Italic = O 'False Strikethrough = O 'False

= 8.25 = o

Endproperty Height T,ef t 1 abIndex Top Wldth

= 285 = 1680 = 20 = 4920 = 315

End Begin VB.Labe1 Label10

Borderstyle = 1 Fixed

Caption Beginproperty Font (OBE35203-

= "SS" Single

8F91-llCE-9DE3-00AAO04BB851) Name = "MS Sans

Slze = 8.25 Charset = o Weight = 400 Underline = O 'False Italic = O 'False Strikethrough = O 'False

Serif"

Endproperty Height Left 1 dbIndex = 18

Width

= 285 = 1680

TOP = 4560

End Begin VB.Labe1 Label9

= 375

Borderstyle = 1 'Fixed

Caption Beginproperty Font (OBE35203-

= "DS Single

8F91-llCE-9DE3-00AAO04BB851) Name

Size = 8.25 Charset Welght Underline = O 'False Italic = O 'False Strikethrough = O 'False

Serif" = "MS Sans

= o = 400

Endproperty Height = 285 Left = 1680 TdbIndex TOP

= 16

Width = 4200 = 315

End Begin VB.Labe1 Label8

Borderstyle = 1 'Fixed

Caption = * T C S "

Beginproperty Font (OBE35203-

Single

8F91-llCE-9DE3-00AAO04BB851) Name = "MS Sans

Size = 8.25 Charset = o Weight = 400 Underllne = O 'False

Strlkethrough = O 'False Italic = O 'False

Serif"

Endproperty Height Left

= 285 = 1680

11

Page 88: Ruíz !Y - 148.206.53.84148.206.53.84/tesiuami/UAM5688.pdfMODOS DE DIRECCIONAMIENTO ... El Intel 4004 es el primer microprocesador aparecido en el ... se almacenan en un stack de 4

TabIndex = 14

Width TOP = 3840

= 375 End Begin VB.Labe1 Label7

Borderstyle = 1 'Fixed

Caption = "BP" Beginproperty Font (OBE35203-

Single

8F91-llCE-9DE3-00AAO04BB851} Name = "MS Sans

Charset Size = 8.25

Weight = 400 Underline = O 'False Italic = O 'False Strikethrough = O 'False

Serif"

= O

Endproperty Height Left TabIndex = 12

Width = 375

= 285 = 1680

TOP = 3480

End Begin VB.Labe1 Label6

Borderstyle = 1 Fixed

Caption = "DI" Beginproperty Font (OBE35203-

Single

8F91-llCE-9DE3-OOAA004BB851)

Serif" Name = "MS Sans

Size = 8.25 Charset = o Welght = 400 Underline Italic

= O 'False = O 'False

Strikethrough = O 'False Endproperty Height = 285 Left = 1680 TabIndex = 10 Top Width

= 3120 = 375

End Begin VB.Labe1 Label5

Borderstyle = 1 'Fixed

Caption = "SI" Beginproperty Font (OBE35203-

Single

8F91-llCE-9DE3-00AAO04BB851) Name = "MS Sans

Size = 8.25 Charset = o Weight = 400 Underline = O 'False Italic = O 'False Strikethrough = O 'False

Serif"

Endproperty Height Left TabIndex

Width

= 285 = 1680 = 8

= 375 TOP = 2760

End Begin VB.Labe1 Label4

Borderstyle = 1 'Fixed

Caption = "DX" Beginproperty Font (OBE35203-

Single

8F91-llCE-9DE3-00AAOO4BB85l} Name

Size = 8.25 Serif"

= "MS Sans

Alejandro Montejo Rubio

Simulador del Sistema Minimo Intel 8088 Proyecto Terminal

Charset Weight Underline = O 'False Italic = O 'False Strikethrough = O 'False

= o = 400

Endproperty Height = 285 Left = 1680 TabIndex = 7 TOP = 2400 Width = 375

End Beqin VB.Label Label3

EdrderStyle = 1 'Fixed

Caption = "CX" Beginproperty Font tOBE35203-

Sinqle

8F91-llCE-9DE3-00AA004BB851}

Serif" Name = "MS Sans

Size Charset

= 8.25

Weight = o = 400

Underline = O 'False Italic Strikethrough = O 'False

= O 'False

Endproperty Height = 285 Left = 1680 TabIndex TOP

= 5

Width = 2040 = 375

End Seqin VB.Labe1 La2;cl:

E,JrderStyle = 1 'Fixed

Caption = "BX" Beginproperty Font (OBE35203-

Single

8F91-llCE-9DE3-00AAO04BB851) Name = "MS Sans

Size = 8.25 Charset = o Weight = 400 Underline = O 'False Italic = O 'False Strikethrough = O 'False

Serif"

Endproperty Helght Left

= 285

TabIndex = 1680 = 3

Width TOP = 1680

= 375 End Begin VB.Labe1 Labcll

Borderstyle = 1 'Fixed

Caption = "AX" Beginproperty Font (OBE35203-

Single

8F91-llCE-9DE3-00AAO04BB851) Name

Size = 8.25 Charset = o Weight = 400 Underllne = O 'False Italic Strikethrough = O 'False

= O 'False

Endproperty Height = 285 Left = 1680 TabIndex TOP

= 1

Width = 1320 = 315

Serlf" = "MS Sans

End Begin VB .Menu Arch: vo

12

Page 89: Ruíz !Y - 148.206.53.84148.206.53.84/tesiuami/UAM5688.pdfMODOS DE DIRECCIONAMIENTO ... El Intel 4004 es el primer microprocesador aparecido en el ... se almacenan en un stack de 4

Simulador del Sistema Mínimo Inte l 8088 Proyecto Terminal

Caption = "&Archivo" Begin VB.Menu Abrir

End Begin VB.Menu Guardar

End Begin VB.Menu separadorl

End Begin VB.Menu Salir

End

Caption = "&Abrlr"

Caption = "&Guardar"

Caption - 11 - 11 -

Caption = "&Salir"

End End Attribute VB-Name = "Forml" Attribute VB-Creatable = False Attribute VB-Exposed = False

Public DireccionFisicaDump As Long Public Sub DecodificaCodigoO

Tamaño = 1 With Operacion(Codigo0peracion)

If .ByteRegl Then Registro1 =

Memoria ( (CLng ("&H" + MemorlaFisica$(cs.Text, ip.Text)) + Tamaño) Mod 1048575)

Tamaño = Tamaño + 1 End If If .OffH1 Then

aux = Memoria( (CLng("&H" + MemoriaFisica$(cs.Text, ip.Text) + Tamaño) Mod 1048575)

Direccion = aux * 256 ' corrimiento xx O0

Tamaño = Tamaño + 1

T1.Text = dux

End If If .OffLo Then

aux = Memorla( (CLng("&H" + MemoriaFislca$(cs.Text, ip.Text)) + Tamaño) Mod 1048575)

Direccion = Dlreccion + dux

Tamaño = Tamaño t 1 T2.Text = aux

End If If .ByteReg2 Then

' xxoo + yy= xxyy

Memoria ( ( CLng ( "&H" + Registro2 =

MemoriaFisica$(cs.Text, ip.Text)) t Tamaño) Mod 1048575)

Tamaño = Tamaño + 1 End If If .Dato8 Then

DatoByte = Memoria ( (CLng ("&H" + MemoriaFisica$(cs.Text, ip.Text)) + Tamaño) Mod 1048575)

Tamaño = Tamaño + 1 End If If .DatoHi Then

dux = Memoria( (CLng("&H" + MemoriaFisicaS (cs.Text, ip.Text)) + Tamaño) Mod 1048575)

DatoWord = aux * 2 5 6 Tamaño = Tamaño + 1

End If If .DatoLo Then

dux = Memoria( (CLng("&H" + MemoriaFisica$(cs.Text, ip.Text)) + Tamaño) Mod 1048575)

DatoWord = DatoWord + aux

Tamaño = Tamaño + 1 End If

End With IncrementaIP (Tamaño)

End Sub

Public Function DetectaOrigenyDestinoO Dim ExisteDestino As Boolean

ExisteDestino = False If

O p e r a c i o n ( C o d i g o O p e r a c i o n ) . B y t e R e g l Then

ExisteDestino = True Select Case Reglstrol

Case O

Case 1

Case 2

Case 3

Case 4

Case 5

Case 6

Case 7

Case 8

Case 9

Case 10

Case 11

Case 12

Case 13

Case 14

Case 15

Case 16

Case 17

Case 18

Case 19

Case 20

Case 21

Case 22

Case 23

End Select

Set Destino = AL

Set Destino = AH

Set Destino = BL

Set Destino = BH

Set Destlno = CL

Set Destlno = CH

Set Destlno = DL

Set Destlno = DH

Set Dpstino = ax

Set Destlno = bx

Set Destlno = cx

Set Destino = dx

Set Destino = si

Set Destino = di

Set Destino = bp

Set Destino = S S

Set Destino = es

Set Destino = ds

Set Destino = cs

Set Destino = T1

Set Destino = T2

Set Destino = T12

Set Destino = MAR

Set Destino = BusDatos

End If

If Operaclon(CodigoOperacion).ByteRegZ Then

Select Case Registro2 Case O

Case 1

Case 2

Origen = AL.Text

Origen = AH.Text

Alejandro Montejo Rubio 13

Page 90: Ruíz !Y - 148.206.53.84148.206.53.84/tesiuami/UAM5688.pdfMODOS DE DIRECCIONAMIENTO ... El Intel 4004 es el primer microprocesador aparecido en el ... se almacenan en un stack de 4

Case 3

Case 4

Case 5

Case 6

Case 7

Case 8

Case 9

Case 10

Case 11

Case 12

Case 13

Case 14

Case 15

Case 16

Case 17

Case 18

Case 19

Case 20

Case 21

Case 22

Case 23

Origen = BL.Text

Origen = BH.Text

Origen = CL.Text

Origen = CH.Text

Origen = DL. Text

Orlgen = DH.Text

Origen = ax.Text

Origen = bx.Text

Origen = cx.Text

Origen = dx.Text

Origen = si.Text

Origen = di.Text

Origen = bp.Text

Origen = ss.Text

Origen = es.Text

Origen = ds.Text

Origen = cs.Text

Origen = T1.Text

Origen = T2.Text

Origen = T12.Text

Origen = MAR.Text

Origen = BusDatos.Text End Select

End If If Operacion(CodigoOperaclon).DatoR

Then

si se usa BinHexO Origen = HexlDatoByte) 'checar

End If If

Operacion(CodigoOperacion).DatoHi Then If ExisteDestino Then

End If Orlgen = HexiDatoWord)

End If End Function

Public Sub EjecutaCodigo2() botones = vbRetryCance1 + vbCritical + vbDefaultButton1 ' Define los botones. Titulo = "Códigos de error" ' Define el titulo. Ayuda = "ayuda.hlp" ' Define el archivo

I de ayuda. numero = 1000 Dim dirreciondatos As Byte

For k = O To 30 Select Case

Operacion(CodigoOperacion).Micro(k)

Inicializa el segmento de datos Case "DATASEGMENT"

DATOS$ = "0400"

Alejandro Montejo Rubio

Simulador del Sistema Mínimo Inte l 8088 Proyecto Terminal

Case "CODESEGMENT" Inlcializa el segmento de codigo

CODIGOS = "0000" Case "STACKSEGMENT" '

inicializa el segmento de pila STACK$ = "0800"

Case "EXTRASEGMENT" inicializa el segmento extra

Extra$ = "OCOO" Case "DETECTA" ' detecta el

origen y el destino

ala función detecta origen y detecta destino

valor del origen al destino

DetectaOrigenyDestino Llamada

Case "ASIGNA" ' aslgna el

Destino.Text = Orlgen Case "ASIGNA=MEMORIA" Asigna

el contenido de un registro al Segmento de datos

Segmento$ = DATOS$ T1.Text =

Hex(Val(Trim(T1.Text)))

Hex(Val(Trim(T2.Text))) T2.Text =

T12.Text = Trim(T1.Text + T2.Text) 'MAR.Text = Val ("&H" + T12.Text) 'valormem = Val ("&H" +

While Len(Desplazamiento$) < 4 Desplazamiento$ = T12.Text

Desplazamiento$ = "O" +

Trim(T12. Text) )

Desplazamiento$ Wend

DesplazdmientoS

Segmento$) * 16 + CLng("&H" + Desplazamiento$)

Memoria (DlreccionEdltar) = CLng("&H" + Left (Trlm(Origen), 2) )

+ 1) = CLng("&H" + Right(Trim(Origen),

SusDirecciones. Text = "O" +

DlreccionEditar = CLng ("&HI' +

If Len (Orlgen) = 4 Then

Memoria(DireccionEditar

2) ) Else

Memoria (DireccionEditar) = CLng ("&H.' + Left (Trim(Origen), 2) )

End If Case "MEMORIA=ASIGNA" 'Asigna el

contenido de una dirección de memoria del segmento 'de datos a un registro

Segmento$ = DATOS$

Hex ( V a l (Trim(T1 .Text) I )

Hex(Val(Trim(T2,Text)))

T2. Text)

T1.Text =

T2.Text =

T12.Text = Trlm(T1.Text +

DesplazamlentoS = T12.Text BusDirecciones. Text = "O" +

T12. Text Whlle

Len(BusDirecciones.Text) < 5

"O" + BusDirecclones .Text BusDirecciones.Text =

Wend 'BusDatos.Text = Origen

While Len(Desp1azamientoS) < 4 Desplazamiento$ = "O" +

Desplazamiento$ Wend

14

Page 91: Ruíz !Y - 148.206.53.84148.206.53.84/tesiuami/UAM5688.pdfMODOS DE DIRECCIONAMIENTO ... El Intel 4004 es el primer microprocesador aparecido en el ... se almacenan en un stack de 4

Segmento$) * 16 + CLng("&H" + Desplazamiento$)

Hex(Memoria(DireccionEditar) 1

DireccionEditar = CLng("&H" +

BusDatos .Text =

I Destino = BusDatos.Text ' MAR.Text =

Case "SUMA" ' Suma el contenido Memoria(Direcci0nEditar)

de dos registros de 8 y 16 bits

Origen) + Val ("&h" + Destino. Text) )

contenido de un registro entre el contenido de una direccón

' del segemnto de datos Segmento$ = DATOS$

T1.Text =

T2.Text =

T12.Text = Trim(T1.Text +

Desplazamiento$ = T12.Text BusDirecciones.Text = T12.Text

While Len(BusDirecciones.Text) < 5 BusDirecciones. Text = "O" +

Destino. Text = Hex (Val ("&h" +

Case "SUMAMEM" Suma el

Hex(Val(Trim(T1.Text)))

Hex(Val(Trim(T2.Text) 1 )

T2. Text)

BusDirecclones.Text Wend

DesplazamlentoS = "O" + While Len(Desp1azamientoS) < 4

DesplazamlentoS Wend

Segmento$) * 16 + CLng("&H" + DesplazamlentoS)

Val(Memoria(DireccionEditar))) Destino.Text) +

BusDatos.Text = Hex (Val (Memoria (DireccionEditar) ) )

DireccionEditar = CLng ("&H" +

Destino.Text = Hex (Val ("&h" +

Case "RESTA" 'Resta el contenido de un registro entre el contenido de otro registor

+ Destino.Text) - CLng ("&h" + Orlgen) ) Destino.Text = Hex(CLng("&h"

Case "RESTAMEM" 'Resta el contenido de un registro entre el contenido de una dirección de

datos ' del segemnto de

Segmento$ = DATOS$

Hex(Val(Trim(T1.Text)))

Hex (Val (Trim(T2 .Text) ) )

T2. Text)

T1.Text =

T2.Text =

T12.Text = Trim(T1.Text +

Desplazamiento$ = T12.Text BusDirecciones .Text = "O"

BusDatos.Text = Origen BusDirecciones.Text =

While

BusDirecciones .Text = "O"

Wend

+ T12.Text

T12 .Text

Len(BusD1recciones.Text) < 5

+ BusDirecciones.Text

While Len(Desp1azamientoS)

Desplazamiento$ = "O" + ¿ 4

Desplazamiento$

Alejandro Montejo Rubio

Simulador del Sistema Mínimo Inte l 8088 Proyecto Terminal

Wend DlreccionEditar = CLng("&H"

+ Segmento$) * 16 + CLng("&H" + Desplazamiento$)

Memoria(DIRRECI0NEDITAR) Tl.Text =

+ Destino.Text) - Val(Memoria(DireccionEd1tar)))

Hex(Val(Memoria(D1reccionEditar)))

T12.Text = CLng("&h" + AL.Text)

Destino.Text = Hex(Va1 ("&h"

BusDatos.Text =

Case "MULTIPLICA"

' T! .Text = CLng ( " & I I "

Tl . Text = CLng ("&h"

ax.Text =

+ CL.T"ut)

+ Destino. Text)

Hex(Val("&h" + Tl2.Text) * Val("&h" + TI. Text) )

Case "MULTIPLICAMEM" ' Multiplica el contenido del registro AL por el contenido de una dirección

' del segmento de datos de 8 blts, y el producto lo respalda en el registro AX Segmento$ = DATOS$

Hex (Val (Trim (Tl. Text) ) ) T1.Text =

Hex (Val (Trim (T2. Text) ) ) T2.Text =

T2. Text) T12.Text = Trim(T1.Text +

Desplazamiento$ = T12.Text BusDirecciones.Text =

While T12. Text

Len(BusDirecciones.Text) ¿ 5

+ BusDirecciones.Text BusDlrecclones .Text = " O "

Wend

+ T12.Text ' BusDirecciones. Text = "O"

'BusDatos.Text = Origen While Len(Desp1azamientoS) < 4

Desplazamiento$ = "O" + Desplazamiento$

Wend DireccionEditar = CLng("&H"

+ Segmento$) * 16 + CLng ("&H" + Desplazamiento$)

Memorla(Direcc1onEditar)

AL.Text) ) * Val(Memoria(DireccionEditar)))

Hex (Val. (Memoria (DlreccionEditar) ) ) Case "DIVIDE" ' Divide el

contenido del registro AX entre un Registro de 16 bits' El cociente lo pone en el registro AL y el residuo en el registro AH.

T1.Text =

ax.Text = Hex ( (CLng ("&h" +

BusDatos.Text =

T12.Text = CLng("&h" + ax.Text) T1.Text = CLng("&h" + Destino.Text) BusDatos.Text = Destino If Len(Hex( (T12.Text) /

res = MsgBox (Codigosdeerror (4) ,

ComandoAnlma-Click If res = vbCancel Then

Val (T1.Text) ) ) > 2 Then

botones, Titulo, Ayuda, 5)

End If Else

Val (T1.Text)) AL.Text = Hex((Tl2.Text) /

15

Page 92: Ruíz !Y - 148.206.53.84148.206.53.84/tesiuami/UAM5688.pdfMODOS DE DIRECCIONAMIENTO ... El Intel 4004 es el primer microprocesador aparecido en el ... se almacenan en un stack de 4

AH. Text = Hex (Val (T12. Text) Mod Val(T1.Text)) End If

Case "DIVIDEMEM" ' Divide el contenido del registro Ax entre el contenido de 16 bits' de una direccion del segmento de datos

Segmento$ = DATOS$ T1.Text = Hex(Val(Trim(T1.Text))) T2.Text = Hex(Val(Trim(T2.Text))) T12.Text = Trim(T1.Text + T2.Text) Desplazamiento$ = T12.Text BusDirecciones.Text = T12.Text While Len(BusDirecciones.Text) < 5 BusDirecciones .Text = "O" +

BusDirecciones.Text Wend BusDatos.Text = Origen

Whlle Len(Desplazamiento$) < 4 Desplazamiento$ = "O" +

Desplazamiento$ Wend DireccionEditar = CLng ("&H"

+ Segmento$) * 16 + CLng ("&H.' + Desplazamiento$)

ax. Text)

CL. Text)

Destino.Text) If Len(Hex((Tl2.Text) /

Val(Memoria(Direcci0nEditar)))) > 2 Then

botones, Titulo, Ayuda, 5)

T12.Text = CLng("&h" +

' T1.Text = CLng("&h" +

' T1.Text = CLng("&h" +

res = MsgBox(Codigosdeerror(4),

ComandoAnima-Click If res = vbCancel Then

End If Else

AL.Text = Hex((T12.Text) / Val(Memoria(DireccionEditar))) ' Guarda el cociente en AL

Val(Memoria(DireccionEd1tar))) ' Guarda el residuo en AH

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

End If

Hex(Val(Memoria(Direcci0nEditar)) ) BusDatos. Text =

Case "INCREMENTA" ' Incrementa el contenido en uno de un registro destino

Destino.Text = Hex (Val ("&h" + Destino.Text) + 1)

Case "INCREMENTAMEM" ' Incrementa el contenido de una dirección del segmento de datos

Segmento$ = DATOS$ T1.Text =

T2.Text =

T12.Text = Trlm(T1.Text +

Desplazamiento$ = T12.Text BusDlrecciones.Text =

While

BusDirecciones .Text = "O" +

Hex (Val (Trim (Tl. Text) ) )

Hex (Val (Trim(T2.Text) ) )

T2. Text)

T12. Text

Len(BusDirecci0nes.Text) < 5

BusDirecciones.Text Wend BusDatos.Text = Origen

Alejandro Montejo Rubio

Simulador del Sistema Mínimo Intel 8088 Proyecto Terminal

< 4 While Len(Desp1azamientoS)

DesplazamlentoS = "O" + Desplazamiento$

Wend DlreccionEditar = CLng ("&H"

+ Segmento$) * 16 + CLng("&H" + Desplazamiento$)

Memoria(Direcci0nEditar)

Hex (CLng ( "&H" + MAR. Text) ) + 1

el contenido de un reqistro

Destino.Text) - I)

'Decrementa el contenldo de una direccion del segmento de datos

el segmento de datos

Hex(Val(Trim(T1.Text)))

Hex(Val(Trim(T2.Text)))

T2. Text)

MAR.Text =

Memoria(DireccionEditar) =

Case "DECREMENTA" ' Decrementa

Destino.Text = Hex (Val ("&H" +

Case "DECREMENTAMEM"

Segmento$ = DATOS$ ' Selecciona

T1.Text =

T2.Text =

Tl2.Text = Trim(T1.Text +

Desplazamiento$ = T12.Text

T12. Text BusDirecciones.Text =

While Len(BusDirecciones.Text) < 5

BusDirecciones. Text = "O" + BusDirecciones.Text

Wend

;nlhile Len(Desp1azamientoS) .C 4 BusDatos.iext = Origen

Desplazamiento$ = "O" + Desplazamiento$

Wend DireccionEditar = CLng("&H"

+ Segmento$) * 16 + CLng("&H" + Desplazamiento$)

Memoria(DireccionEditar)

Then

Hex(CLng("&h" + MAR.Text)) - 1 Else

End If

MAR.Text =

If Memoria(Direcci0nEditar) <> O

Memoria(DireccionEditar) =

Error 1

' Case "INCREMENTA A MAR"

MAR.Text) + 1) ' MAR.Text = Hex(CLng("&h" +

'Case "DECREMENTA"

I Destino.Text = Hex(Val(Destino.Text) - 1)

' Case "COMPLEMENTO" ' Destino.Text = Hex(255 -

'Case "MAR=DIRECCION"

Case "DESTINO=BUSDATOS" ' El

Val (Origen) )

contenido del busdatos lo carga al destino

BusDatos.Text Destino.Text =

I Case "BUSDATOS=DESTINO" ' Destino = BusDatos.Text

16

Page 93: Ruíz !Y - 148.206.53.84148.206.53.84/tesiuami/UAM5688.pdfMODOS DE DIRECCIONAMIENTO ... El Intel 4004 es el primer microprocesador aparecido en el ... se almacenan en un stack de 4

c Case "BUSDATOS=ORIGEN" 'El

contenido del origen lo carga al bus datos

y Case "ORIGEN=BUSDATOS" I BusDatos.Text = Origen I Case "ORIGEN=BUSDIRRECIONES" ' EsribirBusDirecciones ' Case "BUSDIRRECIONES=ORIGEN" ' Case "DESTINO=BUSDIRRECIONES" ' Case "BUSDIRRECIONES=DESTINO" ' Case "DESTINO ES T1"

Set Destino = TI 'Case "DESTINO ES T2" ' Set Destino = T2

'Case "DESTINO ES Tl2"

I Case "ORIGEN ES T1" ' Set Destino = T12

'Case "ORIGEN ES T2" ' Set Origen = T1

'Case "ORIGEN ES T12" ' Set Origen = T2

' Set Orlgen = T12

BusDatos.Text = Origen

'faltan los demas casos

Case "SALTA" ' Ejecución de

ip.Text = Hex ( (Val ("&h" +

Case "PUSHREG" 'Ejecución del

PILA = STACKS ' Seleccionamos

un salto relativo

ip.Text) + Val("&h" + Destino.Text) 1 )

apllamiento en SS de un registro

el segmento de pila T1.Text =

Hex(Val(Trim(Tl.Text) 1 ) T2.Text =

Hex(Va1 (Trlm(T2.Text)) )

T2. Text) T12.Text = Trim(T1.Text +

Desplazamiento$ = T12.Text

Hex( (Val("&h" + sp.Text) + Val("&H" + BusDirecciones.Text =

"0800") ) )

Len(BusDirecciones.Text) < 5

"O" + BusDirecciones. Text

While

BusDirecciones.Text =

Wend

T12. Text

Len(BusDirecci0nes.Text) < 5

"O" + BusDirecciones .Text

' BusDirecciones.Text =

'While

'BusDirecciones.Text =

U Wend While

Desplazamiento$ = "O" +

Wend DireccionEditar =

LeniDesplazarnientoS) < 4

Desplazamiento$

CLng("&H" + PILA) * 16 + CLng("&H" + sp. Text)

= CLng("&H" + Left (Trim(Destino), 2))

Left (Trim(Destin0) , 2) ) )

+ 1) = CLng("&H" + Right(Trim(Destino), 2) 1

Memoria(DireccionEd1tar)

Auxl = Hex (CLng("&H" +

Memoria(Direcci0nEditar

Rlght (Trim(Destin0) , 2) )

aux2

sp.Text) + Val(2) )

aux2 = Hex (CLng ("&H" +

BusDatos.Text = Auxl +

sp.Text = Hex( (Val("&h" +

Alejandro Montejo Rubio

Simulador del Sistema Mínimo Inte l 8088 Proyecto Terminal

Case "PUSHMEM" ' Ejecución de Apilamiento en el SS de un dato del cs

PILA = STACK$ Seleccionamos el segmento de pila

Seleclonamos el segmento de pila

Trim(Hex(Val(Trim(T1.Text)) + Hex(Val(Trim(T2.Text) 1 ) )

Hex ( (Val ("&h" + sp.Text) + Val ("&H" + "0800") ) )

Len(BusDirecciones.Text) < 5

"O" + BusDirecciones .Text

Segmento$ = DATOS$

Desplazamiento$ =

BusDirecciones.Text =

While

BusDirecciones.Text =

Wend

While Len(Desplazamient0S) < 4 Desplazamiento$ = "O" +

Desplazamiento$ Wend DirecclonEditar = CLng ("&H"

+ Segmento$) * 16 + CLng ("&H" + Desplazamiento$)

Str(Mernorla(Direcc1onEditar)) Auxl =

aux2 =

While Len(sp.Text) < 4

Wend DireccionEditar = CLng ("&H"

Memoria(Direcci0nEditar) =

Memoria(Direcci0nEditar +

sp.Text = Hex( (Val("&h" +

BusDatos .Text = Hex(Aux1) +

Str(Memoria(Direcci0nEditar + 1))

sp.Text = "O" + sp.Text

+ PILA) * 16 + CLng("&H" + sp.Text)

Hex (Val ("&h" + Auxl) )

1) = Hex (Val ("&h" + aux2) )

sp.Text) + Val (2) 1 )

Hex (dux2 )

Case "POPREG" E~ecución de Desapila del SS a un reg destino de 16 Bites

Seleccionamos el segmento de pila Segmento$ = STACK$

While Len(sp. Text) < 4

Wend DireccionEditar = CLng ("&H"

sp.Text = "O" + sp.Text

+ Segmento$) * 16 + CLng("&H" + sp.Text) ' Direccion del SS

Hex((Val("&h" + sp.Text) + Val("&H" + BusDirecciones.Text =

"0800") ) ) While

Len(BusDlrecciones.Text) < 5

"O" + BusDirecciones .Text BusDirecciones.Text =

Wend auxiliar1 =

auxiliar2 =

BusDatos.Text = auxiliar2 +

Destino.Text = auxiliar2 +

Hex(Val(Memoria(DireccionEditar - 1)))

Hex(Val(Memoria(Direcci0nEdltar - 2)))

auxlliarl

auxiliarl ' Asignación al resgistro destino

17

Page 94: Ruíz !Y - 148.206.53.84148.206.53.84/tesiuami/UAM5688.pdfMODOS DE DIRECCIONAMIENTO ... El Intel 4004 es el primer microprocesador aparecido en el ... se almacenan en un stack de 4

Memoria(Direcci0nEditar - 1 ) = O ' Eliminación de valoes de la pila

2) = O ' Eliminación de valoes de la pila

sp.Text = Hex (Val ("&h" + sp.Text) - Val (2) ) ' Decremento del Sp

Memoria(Direcci0nEditar -

Case "POPMEM" Segmento$ = STACK$

While Len(sp.Text) < 4

Wend DireccionEditar = CLng("&H"

Seleccionamos el segmento de pila

sp.Text = "O" + sp.Text

+ Segmento$) * 16 + CLng("&H" + sp.Text) ' Direccion del SS

Hex (Val (Memoria (DireccionEditar - 1) )

Hex(Val(Memoria(DireccionEd1tar - 2) ) )

1) = O ' Eliminación de valoes de la pila

2) = O ' Eliminación de valoes de la pila

auxiliar1 =

auxiliar2 =

Memoria(Dlrecci0nEditar -

Memoria(Direcci0nEditar -

sp.Text = Hex(Va1 ("&h" +

Segmentos = DATOS$ T1.Text =

T2.Text =

T12.Text = Trim(T1.Text +

BusDirecc1ones.Text =

While

BusDirecciones .Text = "O" t

sp. Text) - Val (2) ) ' Decremento del Sp

Hex(Val(Trim(T1.Text))

Hex(Val(Trim(T2.Text) 1 )

T2. Text)

T12. Text

Len(BusDirecciones.Text) < 5

BusDirecciones.Text Wend Desplazamiento$ = Tl2.Text BusDatos.Text = Origen While Len(Desp1azamientoS)

Desplazamiento$ = "O" + < 4

Desplazamiento$ Wend DireccionEditar = CLng ("&H"

+ Segmento$) * 16 + CLng("&H" + Desplazamiento$)

Memoria(DireccionEditar)

Val ("&h" + auxiliar2)

1) = Val("&h" + auxlliarl)

auxillarl

MAR.Text =

Memoria(Direcci0nEditar) =

Memoria(Direcci0nEditar +

BusDatos.Text = auxiliar2 +

End Select Next k

End S u b

Public Sub HazDump ( )

MemoriaFisica$(SegmentoDump.Text, DesplazamientoDump.Text)

MICad$ =

While Len(MiCad$) < 5

Wend MiCadS = "O" + MiCadS

Alejandro Montejo Rubio

Simulador del Sistema Minimo Intel 8088 Proyecto Terminal

MiCadS) DireccionFisicaDump = CLng ("&H" +

Dump. Text = " "

Dim OffsetAux As Long AuxlS = "&H" +

DesplazamientoDump.Text OffsetAux = CLng(Auxl$) For i = DlreccionFisicaDump To

NumAuxTruco = OffsetAux CadenaAuxS = BinHex(0ffsetAux) OffsetAux = NumAuxTruco While Len(CadenaAuxS) < 4

CadenaAuxS = "O" t

DireccionFlsicaDump + 12 * 8 Step 8

CadenaAuxS Wend CadenaAuxS = CadenaAuxS + " "

F o r ] = i T o i + 7 num$ = Hex (Memoria ( 1 ) ) If Len (num$ ) = 1 Then numS

CadenaAuxS = CadenaAuxS + = "O" + num$

numS + 'I IT

Next j For j = i T o 1 + 7

If Memorla (j) <> O And Memorla(j) <> 9 Then

+ Chr (Memorla ( j ) ) CadenaAuxS = CadenaAuxS

Else

End If CadenaAuxS = CadenaAuxS + " "

Next J Dump.Text = Dump.Text + Chr(l3)

+ Chr (10) + CadenaAuxS OffsetAuy = OffsetAux + 8

End Sub

Public Sub LeeCodigoO CodigoOperacion = Memorla(CLng("&H"

+ MemoriaFisica$(cs.Text, ip.Text)) Mod 1048576) End Sub

Public Function ObtenDireccionNoCero(Direcci0n As Long)

Memoria(Direcci0n) = O

Next i

While Direccion < 1023 And

Wend Direccion = Direccion + 1

ObtenDireccionNoCero = Direccion End Function

Public Function ObtenTamaño(Direccion As Long)

WtAlle Direccion < 1024 And DireccionInicial = Direccion

(Memoria(Direcci0n) <> O Or Memoria(Direcci0n + 1) <> O Or Memoria(D1reccion + 2 ) <> O Or Memoria(D1reccion + 3) <> O Or Memoria(Direcci0n + 4 ) <> O )

Dlreccion = Direccion + 1 Wend ObtenTamaño = Direccion -

DirecclonInicial End Function

Private Sub Abrlr-Click0 Dim Direccion As Long D i m Tamaño As Integer Dim Dato As Byte D i m i

Memoria(i) = CLng("&h" + "00") For 1 = O To 65535 Step 1

18

Page 95: Ruíz !Y - 148.206.53.84148.206.53.84/tesiuami/UAM5688.pdfMODOS DE DIRECCIONAMIENTO ... El Intel 4004 es el primer microprocesador aparecido en el ... se almacenan en un stack de 4

Next i DE.Text = "OOOO:OOOO" CodigoOperacion = O DireccionEditar = &HO Proceso.Min = 1 Proceso.Max = 27 Proceso.Value = Proceso.Min On Error GoTo Finalizar

' L a b e 3 7 .Caption = "Archivo: " + AbrirMemoria.filename

'AbrirMemoria.Action = 1 AbrirMemoria.ShowOpen Open AbrirMemoria.fi1ename For

On Error GoTo Finalizarcerrar Input As 1

Label37.Caption =

While Not EOF(1) AbrirMemoria.filename

Input #1, Direccion, Tamaño For 1 = 1 To Tamaño Input #1, Dato Memoria(Direcci0n + i - 1) = Dato

Proceso.Value = i Next i

Wend 'Proceso.Value = Proceso.Min

Finalizarcerrar: Close 1 HazDump

End Sub Flnalizar:

Private Sub AH-Change ( ) If BanderaRegistro Then

BanderaRegistro = False

If Len(AH.Text) < 2 Then While Len(AH.Text) < 2

Wend AH.Text = "O" t AH.Text

End If If Len(AH.Text) > 2 Then AH.Text =

ax.Text = AH.Text + AL.Text BanderaRegistro = True

Right (AH. Text, 2 )

End If End Sub

Private Sub AH-KeyPress(KeyAscii As Integer)

BanderaRegistro = False Caracter = Chr(KeyAscii) If (Caracter >= " O " And Caracter <=

"9") Or (Caracter ?= "A" And Caracter <= "F") Or (Caracter >= "a" And Caracter <= "f") Then

KeyAscii = Asc(UCase (Caracter) ) cadena$ = " I '

cadena$ = Mid(AH.Text, 2, 1) AH.Text = cadenas AH.SelStart = 1

KeyAscii = O Else

End If BanderaRegistro = True

End Sub

Private Sub AL-Change0 If BanderaRegistro Then

If Len(AL.Text) < 2 Then While Len(AL.Textj < 2

Wend AL.Text = "O" + AL.Text

End If If Len(AL.Text) > 2 Then AL.Text =

Right (AL. Text, 2 j

Alejandro Montejo Rubio

Simulador del Sistema Mínimo Intel 8088 Proyecto Terminal

BanderaRegistro = False ax.Text = AH.Text + AL.Text BanderaRegistro = True

End If End Sub

Private Sub AL-KeyPress(KeyAscii AS Integer)

BanderaRegistro = False Caracter = Chr (KeyAscii) If (Caracter >= "O" And Caracter <=

"9") Or (Caracter >= "A" And Caracter <= "F") Or (Caracter >= "a" And Caracter <= "f") Then

KeyAscii = Asc (Ucase (Caracter! ) cadenas = " "

cadenas = Mid(AL.Text, 2, 1 ) AL.Text = cadena$ AL.SelStart = 2

KeyAscil = O Else

End If BanderaRegistro = True

End Sub

Private Sub Anima-Timer0

End Sub

Private Sub ax-ChangeO If BanderaRegistro Then

Siguiente-Click

BanderaRegistro = False If Len(ax.Text) < 4 Then

While Len(ax.Text) < 4

Wend ax.Text = "O" + ax.Text

Ena If If Len(ax.Text) > 4 Then ax.Text =

AH.Text = Left(ax.Text, 2) AL.Text = Right(ax.Text, 2 ) BanderaRegistro = True

Right (ax.Text, 4)

End If End Sub

Private Sub ax-KeyPress(KeyAscii As Integer)

BanderaReglstro = False ValidaHexadecimal KeyAscii, ax BanderaReglstro = True

End Sub

Private Sub BH-Change0

If BanderaRegistro Then 'bx.Text = BH.Text + BL.Text

BanderaReglstro = False

If Len(BH.Text) < 2 Then While Len(BH.Text) < 2

Wend BH.Text = "O" + BH.Text

End If If Len(BH.Text) > 2 Then BH.Text =

bx.Text = BH.Text + BL.Text BanderaRegistro = True

Right(BH.Text, 2)

End If End Sub

Prlvate Sub BH-KeyPress(KeyAscii As

<= "9") Or (Caracter >= "A" And Integer)

And Caracter <= "f") Then Caracter <= "F") Or (Caracter >= "a"

* 19

J

Page 96: Ruíz !Y - 148.206.53.84148.206.53.84/tesiuami/UAM5688.pdfMODOS DE DIRECCIONAMIENTO ... El Intel 4004 es el primer microprocesador aparecido en el ... se almacenan en un stack de 4

BanderaRegistro = False Caracter = Chr(KeyAscii1 If (Caracter >= "O" And Caracter <=

"9") Or (Caracter >= "A" And Caracter <= 11 F") Or (Caracter >= "a" And Caracter <= "f") Then

KeyAscii = Asc(UCase(Caracter)) cadena$ = " I '

cadena$ = Mid(BH.Text, 2, 1) BH.Text = cadena$ BH.SelStart = 2

KeyAscii = O Else

End If BanderaRegistro = True

End Sub

Private Sub BL-Change0 'bx.Text = BH.Text + BL.Text If BanderaRegistro Then

If Len(BL.Text) < 2 Then While Len(BL.Text) < 2

Wend BL.Text = "O" + BL.Text

End If If Len(BL.Text) > 2 Then BL.Text =

BanderaRegistro = False bx.Text = BH.Text + BL.Text BanderaRegistro = True

Right (BL.Text, 2)

End If End Sub

Private Sub BL-KeyPress(KeyAscii As Integer)

Caracter = Chr(KeyAscii1 If (Caracter >= "O" And Caracter <=

"9") Or (Caracter >= "A" And Caracter <= "F") Or (Caracter >= "a" And Caracter <= "f") Then

KeyAscii = Asc (Ucase (Caracter) ) cadena$ = " "

cadena$ = Mid(BL.Text, 2, 1) BL.Text = cadena$ BL.SelStart = 2

KeyAscii = O Else

End If

End Sub

Private Sub bp-ChangeO

End Sub If bp.Text = " " Then bp.Text = "0000"

Private Sub bp-KeyPress(KeyAscii As Integer)

End Sub

Private Sub BusDatos-Change0

BusDatos. Text = "0000"

ValidaHexadecimal KeyAscii, bp

If BusDatos.Text = " " Then

If Len(BusDatos.Text) = 1 Then BusDatos.Text = "O" +

BusDatos .Text End If If Len(BusDatos.Text) = 3 Then BusDatos .Text = "O" +

BusDatos.Text End If

Val ("&h.' + BusDatOS .Text) Mod 256 End Sub

' Memorla(CLng("&H" + MAR.Text)) =

I Alejandro Montejo Rubio

Simulador del Sistema Minimo Intel 8088 Proyecto Terminal

Private Sub BusDatos-KeyPress(KeyAsci1 As Integer)

BanderaRegistro = False ValidaHexadecimal KeyAscii,

BanderaRegistro = True BusDatos

' ValidaHexadecimal KeyAscii, BusDatos End Sub

Private Sub BusDirecclones-Change0

BusDirecclones. Text = "0000" End Sub

Private Sub Busnirecclones - KeyPress(KeyAsci1 As Integer)

ValidaHexadecimal KeyAscii, BusDirecciones End Sub

Private Sub bx-ChangeO 'BH.Text = Left(bx.Text, 2) 'BL.Text = Right(bx.Text, 2) If BanderaRegistro Then

If BusDirecciones .Text = '"I Then

BanderaRegistro = False

If Len(bx.Text) < 4 Then While Len(bx.Text) < 4

Wend bx.Text = "O" + bx.Text

End If If Len(bx.Text) > 4 Then bx.Text =

BH.Text = Left(bx.Text, 2) BL.'rext = Right(bx.Text, 2) BanderaRegistro = True

Rlght(bx.Text, 4)

End If End Sub

Private Sub bx-KeyPress(KeyAscii As Integer)

End Sub

Private Sub CH-Change() If BanderaRegistro Then

If Len(CH.Text) < 2 Then

ValidaHexadecimal KeyAscli, bx

BanderaRegistro = False

While Len(CH.Text) < 2

Wend CH.Text = "O" + CH. Text

End If If Len(CH.Text) > 2 Then CH.Text =

c~.Text = CH.Text + CL.Text BanderaRegistro = True

Right(CH.Text, 2)

End If End Sub

Private Sub CH-KeyPress(KeyAscii As

<= "9") Or (Caracter >= "A" And Integer)

And Caracter <= "f") Then Caracter <= "F") Or (Caracter >= "a"

BanderaReglstro = False Caracter = Chr(KeyAsc1i) If (Caracter >= "O" And Caracter <=

"9") Or (Caracter >= "A" And Caracter <= "F") Or (Caracter >= "a" And Caracter <= "f") Then

KeyAscii = Asc (Ucase (Caracter) ) cadena$ = " "

cadena$ = Mld(CH.Text, 2, 1 ) CH.Text = cadena$

20

Page 97: Ruíz !Y - 148.206.53.84148.206.53.84/tesiuami/UAM5688.pdfMODOS DE DIRECCIONAMIENTO ... El Intel 4004 es el primer microprocesador aparecido en el ... se almacenan en un stack de 4

Simulador del Sistema Minimo Intel 8088 Proyecto Terminal

CH.SelStart = 2

KeyAscii = O Else

End If BanderaRegistro = True End Sub

Private Sub Checkl-Click0 If Checkl.Value = O Then

intervalo.Enabled = False Label33.Caption =

"Intervalo-tiempo-desactivado" Else

intervalo.Enabled = True Label33.Caption =

"Intervalo-tiempo-actlvado" End If End Sub

Private Sub CL-Change()

If BanderaRegistro Then 'cx.Text = CH.Text + CL.Text

If Len (CL.Text) < 2 Then While Len(CL.Text) < 2

Wend CL.Text = "O" + CL.Text

End If If Len(CL.Text) > 2 Then CL.Text =

BanderaRegistro = False cx.Text = CH.Text + CL.Text BanderaRegistro = True

Right (CL.Text, 2)

End If End Sub

Private Sub CL-KeyPress(KeyAscii As Integer)

Caracter = Chr(KeyAscii) If (Caracter >= "O" And Caracter <=

"9") Or (Caracter >= "A" And Caracter

Caracter <= "f") Then < = 11 F") Or (Caracter >= "a" And

KeyAscli = Asc(UCase(Caracter)) cadena$ = " "

cadena$ = Mid(CL.Text, 2, 1) CL.Text = cadena$ CL.SelStart = 2

KeyAscii = O Else

End If End Sub

Private Sub ComandoAnima-Click0 If Anima.Enabled Then

Anima.Enabled = False Siguiente.Enabled = True ComandoAnima.Caption = "&Anima"

Anima.Enabled = True Siguiente.Enabled = False ComandoAnima.Caption = "&Parar"

Else

End If End Sub

Private Sub ComandoAnima-MouseMove(Butt0n As

Y As Single) Integer, Shift As Integer, X As Single,

' Muestra mensaje en la parte inferior de la pantalla el mensaje" Ayudarapida.Caption = "Ejecuta el programa residente en memoria,

por el Intervalo" continuamente a velocidad determinada

End Sub

Private Sub Commandl-Click0 Inicializa-Registros Dim i For i = 1024 To 65535 Step 1 Memoria(i) = CLng("&h" + "00") Next i End Sub

Private Sub Commandl-MouseMove(Butt0n As Integer, Shlft As Integer, X As Single, Y As Slngle)

de la pantalla el mensaje" ' Muestra mensaje en la parte inferior

Ayudaraplda.Caption = "Resetea el IP y los registros para eir?pezar una nueva e j ecucl hn" End Sub

Private Sub Command2_Cl1ck() Desensamblador.Show 1 End Sub

Private Sub Command2-MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)

de la pantalla el mensaje" ' Muestra mensaje en la parte inferior

Ayudaraplda.Caption = "Muestra el

End Sub código en lenguaje ensamblador"

Private Sub Command3-Click0

MemoriaFisica(SeqmentoDump.Text, DesplazamientoDump.TpYt)

dux$ =

While Len(aux$) < 5

Wend dux$ = "&H" + dux$ Memoria (CLng (dux$) ) = Val ( "&H" i

NuevoValor.Text) Dump.Refresh HazDump Dump.Refresh

dux$ = "O" + dux$

End Sub

Private Sub Command3-MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) Ayudarapida.Caption = "Este botón nos permite introduclr un valor nuevo en la memoria" End Sub

Private Sub cs-Change ( )

End Suh 'If cs .Text = " I ' Then cs .Text = "0000"

Pr1,rate Sub es-Keypress (KeyAscii As Integer)

If cs.Text <> "0000" Then

End If End Sub

Private Sub cx-ChangeO If EanderaReglstro Then

If Len(cx.Text) < 4 Then

ValldaHexadecimal KeyAscii, cs

MsgBox (Codigosdeerror ( O ) ) '

BanderaRegistro = False

Whlle Len(cx.Text) < 4

Wend cx.Text = "O" + cx.Text

End If

Alejandro Montejo Rubio 21

Page 98: Ruíz !Y - 148.206.53.84148.206.53.84/tesiuami/UAM5688.pdfMODOS DE DIRECCIONAMIENTO ... El Intel 4004 es el primer microprocesador aparecido en el ... se almacenan en un stack de 4

Simulador del Sistema Mínimo Inte l 8088 Proyecto Terminal

If Len(cx.Text) > 4 Then cx.Text = Rlght (cx. Text, 4 )

CH.Text = Left(cx.Text, 2) CL.Text = Right(cx.Text, 2) BanderaRegistro = True

End If End Sub

Private Sub cx-KeyPress(KeyAscii As Integer)

End Sub

Private Sub DE-Change0 Descod = DE. Text End Sub

Private S u b DesplazamientoDump-Change0

dux$ = MemoriaFisica(SegmentoDump.Text, Desp1azamientoDump.Text)

ValidaHexadecimal KeyAscii, cx

HazDump

While Len(aux$) < 5

Wend aux$ = "&H" t aux$ NuevoValor.Text =

While Len(NuevoValor.Text1 < 2

dux$ = "O" t aux$

Hex (Memoria (CLng (aux$) Mod 1024) I

NuevoValor.Text = "O" + NuevoValor.Text

Wend

Dump.Refresh End S u b

Private Sub DesplazamientoDump-KeyPress(KeyAscii As Integer)

DesplazamientoDump End Sub

ValidaHexadecimal KeyAscii,

Prlvate Sub DH-Change0 'dx.Text = DH.Text + DL.Text

If BanderaRegistro Then BanderaRegistro = False If Len(DH.Text) < 2 Then

While Len(DH.Text) < 2

Wend DH.Text = "O" t DH.Text

End If If Len(DH.Text) > 2 Then DH.Text =

dx.Text = DH.Text + DL.Text BanderaRegistro = True

Right (DH.Text, 2)

End If End Sub

Private Sub DH-KeyPress(KeyAscii As

Caracter <= "F") Or (Caracter >= "a" Integer)

And Caracter <= "f") Then BanderaRegistro = False

Caracter = Chr(KeyAscii)

"9") Or (Caracter >= "A" And Caracter If (Caracter >= " O " And Caracter <=

<= 11

Caracter <= "f"1 Then F") Or (Caracter >= "a" And

KeyAscii = Asc(UCase(Caracter)) cadena$ = " "

cadena$ = Mid(DH.Text, 2, 1) DH.Text = cadena$ DH.SelStart = 2

Else

KeyAscii = O End If BanderaRegistro = True

End S u b

Private Sub di-Change()

End Sub If di .Text = "" Then di .Text = "0000"

Private Sub di-KeyPress(KeyAsci1 As Integer)

End Sub

Private Sub DL-Change ( )

If BanderaReglstro Then 'dx.Te.'t = DH.Text t DL.Text

ValidaHexadecimal KeyAscii, di

If Len(DL.Text) < 2 Then While Len(DL.Text) < 2

Wend DL. Text = "O" + DL.Text

End If If Len(DL.Text) > 2 Then DL.Text =

BanderaRegistro = False dx.Text = DH.Text + DL.Text BanderaRegistro = True

Right (DL. Text, 2

End If

End Sub

Private Sub DL-KeyPress(KeyAscii As Integer)

Caracter = ChriKeyAscii) If (Caracter >= "0" And Caracter c=

"9") Or (Caracter >= " A " And Caracter <= "F") Or (Caracter >= "a" And Caracter <= "f") Then

KeyAscil = Asc(UCase(Caracter)) cadena$ = " "

cadena$ = Mid(DL.Text, 2, 1) DL.Text = cadena$ DL.SelStart = 2

KeyAscii = O Else

End If

End Sub

End S u b Private Sub ds-ChangeO

Private Sub ds-KeyPress(KeyAscii As Integer)

ValidaHexadeclmal KeyAscii, ds If cs.Text < > "0400" Then

End If MscBox (Codigosdeerror ( 1 ) ) '

End Sub

Private Sub dx-Change0 'DH.Text = Left(dx.Text, 2 ) 'DL.Text = Rlght(dx.Text, 2)

If BanderaRegistro Then BanderaRegistro = False

If Len(dx.Text) < 4 Then While Len(dx.Text) < 4

Wend dx.Text = "O" + dx.Text

End If If Len(dx.Text1 > 4 Then dx.Text =

Right (dx. Text, 4

Alejandro Montejo Rubio 22

Page 99: Ruíz !Y - 148.206.53.84148.206.53.84/tesiuami/UAM5688.pdfMODOS DE DIRECCIONAMIENTO ... El Intel 4004 es el primer microprocesador aparecido en el ... se almacenan en un stack de 4

~~

Simulador del Sistema Mínimo Intel 8088 Proyecto Terminal

DH.Text = Left(dx.Text, 2 ) DL.Text = Right (dx. Test, 2) BanderaRegistro = True

End If

End Sub

Private Sub dx_KeyPress(KeyAscii As Integer)

End Sub ValidaHexadecimal KeyAscil, dx

Prlvate Sub Eproml-MouseMove(Button As

Y As Single) Integer, Shift As Integer, X As Slngle,

memoria EPROM, 64KB" Ayudarapida.Caption = "Segmento de

End Sub

Private Sub es-ChangeO ' If es .Text = " " Then es .Text = "0000"

End Sub

Private Sub es-KeyPress(KeyAscii As Integer)

ValidaHexadecimal KeyAscii, es If cs .Text <> "OCOO" Then

MsgBox (Codigosdeerror (3) ) End If End Sub

Private Sub fin_Cllck() Unload Me DireccionEditarl = Descod End Sub

Private Sub Fin_MouseMove(Button AS Integer, Shift As Integer, X As Single, Y AS Single) ' Muestra mensaje en la parte inferlor de la pantalla el mensaje" Ayudarapida.Caption = "Regresa ala pantalla de edición y componentes electronicos" End Sub

Private Sub Form-Load0 ReDim Eprom( 1) , RAM(1) 'defino mi memoria RAM y ROM

cero

dump

NumEprom = 1 solo hay 1 Eprom y 1 RAM

NumRam = 1 Inicializa-Registros

LeeDatosOperacion 'Cargar la

BanderaRegistro = True

DireccionDump = 0 'Dump en

Haz Dump

Eprom(1) .Inicio = fiHFE000

'Creamos el

'Idicamos que

'Estado inicial del Fetch

tabla de los mnemonicos

' DE = Descod

End Sub

MemoriaFisica$(Segmento$, Offset$) Publlc Function

Then Segmento$ = "0000" If Segmento$ = " "

Then Offset$ = "0000"

Segmento$

Offset$

If Offset$ = " "

Auxl$ = "&H" +

aux2$ = "&H" +

16 + CLng(aux2S)) End Function

Publlc Sub IncrementaIP(i As Integer)

MemoriaFisicaS = Hex$(CLng(Auxl$) *

"0000" If ip.Text = " " Then ip.Text =

Dim Ausl As I.ong au;-q = "&H" + 1p.Text Auxl = CLng (aux$) Auxl = Auxl + 1 ip.Text = BlnHex(Aux1)

End Sub

Private Sub FormMouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) Ayudarapida.Caption = "Simulador del sistema 8088"

End Sub

Private Sub Framel-MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) Ayudaraplda.Caption = "Segmento de memoria asiganada para otros dispositlvos" End Sub

Private Sub Guardar-Click0 Dim Direcclon As Long Dim Tamaño AS Integer On Error GoTo Finalizar AbrirMemoria.Flags = &H806& AbrirMemoria.DialogTit1e = "Guardar

AbrirMemoria.ShowSave Open AbrirMemoria.fi1ename For

Output As 1 Direccion = O Do

memoria"

Direccion =

If Direccion >= 1023 Then Exit

Prlnt #1, Dlreccion dux& = Dlreccion Tamaño = ObtenTamaño(auxfi) Print #1, Tamaño For i = 1 To Tamaño

ObtenDireccionNoCero(Direccion)

Do

t i - 1) Print #1, Memoria(Direcci0n

Next 1 Direccion = Direccion + Tamaño

Loop Until Direccion >= 1023 Close 1

Finalizar:

End Sub

Private Sub Intervalo-Change0 Anima.Interva1 = Val(intervalo.Text) End Sub

Private Sub Ip-ChangeO 'While Len(ip.Text) < 4 'ip.Text = "O" + ip.Text'

Atejandro Montejo Rubio 23

Page 100: Ruíz !Y - 148.206.53.84148.206.53.84/tesiuami/UAM5688.pdfMODOS DE DIRECCIONAMIENTO ... El Intel 4004 es el primer microprocesador aparecido en el ... se almacenan en un stack de 4

' Wend End Sub

Private Sub ip_KeyPress(KeyAscii As Integer)

End Sub

Prlvate Sub labell-MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) Ayudarapida.Caption = "Registro Acumulador de 16 bits ó 2 bytes conserva el resultado temporal despues de realizar operaciones" End Sub

ValidaHexadecimal KeyAscli, ip

Private Sub Labello-Click0 SegmentoDump.Text = ss.Text NuevoValor. Text = "00" End Sub

Private Sub LabellO-MouseMove(Button As

Y As Single) Integer, Shift As Integer, X As Single,

Ayudarapida.Caption = "Registro de Segmento de Pila, Direcclona el inicio

pila" de la sección de memoria que es la

End Sub

Private Sub Labelll-Click() SegmentoDump.Text = es.Text NuevoValor.Text = "00"

End Sub

Private Sub LabelllMo11seMove(Button As

Y As Single) Integer, Shift As Integer, X As Single,

Ayudarapida.Caption = "Registro de Segmento Extra, lo utllizan algunas

End Sub instruciones para cadenas"

Private Sub Labell2~MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) Ayudarapida.Caption = "Registro Apuntador de pila, direcciona datos en

End Sub la pila de memoria"

Private Sub Labell3~MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) Ayudarapida.Caption = "Registro Apuntador de Instruciones, dlrreciona slempre aquella instrución a ejecutar" End Sub

Private Sub Labell4~MouseMove(Button As Integer, Shift As Integer, X As Slngle, Y As Single) Ayudarapida.Caption = "El bus de dirreciones suministra una dirrecion en

End Sub la memoria"

Private Sub Labell5~MouseMove(Button As

Y As Single) Integer, Shift As Integer, X As Single,

Ayudarapida.Caption = "El bus de datos transfiere estos entre el microprocesador y la memoria" End Sub

Alejandro Montejo Rubio

Simulador del Sistema Mínimo Intel 8088 Proyecto Terminal

Private Sub Labellb~MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) Ayudarapida.Caption = "Este campo nos permite trasladarnos al desplazamiento

E,nd Sub indicado, dentro del segmento asignado"

Private Sub Labell7_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) Ayudarapida.Caption = "Este campo permlte cambiar el segmento, que esta asiqnado por default" End Suh

Private Sub Labell8-MouseMove(Button As

Y As Single) Integer, Shift As Integer, X As Single,

Ayudarapida.Captlon = "El DUMP es un zoom que se realiza sobre la memoria en el segmento asignado" End Sub

Prlvate Sub Labell9_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) Ayudarapida.Caption = "Reglstro de datos de un byte, es de uso general"

End Sub

Private Sub Label2~MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Cjngle) Ayudaraplda.Captlon = "Registro Base de 2 bytes, a menudo conserva el desplazamiento de los datos que hay en memoria"

End Sub

Private Sub Label20_MouseMove(Button As Integer, Shlft As Integer, X As Single, Y As Single) Ayudaraplda.Caption = "Registro Contador de un byte, contiene el conteo de varias lnstruclones"

End Sub

Private Sub Label21~MouseMove(Button As

Y As Single) Integer, Shift As Integer, X As Single,

Ayudaraplda.Caption = "Registro Base de un byte, a menudo conserva el desplazamiento de los datos que hay en memoria" End Sub

Private Sub Label22-MouseMove(Button As

Y As Slngle) Integer, Shift As Integer, X As Single,

Ayudaraplda.Caption = "Reqistro Acumulador de 8 bits 0 un byte conserva el resultado temporal despues de reallzar operaclones" End Sub

Private Sub Label23_MouseMove(Button As

Y As Single) Integer, Shift As Integer, X As Single,

24

Page 101: Ruíz !Y - 148.206.53.84148.206.53.84/tesiuami/UAM5688.pdfMODOS DE DIRECCIONAMIENTO ... El Intel 4004 es el primer microprocesador aparecido en el ... se almacenan en un stack de 4

Ayudarapida.Caption = "Registro de datos de un byte, es de u s o general" End Sub

Private Sub Label24_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) Ayudarapida.Caption = "Registro Contador de un byte, contiene el conteo de varias instruclones" End Sub

Private Sub Label25-MouseMove(Button As

Y As Single) Integer, Shift As Integer, X As Single,

Ayudarapida.Caption = "Registro Base de un byte, a menudo conserva el desplazamiento de los datos que hay en memoria" End Sub

Private Sub Label26_MouseMove(Button As

Y As Slngle) Integer, Shift As Integer, X As Single,

Ayudarapida.Caption = "Registro Acumulador de 8 bits ó un byte conserva el resultado temporal despues de realizar operaciones"

End Sub

Private Sub Label27-MouseMove(Button As

Y As Single) Integer, Shift As Integer, X As Single,

Ayudarapida.Caption = "Dirreción final del la memoria RAM" End Sub

Private Sub Label28-MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) Ayudarapida.Caption = "Inlcio de la memoria, y del segemnto de código"

End Sub

Private Sub Label29~MouseMove(Button As

Y As Single) Integer, Shift As Integer, X As Single,

Ayudarapida.Caption = "Segmento de datos, dirrección inicial y dirreción

End Sub final"

Private Sub Label3~MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) Ayudaraplda.Caption = "Registro Contador de 2 bytes, contiene el conteo de varias instruciones" End Sub

Private Sub Label30~MouseMove(Button As

Y As Single) Integer, Shift As Integer, X As Single,

Ayudarapida.Caption = "Segmento de pila, dirreción inicial, y dirreción

End Sub final"

Private Sub Label32~MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)

Simulador del Sistema Minimo Intel 8088 Proyecto Terminal

Ayudarapida.Capt1on = "Segmento de codigo, dirreción inicial, y dirreción final" End Sub

Private Sub Label33_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) Ayudarapida.Caption = "Activa la opción Intervalo" End Sub

Private Sub Label34_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) Ayudarapida.Caption = "Es el intervalo para Id velocidad de ejecución, Rango 1 - 9000 ( Recomendado 1000)" End Sub

Private Sub Label35-MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) Ayudarapida.Caption = "Segmento extra, dlrreción inicial y dirreción final" End Sub

Private Sub Label4_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) Ayudarapida.Caption = "Registro de datos de 2 bytes, es de uso general" End Sub

Private Sub Label5"ouseMove(Button As Integer, Shift As Integer, X As Single, Y As Slngle) Ayudara:?ida.Caption = "Registro Indice de fuente; dirreciona datos fuente de cadenas o arreglos" End Sub

Private Sub Labelb_MouseMove(Button As

Y As Single) Integer, Shift As Integer, X As Single,

Ayudarapida.Caption = "Registro Indice de Destino, dirreciona datos destino en

End Sub forma indirecta"

Private Sub Label7_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) Ayudarapida.Caption = "Registro Apuntador de Base, apuntador de uso general que dirreciona a una matriz de datos en la pila" End Sub

Private Sub Label8-ClickO SegmentoDump.Text = cs.Text NuevoValor.Text = "00" End Sub

Private Sub Label8~MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) Ayudarapida.Caption = "Registro de segmento de código,Define la dirección inicial de la memoria que tiene el código" End Sub

Private Sub Label9-ClickO SegmentoDump.Text = ds.Text NuevoValor.Text = "00"

Alejandro Montejo Rubio

Page 102: Ruíz !Y - 148.206.53.84148.206.53.84/tesiuami/UAM5688.pdfMODOS DE DIRECCIONAMIENTO ... El Intel 4004 es el primer microprocesador aparecido en el ... se almacenan en un stack de 4

1

Simulador del Sistema Mínimo Intel 8088 Proyecto Terminal

End Sub

Private Sub Label9-MouseMoveiButton As

Y As Single) Integer, Shift As Integer, X As Single,

Ayudarapida.Caption = "Registro de Segmento de Datos,define la dlrección inicial de la sección de memoria que tiene los datos" End Sub

Privte Sub MAR-Change0 I Dim aux As Long 'aux = Memoria(CLng("&H" +

' BusDatos.Text = BinHex(aux) MAR.Text) Mod 1048576)

End Sub

Prlvate Sub NuevoValor-KeyPress(KeyAscii As Integer)

If KeyAscli = 13 Then

BinHexS ( (CLng ("&h" + Desp1azamientoDump.Text =

DesplazamientoDump.Text) + 1) Mod 65536)

Len(DesplazamlentoDump.Text) < 4

"O" + DesplazamientoDump. Text Wend KeyAscii = O NuevoValor.SelStart = 2

Caracter = Chr(KeyAscii) If (Caracter >= "O" And

While

DesplazamientoDump.Text =

Else

Caracter <= "9") Or (Cüracter >= "A" And Caracter <= "F") Or (Caracter >= "a" And Caracter <= " f " ) Then

Asc(UCase(Caracter)) KeyAscil =

cadena$ = " "

cadena$ =

NuevoValor.Text = cadena$ NuevoValor.Se1Start = 2

KeyAscii = O

Mid(NuevoValor.Text, 2, 1)

Else

End If End If

End Sub Private Sub NuevoValor-LlnkError(LinkErr As Integer) End Sub

Private Sub ProgressBarl-MouseDown(Button As

Y As Single) Integer, Shift As Integer, X As Single,

End Sub

Private Sub Salir-Click0

Unload Me End Sub

Private Sub SegmentoDump-Change()

DireccionEditarl = Descod

Nuevovalor. Text = "

Haz Dump aux$ =

MemoriaFisica(SegmentoDump.Text, DesplazamientoDump.Text)

While Len (dux$) < 5

aux$ = "O" + aux$ Wend dux$ = "&H" + aux$ NuevoValor.Text =

While Len(NuevoVa1or.Text) < 2 NuevoValor.Text = "O" +

Hex(Memoria(CLng(aux$) Mod 1024)

NuevoValor.Text Wend Dump. Refresh

End Sub

Private Sub SegmentoDump-KeyPress(KeyAscii As Integer)

SegmentoDump End Sub

Private Sub si-ChangeO If sl.Text = " I ' Then sl.Text = "0000" End Sub

Private Sub si-KeyPress(KeyAscii As Integer)

End Sub

Private Sub Siguiente-Click()

Right (Descod, 4 ) ) Then respuesta = MsgBox ("Ejecución

Terminada, para volver a ejecutar el código Tecle RESET ' I , vbOKOnly, "Ejecución de Programas")

VaiLdaHexadecirnal KeyAscli,

ValidaHexadecimal KeyAscii, si

If Val("&h" t ip.Text) > Val("&h" +

If respuesta = 1 '?;en ColwndoAnima-Cllck End If

Else Select Case EstadoFetch

Case O BusDatos .Text = "0000" BusDirecciones.Text =

LeeCodlgo Estado.Caption = "Leer el

"00000"

codlgo de instrucción"

Case 1 DecodificaCodigo Estado.Caption =

Operacion(CodigoOperacion).mnemonico

Case 2 E1ecutaCodigo2 Estado.Captlon =

HazDun,p "Instrucción ejeclltada"

End Select EstadoFetch = (EstadoFetch + 1) Mod

3 End If End Sub

Public Function EsribirBusDlreccionesO Resultado = False If NumRam >= 1 Then

dux$ = "&H" +

For i = 1 To NumRam If (CLng(aux$) >= RAM(i) .Inicio)

Resultado = Resultado Or True

BusDirecciones.Text

And (CLng(aux$) <= RAM(i) .Fin) Then

End If Next 1

End If

Alejandro Montejo Rubio 26

Page 103: Ruíz !Y - 148.206.53.84148.206.53.84/tesiuami/UAM5688.pdfMODOS DE DIRECCIONAMIENTO ... El Intel 4004 es el primer microprocesador aparecido en el ... se almacenan en un stack de 4

Simulador del Sistema Mínimo Inte l 8088 Proyecto Terminal

If Not Resultado Then AnimaAnterior = Anima.Enabled Anima.Enabled = False MsgBox ("La dirección especifica es

Anima.Enabled = AnimaAnterior inválida, se leyo basura")

End If LeerBusDirecciones = Resultado End Function Public Function LeerBusDireccionesO

Resultado = False If NumEprom >= 1 Then

aux$ = vv&npv + BusDirecciones.Text

For i = 1 To NumEprom If (CLng(aux$) >=

Eprom(i) .Inicio) And (CLng(aux$) <= Eprom (i) . Fin) Then

Resultado = Resultado Or True End If

End If If NumRam >= 1 Then

aux$ = "&H" +

For i = 1 To NumRam If (CLng(aux$) >= RAMii) .Inicio)

Resultado = Resultado Or True

Next i

BusDirecciones.Text

And (CLng (aux$) <= RAM(i) .Fin) Then

End If Next i

If Not Resultado Then End If

AnimaAnterior = Anlma.Enabled Anima.Enabled = False MsgBox ("La direcclón especifica es

Anima.Enabled = AnimaAnterior inválida, se leyo basura")

End If LeerBusDirecciones = Resultado End Function

As Integer, Shift As Integer, X As Private Sub Siguiente-MouseMove(Button

Single, Y As Single) ' Muestra mensaje en la parte inferior de la pantalla el mensale" Ayudarapida.Caption = "Ejecuta el programa residente en memoria, paso a paso, considerando el ciclo de Fech" End Sub

Private Sub sp-ChangeO

While Len(sp.Text) < 4 If sp.Text = " I ' Then sp.Text = "0000"

sp.Text = "O" + sp.Text Wend End Sub

Begin VB.PictureBox Picture12 Appearance =

Codigo Sistema Mínimo VERSION 4.00 Begin VB.Form Form2

Appearance = O 'Flat BackColor = &H00400000& Caption

ClientHeight = 5235 ClientLeft ClientTop

= 450

Clientwidth = 1605

Drawstyle = 5220

DrawWidth = 1 'Dash

FlllColor = 3 = &HOOFFFFFF&

Sistema Minimo 8080" = "Simulador

Private Sub sp-KeyPress(KeyAscii As Integer)

End Sub

Private Sub ss-Change() 'If ss.Text = " " Then ss.Text = "0000" End Sub

Private Sub S S KeyPress(KeyAscii As

ValidaHexadecimal KeyAscii, sp

"

Integer) ValidaHexadecimal KeyAscii, If cs.Text <> "0800" Then

MsgBox (Codigosdeerror(2)) End If End Sub

Public Sub Inicializa-Registros

ip.Text = "0000" ' In

cs.Text = "0000" ax.Text = "0000" bx.Text = "0000"

dx.Text = "0000" cx.Text = "0000"

di .Text = "0000" si.Text = "0000"

bp.Text = "0000" ds.Text = "0400" ss.Text = "0800" es.Text = "OCOO" ip.Text = "0000" sp.Text = "0000" BusDatos = "0000" SeumentoDumD.Text = "0000"

los valores de los registros

S S

0

iciamos

DesplazamientoDump. Text = "0000" EstadoFetch = 0

End Sub

Private Sub Textl-Change0 End Sub

Private Sub T12-ClickO T1.Text = Hex(Val(Trim(T1.Text))) T2.Text = Hex(Val(Trim(T2.Text) ) ) Tl2.Text = Trim(T1.Text + T2.Text) valormem = Val("&H" + Trim(T12.Text)) End Sub

Private Sub textl9_MouseMove(Button As

Y As Single) Integer, Shift As Integer, X As Single,

Ayudarapida.Caption = "ese campo nos permite modificar el dato que se

End Sub encuerLtra en segmento:desplazamiento"

Fillstyle - ~

Beginproperty Font Cross

name

charset weight size underline italic

Endproperty strikethrough

FontTransparent =

Forecolor

Roman"

- -

I Diagonal

= "Times New

= o = 700

= O 'False = 18

= 0 'False = -1 'True

O 'False &H00000000&

Alejandro Montejo Rubio 27

Page 104: Ruíz !Y - 148.206.53.84148.206.53.84/tesiuami/UAM5688.pdfMODOS DE DIRECCIONAMIENTO ... El Intel 4004 es el primer microprocesador aparecido en el ... se almacenan en un stack de 4

Height = 5955 HelpContextID = 2 Icon = "Sistema

minimo. frx": O000 KeyPreview Left

= -1 'True = 390

LinkMode LinkTopic

= 1 'Source = "Principal"

MouseIcon = "Sistema minimo . f rx" : O4 42

ScaleHeight = 5235 Scalewidth = 5220

Width = 5340 WindowState = 2 'Maximized Begin VB.Frame Informacion

TOP = 945

BackColor = &HOOEOEOEO& Beginproperty Font

name = "Arial" charset weight

= o = 700

underllne size = 9.75

italic = 0 'False

strikethrough = 0 'False = -1 'True

Endproperty Height Left TabIndex

Visible Width Begin VB.ConunandButton Command2

= 255 = 3000 = 47

= O 'False = 135

TOP = 240

Caption = "C&errar" Beginproperty Font

name = "Times

charset weight size = 12 underline = o italic = o

strikethrough = 0

New Roman" = o = 700

' False

' False

' False Endproperty Height Left

= 495

TabIndex = 4920

TOP = 50

Width = 1200 = 1455

End Begin VB.PictureBox componente

AutoSize Backcolor

= -1 'True

Borderstyle = O 'None FillColor

- -

&HOOCOCOCO&

- -

&HOOFFFFCO& Forecolor

Height Left Picture

minimo.frx":0884 ScaleHeight - -

Scalewidth TabIndex Top Width

- -

&HOOFFFFCO& - -

- - - -

- - - - - - - -

End Begin VB.TextBox Text1

BackColor

Beginproperty Font

- -

&HOOFF0000&

Alejandro Montejo Rubio

675 120 "Sistema

675 2010

240 49

2010

Simulador del Sistema Mínimo Inte l 8088 Proyecto Terminal

name = "Times

charset = o weight = 700 size underline

= 9 = o

italic = o strikethrough = O

New Roman"

' False

' False

' False Endproperty ForeColor

Height = 1455 Left = 240 MultiLine ScrollBars

= -1 'True

TabIndex = 3 'Both

Text = 48 = "Sistema

- -

&HOOFFFFOO&

minimo . f rx" : 4 FCA TOP = 1920 Width = 7095

End Begin VB.Label Label10

Alignment = 2 'Center BackColor

Borderstyle = 1 'Fixed

Caption - -

Beginproperty Font

- -

&HOOCOCOCO&

Single

"Componentes Electronicos del Sistema"

name = "MS

charset weight

= o = 700

size underllne

= 9.75 = o

Italic = o

strlkethrough = O

Sans Serif"

' False

' False

' False Endproperty ForeColor

Height = 615 Left = 4080 TabIndex = 56

Width

- -

&A00000000&

TOP = 360 = 2895

End End Begin VB.CommandButton Tecla

Caption Beginproperty Font

= "F"

name = "Times New

charset weight

= o = 700

slze underline

= 21.75

Italic = 0 'False

strikethrough = 0 'False = O 'False

Endproperty Height = 495

Left Index = 15

TabIndex = 38

Width TOP = 4080

Roman"

= 8400

= 975 End Begin VB.CommandButton Tecla

Caption = "E " Beginproperty Font

2

Page 105: Ruíz !Y - 148.206.53.84148.206.53.84/tesiuami/UAM5688.pdfMODOS DE DIRECCIONAMIENTO ... El Intel 4004 es el primer microprocesador aparecido en el ... se almacenan en un stack de 4

name = "Times New

charset = o weight = 700 size = 21.75 underline italic

= 0 'False

strikethrough = 0 'False = 0 'False

Endproperty Height = 495

Left Index = 14

TabIndex = 37

Width

Roman"

= 7440

TOP = 4080

End Begin VB.CommandButton Tecla

= 975

Backcolor = &HOOFFFFFF& Caption BeginProperty Font

= 11 11

name = "Times New

charset weight

= o = 700

size = 21.75 underline ltalic

= O 'False

strikethrough = O 'False = O 'False

Height Endproperty

Left Index = 13

TabIndex = 36

Width

Roman"

= 495

= 6600

TOP = 4080 855

End Begln VB.CommandButton Tecla

Captlon BeginProperty Font

name

charset weight size = 21.75 underline = O 'False italic = O 'False strikethrough = O 'False

= "C"

Roman" = "Times New

= o = 700

Height Endproperty

Index = 12 Left = 5640 TabIndex = 35

Wldth = 975 End Begin VB.CommandButton Tecla

Caption = "B" Beginproperty Font

= 495

TOP = 4080

name = "Times New

charset weight

= o = 700

size = 21.75 underline italic

= O 'False

strikethrough = O 'False = O 'False

Endproperty Height = 495

Left Index = 1 1

TabIndex = 8400 = 34

Width = 975

Roman"

TOP = 3600

End Begin VB.CommandButton Tecla

Caption = "A"

Alejandro Montejo Rubio

Simulador del Sistema Mínimo Inte l 8088 Proyecto Terminal

BeginProperty Font name

charset = o weight = 700 size = 21.75 underline = O 'False italic = O 'False strikethrough = O 'False

Roman" = "Times New

Endproperty Helght = 495

Left Index = 10

= 7440 TdbIndex = 33

Width Top = 3600

= 975 End Begin VB.CommandButton Reset

Caption BeginProperty Font

= "&Reset"

name = "MS Sans

charset = o weight = 700 size = 8.25 underline = O 'False italic strikethrough = O 'False

= O 'False

Endproperty Height = 495 Left = 7440 TabIndex TOP

= 46

Width = 4695 = 1935

Ser1 f "

End Begin VB.CommandButton Command1

Captlon = "&Ejecutar" BeginProperty Font

name = "MS Sans

charset weight

= o = 700

size = 8.25 underline italic

= 0 'False = O 'False

strikethrough = O 'False Endproperty Height = 495 Left = 5625 TabIndex = 39

Wldth

Serif"

TOP = 4695

End Begin VB.CommandButton Tecla

= 1830

Appearance d6ckColor = &H80000005&

= 0 'Flat

Cancel Caption

= -1 'True

BeginProperty Font = "O"

name = "Times New

charset weight

= o = 700

underline size = 21.75

italic = O 'False

strikethrough = O 'False = O 'False

Endproperty Height = 495

Left Index = o TabIndex = 24

Wldth

Roman"

= 6600

TOP = 3600 = 855

End Begln VB.CommandBuiton Tecla

3

Page 106: Ruíz !Y - 148.206.53.84148.206.53.84/tesiuami/UAM5688.pdfMODOS DE DIRECCIONAMIENTO ... El Intel 4004 es el primer microprocesador aparecido en el ... se almacenan en un stack de 4

Captlon Beginproperty Font

= "9"

name = "Times New

charset weight size = 21.15 underline = O 'False italic strikethrough = O 'False

= O 'False

Endproperty Height = 495

Left Index = g

TabIndex = 32 TOP Width

Roman" = o = 700

= 5640

= 3600 = 975

End Begin VB.Timer Timer1

Interval = 1000 Left = 2160 Top = 3240

End Begin VB.CommandButton Funcion

Caption Beginproperty Font

name

charset = 2 weight = 700 size = 18 underline = O 'False italic strikethrough = O 'False

Endproperty Height = 615

Left Index = 4

TabIndex = 45

Width

- 11 - 11 -

- -

"Wingdings"

= -1 'True

= 8760

TOP = 1800

End Begin VB.CommandButton Funcion

= 615

Caption Beginproperty Font

name

charset weight

= 2 = 700

size underline

= 18 = O 'False

italic = -1 'True strikethrough = O 'False

- 11 ~ 11 -

- -

"Wingdings"

Endproperty Height = 615 Index Left TabIndex TOP Wldth

= 3 = 8160 = 44 = 1800 = 615

End Begin VB.CommandButton Funcion

Caption Beginproperty Font

name

charset = 2 weight = 100

underline size = 18

= O 'False italic = -1 'True strikethrough = O 'False

= "A"

- -

"Wingdings"

Endproperty Helght = 615

Left Index = 2

= 6840

Alejandro Montejo Rubio

Simulador del Sistema Minimo Intel 8088 Proyecto Terminal

TabIndex TOP Width

= 43 = 1800 = 1335

End Begin VB.CommandButton Funcion

Captlon Beginproperty Font

name

charset = 2 weight = 700 size underline

= 18

italic = O 'False

strikethrough = O 'False = -1 'True

Endproperty Helght Index Left = 6240 TabIndex = 42

Width

- 11 - I , - n

- -

"Wingdings"

= 615 = 1

TOP = 1800 = 615

End Begln VB.ComandButton Funclon

Caption Beginproperty Font

name

charset = 2 weight = 700 size underline

= 18

Italic = O 'False

strikethrough = O 'False = -1 'True

Endproperty Height = 615

Left Index = o

TabIndex = 5640 = 41

TOP = 1800 Width = 615

- 1, ~ I, -

- -

"Wingdings"

End Begln VB.TextBox DireccionEditarl

Alignment BackColor

= 2 'Center = &HOOCOCOCO&

Beginproperty Font = "MS Sans name

charset = o weight = 400 size = 8.25 underline = O 'False italic = O 'False strikethrough = O 'False

Serif"

Endproperty Forecolor = &HOOOOOOFF& Height = 285 Left = 8160

TabIndex Locked = -1 'True

Text = "0000: 0000"

Width

= 40

TOP = 5610 = 975

End Begin VB.CommandButton Tecla

Caption = "8" Beginproperty Font

name

charset = o welght = 100 size underline

= 21.15 = O 'False

italic strikethrough = O 'False

= O 'False

Endproperty

Roman" = "Times New

4

Page 107: Ruíz !Y - 148.206.53.84148.206.53.84/tesiuami/UAM5688.pdfMODOS DE DIRECCIONAMIENTO ... El Intel 4004 es el primer microprocesador aparecido en el ... se almacenan en un stack de 4

Height = 495

Left Index = E

TabIndex = 31

Width

= 8400

TOP = 3120 = 975

End Begln VB.CommandButton Tecla

Caption Beginproperty Font

= "7"

name = "Times New

charset = o weight = 700 size = 21.75 underline italic

= O 'False

strikethrough = O 'False = O 'False

Endproperty Height Index Left TabIndex TOP Width

Roman"

= 495 = 7 = 7440 = 30 = 3120 = 975

End Begin VB.CommandButton Tecla

Caption = I 8 6 I T Beginproperty Font

name = "Times New

charset = o weight = 700 size = 21.75 underline = O 'False italic = O 'False strikethrough = O 'False

Roman''

Endproperty Helght = 495

Left Index = 6

TabIndex = 29

Width

= 6600

TOP = 3120 = 855

End Begin VB.CommandButton Tecla

Caption = "5" Beginproperty Font

name = "Times New

charset weight

= o = 700

size = 21.75 underline italic

= O 'False

strikethrough = O 'False = O 'False

Endproperty Height Index Left TabIndex Top Width

Roman"

= 495 = 5 = 5640 = 28 = 3120 = 975

End Begin VB.CommandButton Tecla

Caption Beginproperty Font

= " 4 "

name = "Times New

charset weight

= o = 1 0 0

size = 21.75 underline italic

= O 'False

strikethrough = O 'False = O 'False

Endproperty

Roman"

Alejandro Montejo Rubio

Simulador del Sistema Mínimo Intel 8088 Proyecto Terminal

Height Index Left TabIndex Top Wldth

= 495 = 4 = 8400 = 27 = 2640 = 915

End Begin VB.CommandButton Tecla

Captlon = "3" Beginproperty Font

Roman" name = "Times New

weight charset = o

= 700 size = 21.75 underline italic

= O 'False = O 'False

strikethrough = O 'False Endproperty Height = 495 Index = 3 Left = 7440 TabIndex = 26

Width = 975 End Begin VB.CommandButton Tecla

TOP = 2640

Caption Beginproperty Font

name

charset weight size = 21.75 underline = O 'False italic = O 'False strikethrough = O 'False

= "2"

Roman" = "Times New

= o = 700

Endproperty Height Index Left TabIndex TOP Width

= 495 = 2 = 6600 = 25 = 2640 = 855

End Begln VB.CommandButton Tecla

Caption = " 1" BeglnProperty Font

name = "Times New

charset weight

= o = 700

size = 21.75 underline italic

= O 'False

strikethrough = O 'False = O 'False

Endproperty Height = 495 Index = 1 Left TabIndex TOP = 2640 Wldth

Roman"

= 5640 = 23

= 975 End Begin VB.PictureBox Picture16

Appearance = O 'Flat BackColor = &HOOFF0000& Beginproperty Font

= "MS Sans name

weight charset = o size = 8.25 underline = O 'False italic = O 'False strikethrough = O 'False

Serif"

= 700

5

Page 108: Ruíz !Y - 148.206.53.84148.206.53.84/tesiuami/UAM5688.pdfMODOS DE DIRECCIONAMIENTO ... El Intel 4004 es el primer microprocesador aparecido en el ... se almacenan en un stack de 4

Simulador del Sistema Mínimo Intel 8088 Proyecto Terminal

EndProperty Forecolor = &H80000008& Height = 420' Left = 3840 Picture

minimo . f rx" : 4FD0 ScaleHeight = 390 Scalewidth TabIndex

= 1260 = o

Width Top = 5400

= 1290

= "Slstema

End Begin VB.PictureBox Picture15

Appearance = O 'Flat Backcolor = &HOOFF0000& Beginproperty Font

name = "MS Sans

charset weight

= o = 700

size underline

= 8.25 = O 'False

italic strlkethrough = O 'False

= O 'False

Endproperty Forecolor = &H80000008& Height = 435 Left = 240 Picture = "Sistema

ScaleHeight = 405 Scalewidth = 1260 TabIndex = 21 Top = 5400 Width = 1290

Serif"

minimo.frx1':5916

End Begin VB.PictureBox Picture14

Appearance = o 'E'lat Backcolor = &HOOFF0000& Beginproperty Font

name = "MS Sans

charset = o weight = 700

underline size = 8.25

italic = O 'False = O 'False

strikethrough = O 'False EndProperty Forecolor = &H80000008& Height Left

= 435 = 1680

Picture mlnimo. f rx" : 62B0

= "Sistema

ScaleHeight Scalewidth

= 405

TabIndex = 945

TOP = 20

Width = 5400 = 975

Serif"

End Begin VB.PictureBox Picture13

Appearance Backcolor

= O 'Flat = &HOOFF0000&

Beginproperty Font name = "MS Sans

charset = o weight = 700

underline size = 8.25

= O 'False ltalic = 0 'False strlkethrough = O 'False

Serif"

EndProperty Forecolor = &H80000008& Height = 435 Left = 2760

Picture = "Sistema minimo, f rx" : 6A2E

ScaleHeight ScaleWldth

= 405 = 945

TabIndex = 19 TOP = 5400 Width

End Begln VB.TextBox Dlsplay

= 975

Alignment Backcolor

= 2 'Center = &H00000000&

D-itaField Beginproperty Font

- 11 I, -

name = "Aria1

charset = o weight = 700 size underline

= 18 = O 'False

italic strikethrough = O 'False

= O 'False

Endproperty ForeColor = &HOOOOFFOO& Height = 855 Left = 5640 Locked = -1 'True MaxLength = 14 TabIndex Text

= 18 = "DISPLAY "

Width TOP = 240

= 3735

Narrow"

End O 'Flat

Backcolor = &HOOFF0000& Beginproperty Font

name = "MS Sans

charset = o weight = 700

underline size = 8.25

= O 'False Italic strikethrough = O 'False

= O 'False

Endproperty Forecolor = &H80000008& Height Left Picture = "Sistema

minimo . f rx" : 7 1AC ScaleHeight Scalewidth

= 465

TabIndex = 840

TOP = 17

Width = 4680 = 870

Serlf"

= 495 = 3240

End Oegln VB.PictureBox Plcturell

Appearance Backcolor

= O 'Flat = &HOOFF0000&

BeglnProperty Font name = "MS Sans

weight charset = o size = 8.25 underline = O 'False Italic = O 'False strikethrough = O 'False

Serif"

= 700

Endproperty Forecolor = &H80000008& Height = 495 Left = 3240 Picture

ScaleHeight = 465 ScaleWldth = 840 TabIndex = 16

mlnimo.frx":7932 = "Sistema

Alejandro Montejo Rubio 6

Page 109: Ruíz !Y - 148.206.53.84148.206.53.84/tesiuami/UAM5688.pdfMODOS DE DIRECCIONAMIENTO ... El Intel 4004 es el primer microprocesador aparecido en el ... se almacenan en un stack de 4

TOP Width

= 3960 = 870

End Begln VB.PlctureBox Picture10

Appearance = O 'Flat Backcolor = &HOOFF0000& Beginproperty Font

name = "MS Sans

charset = o weight = 700 size = 8.25 underline = O 'False italic strikethrough = O 'False

= O 'False

Endproperty Forecolor = &H80000008& Height Left Picture = "Sistema

minimo . f rx" : 80B8 ScaleHeight Scalewidth

= 465

TabIndex = 840 = 15

TOP Width

= 3120 = 870

Serif"

= 495 = 4200

End Begin VB.PictureBox Picture9

Appearance = O 'Flat Backcolor = &HOOFF0000& Beginproperty Font

name = "MS Sans

charset weight

= o = 700

size = 8.25 underline italic

= O 'False = O 'False

strikethrough = O 'False Endproperty Forecolor = &H80000008& Height = 480 Left = 4200 Picture

minimo.frx":883E ScaleHeight = 450 Scalewidth TabIndex

= 840 = 14

Width = 870 End Begin VB.PictureBox Picture8

Serif"

= "Sistema

TOP = 4680

Appearance = O 'Flat Backcolor = &HOOFF0000& Beginproperty Font

name = '7% Sans

charset weight

= o = 700

size underline

= 8.25

italic = O 'False

strikethrough = O 'False = O 'False

Endproperty Forecolor = &H80000008& Height Left

= 480 = 1200

Picture minimo.frx":8FC4

= "Sistema

ScaleHeight Scalewidth

= 450

TabIndex = 825

TOP = 13

Width = 4560 = 855

Serif"

End Begin VB.PictureBox Picture7

Alejandro Montejo Rubio

Simulador del Sistema Mínimo Intel 8088 Proyecto Terminal

Appearance Backcolor

= O 'Flat = &HOOFF0000&

Beginproperty Font name = "MS Sans

charset weight size = 8.25 underline italic

= O 'False = O 'False

strikethrough = O 'False Endproperty Forecolor = &H80000008& Height Left Picture = "Sistema

minimo,frx":974A ScaleHeight Scalewidth

= 465

TabIndex = 840 = 12

TOP Width

= 3960 = 870

Serif" = o = 700

= 495 = 4200

End Begin VB.PictureBox Picture6

Appearance Backcolor

= O 'Flat = &HOOFF0000&

Beginproperty Font name = "MS Sans

charset weight size = 8.25 underline = O 'False italic = O 'False strikethrough = O 'False

Serif" = o = 700

Endproperty Forecolor = &H80000008& Height = 480 Left = 2160 Picture

ScaleHeight = 450 Scalewidth = 840 TabIndex TOP Width

minimo . f rx" : 9EDO = "Sistema

= 11 = 4560 = 870

End Begin VB.PictureBox Plcture5

Appearance = O 'Flat Backcolor = &HOOFF0000& Beginproperty Font

name = "MS Sans

charset weight

= o = 700

size underllne

= 8.25

Italic = O 'False

strlkethrough = O 'False = O 'False

Endproperty Forecolor Height

= &H80000008& = 495

Left Index = o

= 3240

mlnimo.frx":A656 Picture = "Sistema

ScaleHeight ScaleWldth

= 465

TabIndex = 840

Top = 10

Width = 3120 = 870

Serlf"

End Begin VB.PictureBor Picture4

ADpearance Backcolor

= O 'Flat = &HOOFF0000&

BeglnProperty Font

7

Page 110: Ruíz !Y - 148.206.53.84148.206.53.84/tesiuami/UAM5688.pdfMODOS DE DIRECCIONAMIENTO ... El Intel 4004 es el primer microprocesador aparecido en el ... se almacenan en un stack de 4

name = "MS Sans Serif"

charset = o weight = 700 size = 8.25 underline italic

= O 'False = O 'False

strikethrough = O 'False Endproperty Forecolor = &H80000008& Height = 495 Left = 240 Picture = "Sistema

ScaleHeight = 465 Scalewidth = 840 TabIndex

Width

minimo . f rx" : ADDC

TOP = 9 = 4560 = 870

End Begin VB.PictureBox Picture3

Appearance = O 'Flat Backcolor = &HOOFF0000& Beginproperty Font

name = "MS Sans

charset weight size = 8.25 underline = O 'False italic = O 'False strikethrough = O 'False

Serif" = o = 700

Endproperty Forecolor = &H80000008& Height = 495 Left = 1800 Plcture = "Sistema

ScaleHeight = 465 Scalewidth = 1185 TabIndex TOP

= 8 = 3720

Width = 1215

minimo. frx" : B52A

End Begin VB.PictureBox Picture1

Appearance = O 'Flat BackColor = &HOOFF0000& Beginproperty Font

name = "MS Sans

charset = o weight = 700 size underline

= 8.25 = O 'False

italic = O 'False strlkethrough = O 'False

Serif"

Endproperty Forecolor = &H80000008& Height Left

= 495 = 360

Picture minimo. f rx" : BF98

= "Slstema

ScaleHeight Scalewidth

= 465

TabIndex = 1185

TOP = 7

Width = 3720 = 1215

End Begin VB.PictureBox Picture2

Appearance Backcolor

= O 'Flat = &HOOFF0000&

Beginproperty Font name = "MS Sans

charset = o weight = 700

Serif"

Alejandro Montejo Rubio

Simulador del Sistema Mínimo Inte l 8088 Proyecto Terminal

size = 8.25 underllne = O 'False italic = O 'False strikethrough = O 'False

Endproperty Forecolor = &H80000008& Height = 735 Index Left Picture = "Sistema

minimo . f rx" : CA06 ScaleHeight Scalewidth

= 705

TabIndex = 1605

TOP = 6 = 240

Width = 1635

= o = 3480

End Begin VB.PictureBox ASB-8805

Appearance = O 'Flat BackColor = &HOOFF0000& Beginproperty Font

name = "MS Sans

charset weight size = 8.25 underllne = 0 'False ltalic = 0 'False strlkethrough = O 'False

Serif" = o = 700

EndProperty Forecolor = &H80000008& Height Left Plcture = "Sistema

minimo.frx":DE98 ScaleHelght Scalewidth

= 705 = 1590

TabIndex = 5

Width = 1620

= 735 = 3480

TOP = 1080

End Begin VB.PictureBox PHIL-9131XN

Appearance = O 'Flat Backcolor = &HOOFF0000& Fillcolor = &HOOFFFFFF& Beginproperty Font

name = "MS Sans

charset welght

= o = 700

underllne size = 8.25

italic = O 'False

strikethrough = O 'False = O 'False

Endproperty Forecolor = &HOOFFFFFF& Height = 735 Left = 3480 Picture = "Sistema

ScaleHeight = 705 ScaleWldth = 1575 TabIndex = 4

Width

Serif"

minlmo.frx":F31E

TOP = 2040 = 1605

End Begin VB.PictureBox Intel-D80314H

Appearance = O 'Flat BackColor = &HOOFF0000& Beginproperty Font

name = "MS Sans

charset welght

= o = 700

underline size = 8.25

= O 'False

Serif"

8

Page 111: Ruíz !Y - 148.206.53.84148.206.53.84/tesiuami/UAM5688.pdfMODOS DE DIRECCIONAMIENTO ... El Intel 4004 es el primer microprocesador aparecido en el ... se almacenan en un stack de 4

italic = O 'False strikethrough = O 'False

Endproperty Forecolor = &H80000008& Height Left Plcture = "Sistema

minimo. frx": 107A4 ScaleHeight Scalewidth

= 705 -7 2550

TabIndex = 3

Width = 2580 End Begin VB.PictureBox Nec-8627P7

= 735 = 240

TOP = 1320

Appearance = O 'Flat Backcolor = &HOOFF0000& FillColor = &HOOFFOOFF& Beginproperty Font

name = "MS Sans

charset weight size = 8.25 underline = O 'False italic strikethrough = O 'False

= O 'False

Endproperty Forecolor = &H0080FFFF& Height = 735 Left = 240 Picture = "Sistema

ScaleHeight = 705 Scalewidth = 2520 TabIndex Top

= 2 = 2400

Wldth = 2550 End Begin VB.PictureBox Nec-D8279C2

Appearance = O 'Flat Backcolor = &HOOFF0000& Beginproperty Font

name = "MS Sans

charset weight size = 8.25 underline = O 'False italic = O 'False strikethrough = O 'False

Serif" = o = 700

minimo. frx": 127F6

Serif" = o = 700

Endproperty Forecolor = &H80000008& Height Left

minirno. frx":14848 Picture = "Slstema

ScaleHeight Scalewidth

= 705

TabIndex = 2535 = 1

Width = 2565

= 735 = 240

TOP = 240

End Begin Threed.SSPane1 SSPanell

Height Left TabIndex

Wldth = 4245 ~ Version ExtentX

= 65536 = 7488

- ExtentY = 10848 - StockProps = 15 Backcolor = 12632256 Bevelwidth = 5 Begin VB.Labe1 Label9

= 6150 = 5370 = 62

TOP = -15

-

Alejandro Montejo Rubio

Simulador del Sistema Mínimo Intel 8088 Proyecto Terminal

Alignment = 2 'Center Borderstyle = 1 'Fixed

Caption - -

Beginproperty Font

Single

"Registros"

name = "MS

charset welght

= o = 700

underline size = 8.25

= o italic = o strlkethrough = O

Sans Serif"

' False

' False

'False

Height Endproperty

Left = 2760 TabIndex = 61

Width

= 255

TOP = 1320 = 1215

End Begin VB.Labe1 Label5

Alignment = 2 'Center Borderstyle = 1 'Fixed

Caption = "Enter" Beginproperty Font

Single

name = ."S

charset = o weight = 700 size underline

= 8.25 = o

italic = o strikethrough = O

Sans Serif"

' False

'False

' False Endproperty Helght Left TabIndex

Width

= 255 = 1440 = 60

= 1335 TOP = 1320

End Begin VB.Labe1 Label4

BorderStyle = 1 'Fixed

Caption - -

Beginproperty Font

Single

"Instrucciones"

Sans Serif" name = "MS

charset weight size = 8.25 underline = o italic = o strikethrough = O

= o = 700

' False

' False

' False Endproperty Height Left TabIndex Top = 1320 Width

= 255 = 240 = 59

= 1215 End Yegin VB.Label Label2

Alignment Borderstyle

= 2 'Center = 1 'Fixed

Single

9

Page 112: Ruíz !Y - 148.206.53.84148.206.53.84/tesiuami/UAM5688.pdfMODOS DE DIRECCIONAMIENTO ... El Intel 4004 es el primer microprocesador aparecido en el ... se almacenan en un stack de 4

Caption = "Dirección

Beginproperty Font Editar"

name = "MS

charset weight

= o = 700

size = 8.25 underline = o italic = o strikethrough = O

Sans Serif"

' False

' False

' False Endproperty Height = 255 Left TabIndex

= 240 = 58

Top = 5640 Wldth = 2415

End End Begin Threed.SSPane1 SSPanel2

Height Left

= 6135

Tablndex = o = 57

Width = o = 5415

- Version = 65536 ExtentX = 9551 ExtentY = 10821

Forecolor = 15

Backcolor = 33023 = 4210752

Bevelwidth Borderwidth

= 10

Outline = 5

FloodColor = -1 'True = 14737632

Font3D = 2

TOP

- - - StockProps

End Begin VB.Label Label8

Borderstyle = 1 'Fixed

Caption - ~

Beginproperty Font

Single

"c: \actualizacion\anonimo"

name

charset = o weight = 400 size = 8.25 underline = O 'False italic strikethrough = O 'False

= O 'False

Endproperty Height Left TabIndex TOP Wldth

Serif" = "MS Sans

= 255 = o = 54 = 6120

End = 4575

Begin ComctlLib.ProgressBar ProgressBarl

Height Left TabIndex = 55

Width ~ Version ExtentX ExtentY

= 255 = 4560

TOP = 6120 = 2655 = 65536 = 4683 = 450

~ StockProps = 192 Appearance = 1 Borderstyle = 1

- -

End Begin VB.Labe1 Label7

Alejandro Montejo Rubio

Simulador del Sistema Mínimo Inte l 8088 Proyecto Terminal

Alignment Borderstyle

= 2 'Center = 1 'Fixed

Captlon = "Label7" Beyinproperty Font

Single

Serif" name = "MS Sans

charset = o weight = 400 size = 8.25 underline = O 'False italic = O 'False strikethrough = O 'False

Height Endproperty

Left = 8400 TabIndex = 53

Width

= 255

TOP = 6120

End Begin VB.Labe1 Label6

= 1215

Alignment = 2 'Center Borderstyle = 1 'Fixed

Captlon = "Label6" Beginproperty Font

Single

name

charset = o weight = 400

underline size = 8.25

= O 'False Italic = O 'False strikethrough = O 'False

Serif" = "MS Sans

Endproperty Helght Left TabIndex = 52

Wldth

= 255 = 7200

= 6120 = 1215

TOP

End Begln VB.Labe1 Label3

Alignment Backcolor

= 2 'Center = &HOOCOCOCO&

Borderstyle = 1 'Flxed Single

Caption Sistema Minim0 8088"

Beginproperty Font

= "Simulador

name = "MS Sans

charset = o weight = 400 size = 8.25 underline = O 'False italic = O 'False strikethrough = O 'False

Serlf"

Endproperty Forecolor = &H00000000& Height = 255 Left = o TabIndex TOP Width

= 51 = 6360 = 9615

End Begin MSComDlg.CommonDialog Abrirmem

Left = 2520 TOP = 3960 Verslon ExtentX

= 65536

ExtentY = 841

StockProps = o FlleName = IN * . mem" Filter = I8 * , mem"

~

~

- = a47 ~

End Begln VB.Labe1 Label1

10

Page 113: Ruíz !Y - 148.206.53.84148.206.53.84/tesiuami/UAM5688.pdfMODOS DE DIRECCIONAMIENTO ... El Intel 4004 es el primer microprocesador aparecido en el ... se almacenan en un stack de 4

Simulador del Sistema Mínimo Inte l 8088 Proyecto Terminal

Alignment = 2 'Center Appearance = O 'Flat BackColor = &HOOCOCOCO& Borderstyle = 1 'Fixed

Caption = "Universidad

Beginproperty Font

Single

Autonoma Metropolitana"

name = "MS Sans

charset = o weight = 700 size = 8.25 underllne = O 'False italic = O 'False strikethrough = O 'False

Serif"

EndProperty Forecolor = &H00000000& Height Left TabIndex

Width

= 270 = o = 22

= 9615 TOP = 6645

End Begln VB.Menu Archivo

Captlon = "&Archivo" Begin VB.Menu MenuAbrir

Caption = "&Abrir" Shortcut

End Begin VB.Menu MenuGuardar

= ^A

Caption = "&Guardar" Shortcut

End Begin VB.Menu Regresar-indice

= "G

Caption Shortcut

= "&Indice" = ^I

End Begin VB.Menu Salir

Caption Shortcut

= "&Salir" = ^X

End End Begin VB.Menu Comandos

Caption = "&Comandos" Begin VB.Menu

CambiaDireccionEdicionComando

direccion Edicion" Caption = "&Cambiar

Shortcut = ^C End Begin VB.Menu Separador

End Begin VB.Menu Ejecutar

~ Caption - 11 - 11

- ~

"&Ejecutar" Caption

Shortcut = ^E End Begin VB.Menu MenuDesensamblar

- -

"&Desensamblar"

End

Caption

Shortcut = ^D

End Begin VB.Menu Ayuda

Caption = "&Ayuda" Begin VB.Menu Hlstoarial

- -

"&Historial" Caption

Shortcut = ^H End

End Attribute VB-Name = "Form2" Attribute VB-Creatable = False

End

Attrlbute VB-Exposed = False

Private Sub ASB-8805-ClickO ' Este evento ejecuta los procedimientos necesarios para mostrar el grafico y la informaclón ' textual de cada componente flsico del sistema 8088, 'La llamada al segundo procedimiento se efectua pasando los argumentos al procedimiento 'con los nombres de los archlvos necesarios para cada componente

Call Coordenadas Call Componentes-lnformacion ("pic7 .bmp", "hm6264. txt")

End Sub

Private Sub ASB_8805~MouseMove(Button As Inteqer, Shift As Integer, X As Single, Y As Single) ' Muestra mensale en la parte inferior de la pantalla el mensaje" Label3.Caption = "Oprima sobre el componente un click, para información" End Sub

Private Sub CambiaDireccionEdicionComando-Click0 'Segmento$ = InputBox("Dame el segmento") ' 'While Len(Segmento$) < 4

I Wend Segmento$ = "0000" Desplazamiento$ = InputBox ("Dame el desplazamiento")

Val (1023) Then If CLng("&h" + Desplazamiento$) <

While Len(Desp1azamientoS) < 4

Desplazamiento$ Wend DlreccionEditar = CLng ("&H" + Segmento$) * 16 + CLng("&H" + Desplazamiento$) DireccionEditarl = UCase(Segmento$ +

Else respuesta = MsgBox("E1 desplazamlento esta fuera de rango ,ya que el segmento de código es de tamaño lk (1024) equivalente a '03FF'") End If

End Sub

1 Segmento$ = "O" t Segmento$ I '

DesplazamlentoS = "O" +

11 . . I, t Desplazamiento$)

Private Sub Commandl--Click ( ) Set Descod = DireccionEditarl

End Sub Forml.Show 1

Alejandro Montejo Rubio 11

Page 114: Ruíz !Y - 148.206.53.84148.206.53.84/tesiuami/UAM5688.pdfMODOS DE DIRECCIONAMIENTO ... El Intel 4004 es el primer microprocesador aparecido en el ... se almacenan en un stack de 4

Prlvate Sub Commandl-MouseMoveiButton As Integer, Shift As Integer, X As Single, Y As Single) I Muestra mensale en la parte inferior de la pantalla el mensaje" Label3,Caption = "Tecle de elecución, llama al CPU interno" End Sub

Private Sub Command2-ClickO 1nformacion.Visible = False

End Sub

Private Sub Command3-Click0 ' Esta Sub Cierra la ventana de información de componentes fisicos

End Sub

Private Sub DISPLAY-MouseMove(Butt0n AS Integer, Shift As Integer, X As Single, Y As Single) ' Muestra mensaje en la parte inferior de la pantalla el mensaje" Label3.Caption = "Display de edición, solo vlsula imposible editar programas" End Sub

SSPanel1.Vlsible = False

Private Sub Ejecutar-CllckO Descod = DireccionEdltar1,Text Forml.Show 1 End Sub

Private Sub Form-Load0

"\mnemonicos. 1st" Nombre$ = App.Path f

1 = 0 ReDim mnemonicos (10) Open Nombre$ For Input As 1 '

Apertura del archivo microinstruciones.lst

While Not EOF(1) Input #1, mnemonicos (i) ' Se

i = i + l inicializa el arreglo de mnemonicos

Wend MaximoCodigo = i Close 1 CodigoOperacion = O DireccionEditar = &HO ' Se

inlcailiza la dirreccion inicial para edltar un programa

For i = O To 15

Next i For i = 3 To 4

Next i DISPLAY.Text =

Direccionamiento = 1

RegistrosiO) = "AL" ' Se

Tecla (i) .Enabled = False

Funcion(i).Enabled = False

mnemonicos(Codigo0peracion)

lniclalizan el arreglos de registros del microporcesador

Registros (1) = "AH" Registros (2) = "BL" Registros ( 3 ) = "BH" Registros ( 4 ) = "CL" Registros (5) = "CH" Registros ( 6 ) = "DL" Registros (7) = "DH" Registros ( 8 ) = "AX"

Alejandro Montejo Rubio

Simulador del Sistema Mínimo Inte l 8088 Proyecto Terminal

Registros (9) = "BX" Registros(l0) = "CX" Registros(l1) = "DX" Reglstros(l2) = "SI" Registros (13) = "DI" Registros (14) = "BP" Registros(l5: = "SS" ReGistros (16) = "ES" Registros(l7) = "DS" Registros (18) = "CS" ( 1 Inicialización del arreglo de

codigos de error

Codigosdeerror ( O ) = "El Segmento de código, esta definido en O000 H"

Codigosdeerror ( 1 ) = "El Segmento de datos, esta definido en 0400 H"

Codigosdeerror(2) = "El Segmento de pila, esta definodo en 0800 HI'

Codigosdeerror(3) = "El Segmento estra esta, deflnido en OCOO H"

Codigosdeerror ( 4 ) = "La divlsión excede el tamaño de un registro de 8 bits,favor de modificar los registros AX y el XL ''

Codigosdeerror (5) = "libre" Codigosdeerror (6) = "libre" Codigosdeerror (7) = "libre" Cod'gosdeerror (8) = "libre" Codigosdeerror (9) = "libre"

' ListaDirecclonamiento(1) =

' ListaDirecclonamiento ( 2 ) = "Inmediato"

"Registro"

de operación LeeDatosOperacion ' llamada a datos

Edicion = O SegDesensamblar = O

End Sub

Control, X As Single, Y As Single) Private Sub FramelpDragDrop(Source As

End Sub

Private Sub Funcion-Click(1ndex As Integer)

Select Case Index Case O

'TECLA DE BUSQUEDA DE

CodigoOperacion =

If CodigoOperacion >=

CODIGO DE OPERACION 1

CodigoOperacion + 1

MaximoCodigo Then CodigoOperacion = MaximoCodigo - 1

Operacion(CodlgoOperaclon).mnemonico DISPLAY.Text =

Case 1

CODIGO DE OPERACION 2 'TECLA DE BUSQUEDA DE

If CodigoOperacion > O Then CodigoOperacion =

CodigoOperacion - 1 End If DISPLAY.Text =

Operacion(CodigoOperacion).mnemonico Case 2

' ENTER Select Case Edicion

Case O If

Operacion(CodigoOperacion).ByteRegl Then

12

Page 115: Ruíz !Y - 148.206.53.84148.206.53.84/tesiuami/UAM5688.pdfMODOS DE DIRECCIONAMIENTO ... El Intel 4004 es el primer microprocesador aparecido en el ... se almacenan en un stack de 4

1

Edicion = 1

Funcion(O).Enabled = False

Funcion(1) .Enabled = False

Funcion(3) .Enabled = True

Funcion(4).Enabled = True

Operacion(CodigoOperacion).Dato8 Then

ReglstroActual > 7 Then RegistroActual = 7

If

If

End If If

Operacion(CodigoOperacion).DatoHi Then

RegistroActual < 8 Then RegistroActual = 8

If

End If DISPLAY.Text =

Registros(RegistroActual!

Operacion(CodigoOperacion!.OffHi Then ElseIf

Ediclon = 2 DISPLAY.Text =

'I o o Funcion ( O ) .Enabled = False

Funcion (1) .Enabled = False

15

Tecla(Temp).Enabled = True

End If

Memoria(Direcci0nEditar) = CodigoOperacion

DireccionEditar + 1

Left(DirecclonEditarl.Text, 5 )

Right(DireccionEditarl.Text, 4 )

Tipos.BinHex(CLng(AuxlS) + 1 )

4

For Temp = O To

Next Temp

DireccionEditar =

auxS =

AuxlS = "LH" +

AuxlS =

While Len(Aux1S) <

AuxlS = "o" + AuxlS

Wend

DlreccionEditarl.Text = dux$ + AuxlS Case 1

If Operaclon(CodigoOperacion).ByteReg? Then

Edicion = 4 If

Operaclon(CodlgoOperacion).DatoHi Then

RegistroActual < 8 Then RegistroActual = 8

If

End If DISPLAY.Text =

Reglstros(RegistroActua1)

Funcion

Funcion

Funcion

Alejandro Montejo Rubio

O) .Enabled = False

1) .Enabled = False

3) .Enabled = True

Simulador del Sistema Minimo Inte l 8088 Proyecto Terminal

Funcion(4).Enabled = True

Operacion(CodigoOperacion).Dato8 Then Elself

Ediclon = 5 DISPLAY.Text

o o " Funzion (3) .Enabled = False

Funclon (4) .Enabled = False

15

Tecla(Temp).Enabled = True

ElseIf

For Temp = O To

Next Temp

Operacion(CodigoOperacion).DatoHi Then Edlcion = 6 D1SPLAY.Text =

"00"

Funcion ( 3 ) .Enabled = False

Funcion(4).Enabled = False

15

Tecla (Temp) .Enabled = True

ElseIf

For Temp = 0 To

Next Temp

Operacion(CodigoOperaclon).OffHi Then Edicion = 8 DISPLAY.Text =

o o Funcion(3).Enabled = False

Funcion (4) .Enabled = False

15

Tecla(Temp) .Enabled = True

For Temp = O To

Next Temp

Edicion = O DISPLAY.Text =

For Temp = O To

Else

Operacion(CodigoOperacion).mnemonico

15

Tecla(Temp).Enabled = False Next Temp

Funcion (01 .Enabled = True

Funcion(l).Enabled = True

Funcion ( 3 ) .Enabled = False

Funclon(4) .Enabled = False End If

Memoria(DireccionEdltar) =

RegistroActual

DireccionEditar + 1

Left(DireccionEditarl.Text, 5)

Right(DlreccionEdltarl.Text, 4)

Tipos. BinHex (CLng (AuxlS) + I)

4

DireccionEditar =

auxS =

AuxlS = "&H" +

AuxlS =

While Len(Aux1S) <

13

Page 116: Ruíz !Y - 148.206.53.84148.206.53.84/tesiuami/UAM5688.pdfMODOS DE DIRECCIONAMIENTO ... El Intel 4004 es el primer microprocesador aparecido en el ... se almacenan en un stack de 4

Aux 1 $ Auxl$ = "O" -I

Wend

DireccionEditarl.Text = dux$ + Auxl$ Case 2

Edicion = 3

Memoria(DireccionEditar) = CLng("&h" + DISPLAY. Text)

DireccionEdltar + 1

Left(DireccionEditarl.Text, 51

Right(DireccionEditarl.Text, 4 )

Tipos.BinHex(CLng(Auxl$) + 1)

4

AuxlS

DireccionEditar =

auxS =

AuxlS = "&H" +

Auxl$ =

While Len (AuxlS) <

AuxlS = "O" +

Wend

DireccionEditarl.Text = dux$ + Auxl$ DISPLAY. Text = "00"

Case 3 If

Operacion(CodigoOperaclon).ByteRegZ Then

Edicion = 4 If

Operacion(CodigoOperacion).DatoHl Then

RegistroActual < 8 Then RegistroActual = a

If

End If For Temp = O TO

15

Tecla(Temp).Enabled = False Next Temp

Funcion(3) .Enabled = True

Funcion(4).Enabled = True

Memoria (DireccionEditar) = CLng ("&h" + DISPLAY.Text)

DISPLAY.Text =

Registros(RegistroActua1) Else

Edicion = O

Memoria (DireccionEditar) = CLng("&h" + DISPLAY.Text)

DISPLAY.Text =

Operacion(CodigoOperacion).mnemonico For Temp = O To

15

Tecla(Temp).Enabled = False Next Temp

Funcion(0) .Enabled = True

Funcion(l).Enabled = True

Funcion ( 3 ) .Enabled = False

Funcion (4) .Enabled = False End If DireccionEditar =

auxS = DireccionEditar + 1

Left(DireccionEdltarl.Text, 5 )

Alejandro Montejo Rubio

Simulador del Sistema Minimo Intel 8088 Proyecto Terminal

Right(DirecclonEditarl.Text, 4 )

Tipos.BinHex(CLng(Auxl$) + 1)

4

AuxlS

Auxl$ = "&H" +

Auxl$ =

Wh.lle Len(Auxl$) c

AuxlS = "O" +

Wend

DireccionEditarl.Text = aux$ + AuxlS Case 4

Edlcicn = O DISPLAY.Text =

For Temp = O To Operacion(CodigoOperacion).mnemonico

15

Tecla(Temp).Enabled = False Next Temp

Funcion(O).Enabled = True

Funcion(l).Enabled = True

Funclon ( 3 ) .Enabled = Fa1 se

Funclon ( 4 ) .Enabled = False

Memoria(DireccionEd1tar) = RegistroActual

DireccionEditar + 1

Left(DireccionEditarl.Text, 5)

Right(DireccionEditarl.Text, 4 )

Tipos. BinHex (CLng (AuxlS) + 1)

4

AuxlS

DireccionEditar =

auxS =

Auxl$ = "&H" +

AuxlS =

While Len(Auxl$) <

Auxl$ = "O" +

Wend

DirecclonEditar1,Text = dux$ + AuxlS Case 5, 7, 9

Edicion = O For Temp = O To

15

Tecla(Temp).Enabled = False Next Temp

Funclon(O).Enabled = True

Funcion(l).Enabled = True

Funcion (3) .Enabled = False

Funcion(4).Enabled = False

Memoria (DireccionEditar) = CLng ("&h" + DISPLAY.Text1

DireccionEdltar + 1

Left(DirecclonEditarl.Text, 5 )

Right(DlreccionEditarl.Text, 4)

Tipos.BinHex(CLng(Auxl$) + 1)

4

Aux 1 $

DirecclonEditar =

dux$ =

AuxlS = "&H" +

Auxl$ =

While Len (AuxlS) <

AuxlS = "O" +

14

Page 117: Ruíz !Y - 148.206.53.84148.206.53.84/tesiuami/UAM5688.pdfMODOS DE DIRECCIONAMIENTO ... El Intel 4004 es el primer microprocesador aparecido en el ... se almacenan en un stack de 4

Simulador del Sistema Mínimo Intel 8088 Proyecto Terminal

Wend

DireccionEditarl.Text = aux$ + AuxlS

Operacion(CodigoOperacion).mnemonico DISPLAY.Text =

Case 6 Edicion = 7

Memoria (DireccionEditar) = CLng("&h" + DISPLAY.Text)

DISPLAY. Text = "00" DireccionEditar =

auxS = DireccionEditar + 1

Left(DireccionEdltarl.Text, 5)

Right

Tipos

4

AuxlS

Direc

1 AuxlS = "&U" +

AuxlS =

While Len(Aux1S) <

DireccionEditarl.Text, 4)

BinHex (CLng (AuxlS) + 1)

AuxlS = "O" +

C

Wend

ionEditarl.Text = aux$ + AuxlS Case 8

Edicion = 9

Memoria (DireccionEditar) = CLnq ("&h" + DISPLAY.Text)

DISPLAY .Text = "00" DireccionEditar =

auxS = DireccionEditar + 1

Left(DlreccionEditarl.Text, 5)

Right(DireccionEditarl.Text, 41

Tipos.BlnHex(CLnq(Auxl$) + 1)

4

AuxlS

AuxlS = "&H" +

Auxl$ =

While Len(Aux1S) <

Auxl$ = "O" +

Wend

DireccionEditar1.Text =- aux$ + AuxlS

End Select

RegistroActual =

If RegistroActual > 18 Then

If

Case 3

RegistroActual + 1

RegistroActual = 18

Operaclon(CodlgoOperacion).Dato8 Then If RegistroActual > 7

Then RegistroActual = 7 End If If

Operacion(CodigoOperacion).DatoHi Then

Then RegistroActual = 8 If RegistroActual < 8

End If DISPLAY.Text =

Registros (RegistroActual) Case 4

If RegistrcActual > O Then

If RegistroActual = RegistroActual - 1

Operacion(CodigoOperaclon).DatoE Then If RegistroActual > 7

Then RegistroActual = 7 End If If

Operaclon(CodigoOperaclon).DatoHi Then

Alejandro Montejo Rubio

If RegistroActual c 8 Then RegistroActual = 8

End If DISPLAY.'cxt =

Reqistros(ReqistroActua1)

End Sub End Select

Private Sub Funcion-MouseMove(1ndex As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single) ' Muestra mensaje en la parte inferior de la pantalla el mensaje" Label3. Caption = "Teclas de edición" End Sub

Private Sub Histoarlal-CllckO historial.Show End Sub

Prlvate Sub Intel-D80314H-ClickO ' Este evento elecuta los procedimientos necesarios para mostrar el grar:co y la información ' textual de cada componente fisico del sistema 8088, 'La llamada al segundo procedimiento se efectua pasando los argumentos al procedimiento 'con los nombres de los archivos necesarios para cada componente

Call Coordenadas Call Componentes-informacion ("pic9. bmp", "8088.txt")

End Sub

Private Sub Intel-D80314H~MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) ' Muestra mensale en !a parte inferior de la pantalla el mensaje" Label3.Caption = "Oprima sobre el componente un click, para información"

End Sub

Private Sub MenuAbrir-CllckO ' AbrirArchivo

Dim Dlreccion A s Long Dim Tamaño As Integer Dim Dato As Byte Dim contador As Integer

For i = O To 65535 Step 1 Memoria(i) = CLng("&h" + "00")

Dlm i

Next i ' Form1 . DE. Text = "O000 : 0000" CodigoOperacion = O DireccionEditar = &HO

Pru?ressBarl.Min = 1 ProgressBarl.Max = 25 ProgressBarl.Value =

ProgressBarl.Min

On Error GoTo Finalizar Label8.Captlon = "Archivo: " +

Abrirmem.ShowOpen Abrirmem.filename

15

Page 118: Ruíz !Y - 148.206.53.84148.206.53.84/tesiuami/UAM5688.pdfMODOS DE DIRECCIONAMIENTO ... El Intel 4004 es el primer microprocesador aparecido en el ... se almacenan en un stack de 4

1 Open Abrirmem.filename For Input As

While Not EOF(1j On Error GoTo Finalizarcerrar

Input # I , Direccion, Tamaño

For i = 1 To Tamaño

Input #1, Dato Memoria(Direcci0n + i - 1)

= Dato ProgressBarl.Value = i

Wend

ProgressBarl.Min

Finalizarcerrar: Close 1 Forml.HazDump

Next i

' ProgressBarl.Value =

Finalizar:

End Sub

Private Sub MenuDesensamblar-Click0 Desensamblador.Show 1

End Sub

Private Sub MenuGuardar-Click0 ' GuardarArchivo

Dim Direccion AS Long

On Error GoTo Finalizar Dim Tamaño As Integer

Abrirmem.Flags = &H806& Abrirmem.DialogTit1e = "Guardar

Abrirmem.ShowSave Open Abrirmem.filename For Output

As 1 Label8 .Caption = "Archivo : " +

Abrirmem.filename Direccion = O Do

memoria"

Direccion =

If Direccion >= 1023 Then Exit

Print #1, Direccion dux& = Direccion Tamaño =

Print #1, Tamaño For i = 1 To Tamaño

Forml.ObtenDireccionNoCero(Direccionj

Do

Forml.ObtenTamaño(aux&j

Print # I , Memoria(Direcci0n + i - 1)

Next i Direccion = Direcclon + Tamaño

Loop Until Direccion >= 1023

Close 1 Finalizar:

End Sub

Private Sub Nec-8627P7-ClickO

procedimientos necesarios para mostrar ' Este evento ejecuta los

el grafico y la información

Alejandro Montejo Rubio

Simulador del Sistema Mínimo Inte l 8088 Proyecto Terminal

' textual de cada componente fisico del sistema 8088, 'La llamada al segundo procedimiento se efectua pasando l o s argumentos al prozedimiento 'con los nombres de los archivos necesarios para cada componente

Call Coordenadas Call Componentes informacion("picl4 .bmp", " 8 2 5 5 . txt"j-

End Sub

Private Sub Ne~-8627P7~MouseMove(Button As Integer, Shift As Integer, X As Slngle, Y As Single) ' Muestra mensaje en la parte inferlor de la pantalla el mensaje" Label3.Caption = "Oprima sobre el componente un cllck, para Información" End Sub

Prlvate Sub Nec-D8279C2_CllckO ' Este evento ejecuta los procedimientos necesarios para mostrar el grafico y la información ' textual de cada componente fisico del sistema 8088, 'La llamada al segundo procedimiento se efectua pasando los argumentos al procedimiento 'con los nombres de los archivos necesarios para cada componente

Call Coordenadas Call Componentes-informacion ("pic13 .bmp", "8279.txt"j

End Sub

Private Sub Nec D8?79C2-MouseMove(Button As Integer, Shift As Integer, X As Single, Y A; Single) ' Muestra mensale en la parte inferior de la pantalla el mensaje" Label3.Caption = "Oprima sobre el componente un click, para información" End Sub

Private Sub PHIL-9131XN-CllckO ' Este evento ejecuta los procedimientos necesarios para mostrar el grafico y la información ' textual de cada componente fisico del slstema 8088, 'La llamada al segundo procedimiento se efectua pasando los argumentos al procedimiento 'con los nombres de los archivos necesarios para cada componente Call Coordenadas Call Componentes informacion ( " ~ 1 ~ 6 . bmp", "0809.txt")-

End Sub

Private Sub PHIL_9131XNMouseMove(Button AS

Y As Single) Integer, Shift As Integer, X As Single,

16

Page 119: Ruíz !Y - 148.206.53.84148.206.53.84/tesiuami/UAM5688.pdfMODOS DE DIRECCIONAMIENTO ... El Intel 4004 es el primer microprocesador aparecido en el ... se almacenan en un stack de 4

' Muestra mensaje en la parte inferior de la pantalla el mensaje" Label3.Caption = "Oprima sobre el componente un click, para información" End Sub

Private Sub Picturel-Click0 ' Este evento ejecuta los procedimientos necesarios para mostrar el grafico y la información ' textual de cada componente flslco del sistema 8088, 'La llamada al segundo procedimiento se efectua pasando los argumentos al procedimiento 'con los nombres de l o s archlvos necesarios para cada componente

Call Coordenadas Call Componentes-informaclon ( " ~ 1 ~ 1 7 . bmp", "14245. txt")

End Sub

Private Sub Picturel-MouseMove(Butt0n As Integer, Shift As Integer, X As Single, Y As Single) ' Muestra mensaje en la parte Inferior de la pantalla el mensaje" Label3.Caption = "Oprima sobre el componente un click, para información" End Sub

Private Sub Picturelo-Click0 ' Este evento ejecuta los procedimientos necesarios para mostrar el grafico y la información ' textual de cada componente fisico del sistema 8088, 'La llamada al segundo procedimiento se efectua pasando los argumentos al procedimiento 'con los nombres de los archivos necesarios para cada componente

Call Coordenadas Call Componentes-informacion ("picl9. bmp", "7404. txt")

End Sub

Private Sub Picturelo-MouseMove(Butt0n As Integer, Shift As Integer, X As Slngle, Y As Single) ' Muestra mensaje en la parte inferior de la pantalla el mensaje" Label3.Caption = "Oprima sobre el componente un cllck, para informaclón" End Sub

Private Sub Picturell-Click0 ' Este evento elecuta los procedimientos necesarlos para mostrar el grafico y la información ' textual de cada componente fislco del sistema 8088, 'La llamada al segundo procedimiento se

procedimiento efectua pasando los argumentos al

'con los nombres de los archivos necesarios para cada componente

Call Coordenadas

Alejandro Montejo Rubio

Simulador del Sistema Mínimo Inte l 8088 Proyecto Terminal

Call Componentes informacion ("picl9. bmp", 9 , 7 4 0 4 . txt")-

End Sub

Private Sub Picturell-MouseMove(Butt0n As Integer, Shift As Integer, X As Single, Y As Single) ' Muestra mensaje en la parte inferior de la pantalla el mensaje" Label3,Caption = "Oprlrna sobre el componente un click, para información" End Sub

Private Sub PicturelZPClick0 ' Este evento ejecuta los procedimientos necesarios para mostrar el grafico y la información ' textual de cada componente fislco del sistema 8088, 'La llamada al segundo procedlmiento se efectua pasando los argumentos al procedimiento 'con los nombres de los archivos necesarios para cada componente

Call Coordenadas Call Componentes lnformacion ("pic15 .bmp", "7414. txt")-

End Sub

Private Sub Pi~turel2~MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) ' Muestra mensaje en la parte inferior de la pantalla el mensaje" Label3.Caption = "Oprima sobre el componente un click, para información" End Sub

Private Sub Plcturel3-ClickO ' Este evento elecuta los procedimientos necesarios para mostrar el grafico y la información ' textual de cada componente fisico del sistema 8088, 'La llamada al segundo procedimiento se efectua pasando los argumentos al procedimiento 'con los nombres de los archivos necesarios para cada componente

Call Coordenadas Call Componentes informacion("pic2. bmp", "8push. txt"7

End Sub

Private Sub Picturel3~MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) ' Muestia mensaje en la parte inferior de la pantalla el mensaje" Label3.Caption = "Oprima sobre el componente un click, para información" End Sub

Private Sub Picturel4-Click0 ' Este evento ejecuta los procedimientos necesarios para mostrar el grafico y la información

17

Page 120: Ruíz !Y - 148.206.53.84148.206.53.84/tesiuami/UAM5688.pdfMODOS DE DIRECCIONAMIENTO ... El Intel 4004 es el primer microprocesador aparecido en el ... se almacenan en un stack de 4

' textual de cada componente fisico del sistema 8088, 'La llamada al segundo procedimiento se efectua pasando los argumentos al procedimiento 'con los nombres de los archivos necesarios para cada componente

Call Coordenadas Call Componentes-informacion ("pic21. bmp", "resis. txt")

End Sub

Prlvate Sub Pi~turel4~MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) ' Muestra mensaje en la parte inferior de la pantalla el mensaje" Label3.Captlon = "Oprima sobre el componente un click, para información" End Sub

Private Sub Picturel5-Click0 ' Este evento ejecuta los procedimientos necesarios para mostrar el grafico y la información ' textual de cada componente fisico del sistema 8088, 'La llamada al segundo procedimiento se efectua pasando los argumentos al procedlmiento 'con los nombres de los archivos necesarios para cada componente

Call Coordenadas Call Componentes-informacion ("picl6. brnp", "resis. txt")

End Sub

Private Sub PicturelS~MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) I Muestra mensaje en la parte inferior de la pantalla el mensaje" Label3.Caption = "Oprima sobre el componente un cllck, para información" End Sub

Private Sub Pict~relG~ClickO ' Este evento ejecuta los procedimientos necesarios para mostrar el graflco y la información ' textual de cada componente fisico del sistema 8088, 'La llamada al segundo procedlmiento se efectua pasando los argumentos al procedimlento 'con los nombres de los archivos necesarios para cada componente

Call Coordenadas Call Componentes informacion ("pic12 .bmp", "capa. txt")

End Sub

Private Sub PicturelG-MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) ' Muestra mensaje en la parte inferior de la pantalla el mensaje"

Alejandro Montejo Rubio

Simulador del Sistema Mínimo Intel 8088 Proyecto Terminal

Label3.Taption = "Oprima sobre el componente un click, para información" End Sub

Private Sub PictureZ-Click(Index As Integer) ' Este evento ejecuta los procedimientos necesarios para mostrar el grafico y la información ' textual de cada componente fisico del sistema 8088, 'La llamada al segundo procedimiento se efectua pasando los argumentos al procedimiento 'con los nombres de los archivos necesarios para cada componente

Call Coordenadas Call Componentes informacion ("pic3. bmp", "2764. txt")-

End Sub

Private Sub Picture2-MouseMove(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single) ' Muestra mensaje en la parte inferior de la pantalla el mensaje" Label3.Caption = "Oprlma sobre el componente un click, para información" End Sub

Private Sub Pi~ture3~ClickO ' Este evento ejecuta l o s procedimientos necesarios para mostrar el grafico y la Información ' textual de cada componente fisico del sistema 8088, 'La llamada al segundo procedimiento se efectua pasando l o s argumentos al procedimiento 'con lo$ nombres de los archivos necesarios para cada componente

Call Coordenadas Call Componentes-informacion ("pic8. bmp", "74373. txt") End Sub

Private Sub Picture3_MouseMove(Button As Integer, Shift As Integer, X As Slngle, Y As Single) ' Muestra mensaje en la parte inferlor de la pantalla el mensaje" Label3.Caption = "Oprima sobre el componente un click, para información" End S u b

Private Sub Pict~re4~CllckO ' Este evento elecuta los procedimientos necesarios para mostrar el yrzfico y la información ' textual de cada componente fisico del sistema 8088, 'La llamada al segundo procedimiento se efectua pasando los argumentos al procedimiento 'con los nombres de los archivos necesarios para cada componente

Call Coordenadas Call Componentes-informacion ("pic1 .bmp", "7432. txt")

18

Page 121: Ruíz !Y - 148.206.53.84148.206.53.84/tesiuami/UAM5688.pdfMODOS DE DIRECCIONAMIENTO ... El Intel 4004 es el primer microprocesador aparecido en el ... se almacenan en un stack de 4

End Sub

Private Sub Picture4~MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) ' Muestra mensaje en la parte inferior de la pantalla el mensaje" Label3.Captlon = "Oprima sobre el componente un click, para información" End Sub

Private Sub Pi~ture5~Click(Index As Integer) ' Este evento ejecuta los procedimientos necesarios para mostrar el grafico y la información ' textual de cada componente flsico del sistema 8088, 'La llamada al segundo procedimiento se efectua pasando los argumentos al procedimiento 'con los nombres de los archivos necesarios para cada componente

Call Coordenadas Call Componentes informacion ("pic4 .bmp", "74121. txt")

End Sub

Private Sub Picture5-MouseMove(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single) ' Muestra mensaje en la parte inferior de la pantalla el mensaje" Label3.Caption = "Oprima sobre el componente un click, para información" End Sub

Private Sub Picture6-Click0 ' Este evento ejecuta los procedimientos necesarios para mostrar el grafico y la información ' textual de cada componente fisico del sistema 8088, 'La llamada al segundo procedimiento se efectua pasando los argumentos al procedlmiento 'con los nombres de los archivos necesarios para cada componente

Call Coordenadas Call Componentes-informacion ("piclo. bmp", ''7400. txt")

End Sub

Private Sub PictureG-MouseMove(Butt0n As Integer, Shift As Integer, X As Single, Y As Single) ' Muestra mensaje en la parte inferior de la pantalla el mensaje" Label3.Caption = "Oprima sobre el componente un click, para información" End Sub

Private Sub Pi~ture7~ClickO

procedimientos necesarios para mostrar ' Este evento ejecuta los

el grafico y la información ' textual de cada componente fisico del sistema 8088,

Alejandro Montejo Rubio

Simulador del Sistema Mínimo Intel 8088 Proyecto Terminal

'La llamada al segundo procedimiento se efectua pasando los argumentos al procedimiento 'con los nombres de los archlvos necesarios para cada componente

Call Coordenadas Call Componentes-informacion ("pic5 .bmp", "sn75188. txt")

End Sub

Private Sub Picture7~MouseMove(Button As Integer, Shlft As Integer, X As Single, Y As Slngle) ' Muestra mensaje en la parte inferior de la pantalla el mensaje" Label3.Caption = "Oprima sobre el componente un cli.ck, rara informaclón" End Su;.

Private Sub Picture8PClick0 ' Este evento ejecuta los procedimientos necesarios para mostrar el grafico y la información ' textual de cada componente fisico del sistema 8088, 'La llamada al segundo procedimiento se efectua pasando los argumentos al procedimiento 'con los nombres de los archivos necesarios para cada componente

Call Coordenadas Call Componentes-informacion ("picll. bmp", "74138.txt")

End Sub

Private Sub Pi~ture8~MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) ' Muestra mensaje en la parte inferior de la pantalla el mensaje" Label3.Caption = "Oprima sobre el componente un click, para información" End Sub

Private Sub Picture9-Click0 ' Este evento ejecuta los procedimientos necesarios para mostrar el grafico y la información

slstema 8088, ' textual de cada componente fislco del

'La llamada al segundo procedimiento se efectua pasando los argumentos al procedimiento 'con los nombres de los archivos necesarios para cada componente

Call Coordenadas Call Componentes informacion ("picl8. bmp", "74138. txt"7

End Sub

Private Sub Picture9MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) ' Muestra mensaje en la parte inferior de la pantalla el mensaje" Label3.Caption = "Oprima sobre el componente un click, para información"

19

Page 122: Ruíz !Y - 148.206.53.84148.206.53.84/tesiuami/UAM5688.pdfMODOS DE DIRECCIONAMIENTO ... El Intel 4004 es el primer microprocesador aparecido en el ... se almacenan en un stack de 4

End Sub

Private Sub Regresar-indicePClick() Hide Unload Form2

End Sub Portada.Show

Prlvate Sub Reset-Click0 Dlm i For i = 0 To 65535 Step 1 Memoria(i) = CLng("&h" + "00" Next i DirecclonEditarl.Text = "0000 CodigoOperacion = O

DirecclonEditar = &HO End Sub

1

: 0000"

Private Sub Reset-MouseMovelButton As Integer, Shift As Integer, X As Single, Y As Single) ' Muestra mensaje en la parte inferior de la pantalla el mensaje" Label3.Caption = "Resetea la memoria" End Sub

Private Sub Salir-Click0

End Sub End

Private Sub SSCommandl-CllckO

End Sub

Prlvate Sub SSPanell"ouseMove(Butt0n As Integer, Shift As Integer, X As Single, Y As Single) ' Muestra mensaje en la parte inferior de la pantalla el mensaje" Label3.Caption = "Area de edición de programas" End Sub

Private Sub SSPanel2~MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) ' Muestra mensaje en la parte inferior de la pantalla el mensaje" Label3.Caption = "Area sin uso en ejecución" End Sub

Private Sub Tecla-Click(1ndex As Integer)

ob~eto display el valor hexadecimal de ' Este procedimiento muestra en el

la tecla oprimlda

If DigitosHex = O Then DISPLAY.Text

If DigitosHex = 2 Then DISPLAY.Text =

Rlght (DISPLAY. Text, 11 DigitosHex = DigitosHex - 1

I , I, ~

End If If DigitosHex < 2 Then

Select Case Index

Codigo Desensambla VERSION 4.00

Alejandro Montejo Rubio

Simulador del Sistema Mínimo Inte l 8088 Proyecto Terminal

Case O To 9 DISPLAY.Text =

DISPLAY.Text + Chr(&H30 + Indexl Case 10 To 15

DISPLAY.Text + Chr(&H37 + Indexl DISPLAY. Text =

End Select DlgitosHex = DigltosHex + 1 End If

End Sub

Public Sub Componentes lnformacion(picture As String, archlvo AS string) ' este procedimiento se utiliza para llamar los archivos *.bmp que tienen información grafica de los 'componentes fisicos del sistema 8088,

COMPONENTE.picture; los cuales son asignados al objeto

' Ademas de cargar al Objeto form2.textl.text el archivo de texto de información del componente Set X = Loadpicture (App.Path + " \ " + picture) componente.picture = X b$ = App.Path + " \ " + archivo Open b$ For Input As #1 Texto$ = " "

Do While Not EOF(1) Line Input #1, a$ Texto$ = Texto$ + a$ + ChrS (131

+ ChrS(101 LOOP

Textl.Text = Texto$

Close #1

End Sub Public Sub Coordenadas0 ' El objeto FRAME llamado Información conlunta a los objetos text1 y plcture , los cuales

grafica de cada componente fisico del ' n o s muestran la información textual y

sistema. ' Aqul se modifican l a s propiedades de coordenadas, para restaurar el objeto Información.

1nformaclon.Visible = True 1nformacion.Height = 3495 1nformacion.Left = 960 1nformacion.Top = 360 1nformacion.Width = 7695

End Sub

Private Sub TeclaMouseMove(1ndex As Integer, Button As I~~ceger, Shift As Integer, X As Single, Y As Single) ' Muestra mensaje en la parte inferior de la pantalla el mensale" Label3.Caption = "Teclas de ediclón numerica , hexadecimal" End Sub

Private Sub Timerl-Timer0 Label6.Caption = Time Label7.Caption = Date End Sub

Begin VB.Form Desensamblador

20

Page 123: Ruíz !Y - 148.206.53.84148.206.53.84/tesiuami/UAM5688.pdfMODOS DE DIRECCIONAMIENTO ... El Intel 4004 es el primer microprocesador aparecido en el ... se almacenan en un stack de 4

Appearance - - BackColor Caption - -

ensamblador" ClientHeight = ClientLeft ClientTop - - Clientwidth ControlBox FillColor Fillstyle - - Beginproperty Font

- -

- -

- - - - - -

name

charset weight

underline size

italic strikethrough

Endproperty FontTransparent = Forecolor Height - - HelpContextID = Left LinkTopic - - ScaleHeight - - ScaleMode Scalewidth TOP Width

Serif"

- -

- -

- - - -

- - - -

O 'Flat &HOOFF0000& "Codigo

4965 1035 1455 2535 O 'False &HOOFFFFFF& O 'Solid

= "MS Sans

= o = 700 = 9.75 = O 'False = O 'False = O 'False

O 'False &HOOFFFFOO& 5655 4 975 "Form3" 20. 687 4 'Character 21.125 825 2655

Begin ~~.VScrollBar Barravertical Height = 4815 Largechange Left

= 20 = 6960

Max = 1024 TabIndex = o Top Width = 240

= o

End Begin VB.Menu Comandos

Caption = "&Comandors" Begin VB.Menu CambiarDireccion

Caption = "&Cambiar dlreccion de inicio"

End Begin VB.Menu Ejecutar

Caption - - "&Ejecutar"

End Begin VB.Menu Borrar

End Caption = "&Salir"

End End Attribute VB-Name = "Desensamblador" Attribute VB-Creatable = False Attrlbute VB-Exposed = False

Public Sub PonCódigo(NumLinea As Integer, segini As Long)

Llnea = O Dim dux As Long indice = O Tamaño = 1

Operandol = False

Desensamblador.CurrentX = O Desensamblador.Sca1eMode = 4

While indice < 1024 And Llnea < Desensamblador.CurrentY = O

NumLinea

Operacion(Memoria(indice + segini)).mnemonico

Texto =

Simulador del Sistema Minimo Inte l 8088 Proyecto Terminal

While Mid(Texto, k, 1) <> " "

k = l

And k < Len(Texto) k = k + l

Wend Texto = Mid(Texto, 1, k) + " "

If Operacion(Memoria(indice + segini)).ByteRegl Then

Registros(Memoria(indice + segini + Tamaño) )

Texto = Texto +

Tamaño = Tamaño + 1 Operandol = True

End If If Operacion(Memoria(indice +

If Operandol Then Texto =

Texto = Texto + " [ ' I

dux = Memoria(indice +

Texto = Texto + BlnHex(aux) dux = Memoria(indice +

Texto = Texto + BinHex(aux) Texto = Texto + " I " Tamaño = Tamaño + 2

segini)).OffHi Then

Texco + " , "

segini + Tamaño)

seginl + Tamaño + 1)

End If If Operacion(Memoria(indice +

If Operandol Then Texto =

aux = Memoria(indice +

segini) ) . Dato8 Then

Texto + ", "

segini + Tamaño1

c

segin?

Texto

seginl

segini

Texto = Texto + BinHex(aux) Tamaño = Tamaño + 1

End If If Operacion(Memoria(ind1ce +

If Operando1 Then Texto =

aux = Memoria(1ndice +

Texto = Texto + BinHex(aux1 dux = Memoria(indice +

Texto = Texto + BinHex(aux) Tamaño = Tamaño + 2

).DatoHi Then

11 11

+ Tamaño)

+ Tamaño + 1)

End If If Operacion(Memoria(indice +

segini) ).ByteReg2 Then

Registros(Memoria(indice + segini + Tamaño) )

Texto = Texto +

Tamaño = Tamaño + 1 End If Operandol = False If indice < BarraVertlcal.Va1ue

And Llnea = O Then CambioAtras = Tamaño If indice >=

BarraVeLtical.Value Then If Linea = O Then

End If Linea = Linea + 1 Print Texto

CambioAdelante = Tamaño

End If indice = indice + Tamaño Tamaño = 1

End Sub

Private Sub BarraVertical_ChangeO If banderaCambios Then banderacambios = False

Wend

Alejandro Montejo Rubio 2

Page 124: Ruíz !Y - 148.206.53.84148.206.53.84/tesiuami/UAM5688.pdfMODOS DE DIRECCIONAMIENTO ... El Intel 4004 es el primer microprocesador aparecido en el ... se almacenan en un stack de 4

If UltimoValor = BarraVertical.Value - 1 Then

CambioAdelante UltimoValor = BarraVertical.Va1ue ElseIf UltimoValor =

BarraVertical.Va1ue + 1 Then

CambioAtras UltimoValor = BarraVertical.Va1ue Else

End If Desensamblador.ScaleMode = 4 Desensamblador.ScaleWldth =

Desensamblador.ScaleWidth Desensamblador.ScaleHe!.ght =

Desensamblador.Sca1eHeight Desensamblador.BarraVertica1.Left = Desensamblador.ScaleWidth - 2 Desensamblador.BarraVertica1.Top = O Desensamblador.BarraVertica1.Height =

Desensamblador.Sca1eHeight Desensamblador.Cls PonCódigo Desensamblador.ScaleHeight, SegDesensamblar banderacambios = True End If End Sub

BarraVertical.Va1ue = UltimoValor +

BarraVertica1.Value = UltimoValor -

UltimoValor = BarraVertical.Va1ue

Código Historial VERSION 4.00 Begin VB.Form historial

Backcolor = &HOOCOCOCO& Caption = "Form3" ClientHeight = 4140 ClientLeft = 1140 ClientTop Clientwidth

= 1515 = 7305

ClipControls = O 'False ControlBox = O 'False Height = 4545 Left = 1080 LinkTopic = "Form3" ScaleHeight = 4140 Scalewidth = 7305

Width = 7425 Windowstate = 2 'Maximized Begin VB.PictureBox SSPanell

TOP = 1170

Forecolor = &H00000000& Height = 6975 Left = 1440 ScaleHeight = 6915 Scalewidth = 9555 TabIndex TOP

= o Width

= 600 = 9615

Begin VB.CheckBox Check1 Caption

Helght = 255 Left = 840 TabIndex TOP Width

Ambar" = "Color

= 6 = 6240 = 1215

End Begin VB.CommandButton Command3

Caption = "C&errar"

Alejandro Montejo Rubio

Size Charset Weight Underline Italic Strikethrough = Endproperty ForeColor

Height Left ScaleHeight Scalewidth TabIndex TOP Width

- - - - - - - - - -

- -

End

Simulador del Sistema Minimo Intel 8088 Proyecto Terminal

Private Sub Borrar-Click0 Hide End Sub

Private Sub CambiarDireccion-Click0 aux = InputBox("Dirección de inicio para desensamblar", "Cambio", Str(SegDesensamb1ar)) 'SegDesensamblar = CLng("&h" + aux) SegDesensamblar = Val("&h" + aux)

End Sub Desensamb1ador.Refresh

Prlvate Sub Form-Load ( ) CambioAtras = 1 bander2Sambios = True End Sub

Private Sub Form-Paint ( 1 Desensamb1ador.ScaleMode = 4 Desensamblador.ScaleWidth =

Desensamblador.ScaleWidth Desensamb1ador.ScaleHeight = Desensamblador.Sca1eHeight Desensamblador.BarraVertica1.Left = Desensamblador.ScaleWidth - 2 Desensamblador.BarraVertica1.Top = O Desensamblador.BarraVertical.Height =

Desensamblador.Sca1eHeight Desensamblador.Cls PonCódigo Desensamblador.ScaleHeight, SegDesensamblar End Sub

8 F 9 1 - l l C E - 9 D E 3 - 0 O A A O l 7 4 B B 8 5 1 ) Beginproperty Font IOBE35203-

N ame = '"S Sans Serif"

Size Charset Weight Underline = O 'False Italic = O 'False Strikethrough = O 'False

Height Endproperty

Left = 3720 TabIndex = 1

Wldth = 1935

= 12 = o = 400

= 420

TOP = 6360

End Begin VB.PictureBox SSTabl

Backcolor

Beginproperty Font (OBE35203-

- -

&H00808080&

8F91-llCE-9DE3-00AAO04BB851) Name = "MS Sans Serlf"

' False ' False ' False

FF0000& 735 600 675 8355 2 840 8415

Begin VB.PictureBox SSPanel2 Height = 4455

3

Page 125: Ruíz !Y - 148.206.53.84148.206.53.84/tesiuami/UAM5688.pdfMODOS DE DIRECCIONAMIENTO ... El Intel 4004 es el primer microprocesador aparecido en el ... se almacenan en un stack de 4

I

Left = 600 ScaleHeight = 439s Scalewidth = 8355 TabIndex TOP

= 4 = 1560

Width = 8415 Begin VB.TextBox Text2

BackColor

Beginproperty Font

- -

&HOOFF0000&

{OBE35203-8F91-llCE-9DE3-0OAAOO4BB851) Name = "MS

Sans Serif" Size = 9.75 Charset Weight

Italic = 0 'False Strikethrough = O 'False Endproperty

= o = 400

Underline = O 'False

Forecolor = &HOOFFFFOO& Height = 3 6 1 5

Left = 600 MultiLine = -1 'True ScrollBars = 3 'Both TabIndex = 5

Visible Width

TOP = 480 = O 'False

= I455 End

End Begin VB.Label Label10 Alignment = 2 'Center AutoSize = -1 'True Caption = "Familia

Intel"

8F91-1lCE-9DE3-00AAOO4BB8~~] Beginproperty Font (OBE35203-

Name = "MS Sans Serif" Size = 13.5 Charset = o Weight = 700 Underline = O 'False Italic = O 'False Strlkethrough = O 'False

Height = 360 Left = 3615 TabIndex = 3

Width Top = 240

Endproperty

= 1725 End

End

Attribute VB-Name = "historial" End

Attribute VB-Creatable = False Attribute VB-Exposed = False Sub llamarhistorial(archivo As String)

Open b$ For Input As #1 Texto$ = I"'

Do While Not EOF(1)

b$ = App.Path + " \ " + archivo

Line Input #1, a$ Texto$ = Texto$ + a$ + ChrS(13) +

Chr$ ( 10)

Simulador del Sistema Minimo Intel 8088 Proyecto Terminal

tEXT2.Text = Texto$ LOOP

Close #1 End Sub

Private Sub Checkl-Click0 If Checkl.Value = 1 Then

tEXT2.BackColor = &HO& tEXT2.ForeColor = &HFFOO& Checkl.Caption = "Color Azul"

Else If Checkl.Value = O Then tEXT2,BackColor = &HFF0000 tEXT2.ForeColor = &HFFFFOO Checkl. Caption = "Color Ambar" End If

Ena If

End Sub

Private Sub Command3-Click0 Hide Unload historial

End Sub Form2.Show

Private Sub Form-Load ( ) tEXT2.Vlslble = True Call llamarhistorial ("3000.TXT") End Sub

Sub SSTabl-Click(Previ0usTab As

tEXT2.Visible = False Integer)

tEXT2.Visible = True Index = sstabl.Tab

Select Lase Index Case O

Case 1

Case 2

Case 3

Case 4

Call llamarhistorial ("3000.TXT")

Call llamarhistorial ("4004. txt")

Call llamarh~storial("4040. txt")

Call llamarhistorial ("8008. txt")

Call llamarhistorial ("8048. txt") Case 5

Case 6

Case 7

Case 8

Case 9

Case ,O

End Select

Call llamarhistorial('

Call llamarhistorial(

Call llamarhistorial(

C a l l llamarhlstorial(

Call llamarhistorial(

Call llamarhistorial

End Sub

Private Sub tEXT2-ChangeO End Sub

"8080. txt")

"8085. txt")

"8086. txt")

"80088.txt")

"80286. txt")

"80386. txt")

Alejandro Montejo Rubio 2