136
División: Ciencias Basicas e Ingenieria. Carrera: Computación. Materia: Proyecto de Investigación II. Fecha: 30 de Marzo I99 7 Alumno: Alejandro Briones Gerardo. Matricula: 882244 19. Asesor: Ing. Ornar A\laldonado Hernandez. , I I I i

Ciencias Basicas e Ingenieria. Computación. Proyecto …148.206.53.84/tesiuami/UAM3894.pdfEl Intel 4004 es el primer microprocesador aparecido en el mercado y miembro de la familia

  • Upload
    vominh

  • View
    224

  • Download
    3

Embed Size (px)

Citation preview

Page 1: Ciencias Basicas e Ingenieria. Computación. Proyecto …148.206.53.84/tesiuami/UAM3894.pdfEl Intel 4004 es el primer microprocesador aparecido en el mercado y miembro de la familia

División: Ciencias Basicas e Ingenieria.

Carrera: Computación.

Materia: Proyecto de Investigación II.

Fecha: 30 de Marzo I99 7

Alumno: Alejandro Briones Gerardo.

Matricula: 882244 19.

Asesor: Ing. Ornar A\laldonado Hernandez.

,

I

I

I

i

Page 2: Ciencias Basicas e Ingenieria. Computación. Proyecto …148.206.53.84/tesiuami/UAM3894.pdfEl Intel 4004 es el primer microprocesador aparecido en el mercado y miembro de la familia

. Índice

Sección l. Reseña histórica del microprocesador Intel

Sección 2. Arquitectura del microprocesador Intel 8088

Sección 3. Manual de Usuario

Sección 4. Manual Técnico

Sección 5. Código del sistema.

Sección 6. Conclusiones.

Page 3: Ciencias Basicas e Ingenieria. Computación. Proyecto …148.206.53.84/tesiuami/UAM3894.pdfEl Intel 4004 es el primer microprocesador aparecido en el mercado y miembro de la familia

Sección 1

Reseña histórica del microprocesador Intel

Page 4: Ciencias Basicas e Ingenieria. Computación. Proyecto …148.206.53.84/tesiuami/UAM3894.pdfEl Intel 4004 es el primer microprocesador aparecido en el mercado y miembro de la familia

RESEÑA DEL PROCESADOR 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 microins-truccion actual, los bits de estado y 8 bits de la macroinstruccion 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). EI 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 rnicroinstruccion mueve datos desde un bus de entrada especificado o desde un registro, hacia un destino seleccionado, a través de la ALU. La rnicroinstruccion incluye el código de función de la ALU, bits de control de estado, y saltos condicionales hacia la próxima microinstruccion. y todo ello se ejecuta en un ímico ciclo de 160 ns. Disponiendo hardware externo, concretamente un conjunto de latches entre ROM y CPE, la ejecución puede solaparse con la extracción (fetch) de la siguiente rnicroinstruccion. Con ello los ciclos de microinstrucciones quedan reducidos a 120 ns.

i

Page 5: Ciencias Basicas e Ingenieria. Computación. Proyecto …148.206.53.84/tesiuami/UAM3894.pdfEl Intel 4004 es el primer microprocesador aparecido en el mercado y miembro de la familia

El Intel 4004 es el primer microprocesador aparecido en el mercado y miembro de la familia MCS-4, conjunto microcomputador 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 hnciones 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 permit.e 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 setrate). El microprocesador tiene un conjunto de registros para uso general constituido por 16 registros de 4 bits además de un acumulador, tambien de 4 bits. Las direcciones de retorno se almacenan en un stack de 4 posiciones, en el cual el dígito seleccionado es 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; unicamente se dispone del modo de direccionado indirecto a través 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.

Page 6: Ciencias Basicas e Ingenieria. Computación. Proyecto …148.206.53.84/tesiuami/UAM3894.pdfEl Intel 4004 es el primer microprocesador aparecido en el mercado y miembro de la familia

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

Cdpsula 16 Terminales 24 Terminales Espacio en ROM 4K 8K Numero De Registros 16 24 Instrucciones Lógicas NO SI Interrupciones NO SI Instrucciones HALT NO SI Stack De Dirección De Retorno 4" 12 S* 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.

Page 7: Ciencias Basicas e Ingenieria. Computación. Proyecto …148.206.53.84/tesiuami/UAM3894.pdfEl Intel 4004 es el primer microprocesador aparecido en el mercado y miembro de la familia

INTEL 8008

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 multiplexores y latches necesarios para almacenar la direccion. El sistema de interrupción del 8008 es un modelo de sencillez. Cuando llega una petición de interrupcion, el procesador acaba la instrucción en curso e inhibe la incrementacion 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 instruccion. Unos circuitos exteriores activados por la señal de interrupción reconocida fuerzan entonces en el bus de datos una instruccion, 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 indice, 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 direccionado poco elaborado. La aparición del 8080 ha solucionado la mayoría 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.

I

Page 8: Ciencias Basicas e Ingenieria. Computación. Proyecto …148.206.53.84/tesiuami/UAM3894.pdfEl Intel 4004 es el primer microprocesador aparecido en el mercado y miembro de la familia

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 - 1 K * 8 ROM para memoria de programa - 64 * 8 RAM para memoria de datos - 27 líneas de entraddsalida - 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 líneas de entraddsalida 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 ms/ciclo). 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 R4M.

Page 9: Ciencias Basicas e Ingenieria. Computación. Proyecto …148.206.53.84/tesiuami/UAM3894.pdfEl Intel 4004 es el primer microprocesador aparecido en el mercado y miembro de la familia

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 evithndose la necesidad de multiplexados; en segundo lugar, la utilización de la tecnología 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 conreferencia 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 interfase de aplicación personal, interfase para comunicaciones, generador de reloj, etc.

Page 10: Ciencias Basicas e Ingenieria. Computación. Proyecto …148.206.53.84/tesiuami/UAM3894.pdfEl Intel 4004 es el primer microprocesador aparecido en el mercado y miembro de la familia

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 características. Las ventajas que ofrece son las siguientes:

a) Mas prestaciones -En la velocidad de proceso (ciclo básico de instruccihn 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 y no enmascarable )

b) Mayor simplicidad de uso

- Alimentación a una sola tensión ( 5 V en vez de 5.12 y - 12 ) - Generador de reloj incluido en el chip - 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 funcihn 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 direccion, 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 : 8155 256*8 RAM, 2*8 16 ports programables y 1 temporizador de 14 bits. 8355 2 K * 8 bits Rob1 y 2 ports de 8 bits programables 8755 2 I( * 8 bits EPROM >- 2 ports de 8 bits programables

Con el uso de estos dispositi\.os puede realizarse un sistema completo con 3 chips ( CPU 8085. memoria de programa a j j j . memoria de datos 8 1 5 5 y E/S en los anteriores 8155 y 8355 ). Además del 8085 soporta toda la familia de productos del sistema 8080 ( RAM.ROM,EPROM.circuiros de control de memoria y circuitos de control de periféricos.

Page 11: Ciencias Basicas e Ingenieria. Computación. Proyecto …148.206.53.84/tesiuami/UAM3894.pdfEl Intel 4004 es el primer microprocesador aparecido en el mercado y miembro de la familia

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 codigo, 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 multiu-suarios. 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, el otro 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 division, 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.

Page 12: Ciencias Basicas e Ingenieria. Computación. Proyecto …148.206.53.84/tesiuami/UAM3894.pdfEl Intel 4004 es el primer microprocesador aparecido en el mercado y miembro de la familia

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 & que se mencione acerca del primero aplica por igual al otro. El 8088 puede direccionar 2 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 2 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 recurso 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.

20

Cada registro de segmento apunta a alguna parte dentro del espacio de direccionamiento de 2 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 direccibn 96 O00 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.

20

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 2" 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 superic;res de las direcciones de 20 bits.

Page 13: Ciencias Basicas e Ingenieria. Computación. Proyecto …148.206.53.84/tesiuami/UAM3894.pdfEl Intel 4004 es el primer microprocesador aparecido en el mercado y miembro de la familia

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 AX, 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 AX.

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.

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 A I (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:

Page 14: Ciencias Basicas e Ingenieria. Computación. Proyecto …148.206.53.84/tesiuami/UAM3894.pdfEl Intel 4004 es el primer microprocesador aparecido en el mercado y miembro de la familia

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 instnlcci6n 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 SYC 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 1010 y 1 1 1 1 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 decimaies a binario y regresar ae 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 desplazamiento/rotación, manipulan en varias formas los bits en una palabra o en un byte. Se incluyen diversas combinaciones.

Page 15: Ciencias Basicas e Ingenieria. Computación. Proyecto …148.206.53.84/tesiuami/UAM3894.pdfEl Intel 4004 es el primer microprocesador aparecido en el mercado y miembro de la familia

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.

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 detenninada condición, como en el registro CX que se decrementa después de cada iteración, hasta llegar a O. En esta forma, bloques arbitrarios de datos se pueden mover, comparar, etc.

El último grupo es una mezcla de instrucciones que no encaja en ninguno de los anteriores, e incluye conversiones, E/S y paro de la CPU.

El 8088 (y también el 80286 y el 80386) tiene cierto número 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.

Page 16: Ciencias Basicas e Ingenieria. Computación. Proyecto …148.206.53.84/tesiuami/UAM3894.pdfEl Intel 4004 es el primer microprocesador aparecido en el mercado y miembro de la familia

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. Ademis, 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 únicas 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 nuevc 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 1 M. 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.

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" m 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 50286 para un sistema mde multiprogramación, cada proceso puede precaverse de accesar segmentos pertenecientes a otro.

Además del conjunto de instrucciones del 8088. e1 80286 tiene algunas adicionales que los diseñadores olvidaron en la primera vuelta. L a mayoría de estas instrucciones hacen posible realizar operaciones claves con un menor número de instrucciones que en el 8089. Además, se han relajado algunas de las reglas nl5s ortodoxas respecw a qué operandos st'

Page 17: Ciencias Basicas e Ingenieria. Computación. Proyecto …148.206.53.84/tesiuami/UAM3894.pdfEl Intel 4004 es el primer microprocesador aparecido en el mercado y miembro de la familia

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 ord.en, 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. Al 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 61. Un programa puede evitar caer en un error de segmentación, por medio de una verificación previa.

Page 18: Ciencias Basicas e Ingenieria. Computación. Proyecto …148.206.53.84/tesiuami/UAM3894.pdfEl Intel 4004 es el primer microprocesador aparecido en el mercado y miembro de la familia

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 tamaño tan reducido (64K). El 80386 elimina estos problemas y, al mismo tiempo, 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. Al 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 E/S, 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 E/S, 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.

Muchas de las computadoras basadas en el procesador 80386 utilizan UNIX 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 UNIX 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 LTNIX, 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 UNIX 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

Page 19: Ciencias Basicas e Ingenieria. Computación. Proyecto …148.206.53.84/tesiuami/UAM3894.pdfEl Intel 4004 es el primer microprocesador aparecido en el mercado y miembro de la familia

descriptores de segmentos. Cada descriptor contiene la dirección, su tamaño, 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 (2 bytes, cerca de 4 mil millones), y todas las operaciones que manipulan palabras :o 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.

32

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 2 bytes. Este espacio es mayor o igual al de casi todas las macro y supercomputadoras. Los tiempos en los que era posible diferenciar una microcomputadora de una supercomputadora con sólo mirar cuál tenía un mayor espacio de direcciones, pertenecen al pasado.

46

Una de las consecuencias obvias de tener un espacio de direcciones de 2 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 2 bytes. A este modelo se le conoce con el nombre de "Modo Motorola", ya ue los espacios de direcciones de sus microprocesadores constan de un solo segmento de 2 bytes.

46

32

39

Un programa para el 80386. cuando utiliza varios segmentos, está restringido a un solo segmento para código, datos y pila en cad 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 AXiEAX, la moverá a EL4X. 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 6a-mas eficientes de accesar elementos de un arreglo y otras características. Las instrucciones requieren de campos de modo de

Page 20: Ciencias Basicas e Ingenieria. Computación. Proyecto …148.206.53.84/tesiuami/UAM3894.pdfEl Intel 4004 es el primer microprocesador aparecido en el mercado y miembro de la familia

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 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 1 estado-de los bits en diversos códigos de condición. Esta instrucción es a veces de utilidad para los diseñadores 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.

Page 21: Ciencias Basicas e Ingenieria. Computación. Proyecto …148.206.53.84/tesiuami/UAM3894.pdfEl Intel 4004 es el primer microprocesador aparecido en el mercado y miembro de la familia

Sección 2

Arquitectura del microprocesador Intel 8088

Page 22: Ciencias Basicas e Ingenieria. Computación. Proyecto …148.206.53.84/tesiuami/UAM3894.pdfEl Intel 4004 es el primer microprocesador aparecido en el mercado y miembro de la familia

ARQUITECTURA BASICA DEL MICROPROCESADOR 8088

Arquitectura Interna Básica

Los microprocesadores modernos , al igual que los anteriores, buscan instruciones en la memoria con una operación de lectura, mientras el microprocesador ejecuta la instrució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 instrució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 1 Canal Ocupado I Ocioso I Ocupado I Ocupado I Ocioso I Ocupado

Microprocesador Recuperar I Decodifica I 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&) para los dispositivos de E/s del sistema.

Canal de datos

El canal transfiere estos entre el microprocesador y la memoria y los dispositivos de E/S conectados en el sistema.

Canal de control

El canal de control wm.inistra señales de control. que hacen que en l a memoria o el espacio de E/S efectúen una operación de lectura o de escritura .

Page 23: Ciencias Basicas e Ingenieria. Computación. Proyecto …148.206.53.84/tesiuami/UAM3894.pdfEl Intel 4004 es el primer microprocesador aparecido en el mercado y miembro de la familia

A0 - A,,

8088 Do ++ D, Sistema A memoria

y EIS

Canal de control 3 R D , WR IOiM

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 direcionamiento de un sistema basado en un microprocesador, se denomina memoria lógica o memoria física. 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 hanvare 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.

t 8 bits + FFFFF FFFFE FFFFD

1 M bytes

00001 O000 1 00000

Mapa ae memoria lógica del rnicroprocesador W88

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.

Page 24: Ciencias Basicas e Ingenieria. Computación. Proyecto …148.206.53.84/tesiuami/UAM3894.pdfEl Intel 4004 es el primer microprocesador aparecido en el mercado y miembro de la familia

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.

Nombres de 16 bits Nombres 8 bits Nombres 8 bits AX AH AL Acumulador BX BH BL Indice base cx CH I CL Contador DX DH DL Datos

SP Apuntador a pila BP Apuntador a base DI Índice destino SI Índice fuente

Apuntador de instrucciones Banderas

I cs 1 Segmento de código - - DS Segmento de datos ES Segmento extra SS

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 especiiicas. por esta razón a cada uno de estos se les da u11 nombre (~.ciJmlhdor, Rsse, 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).

Page 25: Ciencias Basicas e Ingenieria. Computación. Proyecto …148.206.53.84/tesiuami/UAM3894.pdfEl Intel 4004 es el primer microprocesador aparecido en el mercado y miembro de la familia

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 instruciones para corrimientos (CL) y rotaciones del número de bytes (CX) para las operaciones repetidas de cadena y un contador (CX) para la instrució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 dirrecionar a una matriz de datos en una pila de memoria.

SI (Índice fuente) : Se emplea para direcionar 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 utiliza siempre para dirrecionar a la siguiente instrucción que va a ejecutar el microprocesador. Par formar la localidad real de la siguiente instrucción se suma el contcnido de IP con CS(por) 10H. Cabe señalar que se puede realizar direcciomanienro indirec:o 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.

Page 26: Ciencias Basicas e Ingenieria. Computación. Proyecto …148.206.53.84/tesiuami/UAM3894.pdfEl Intel 4004 es el primer microprocesador aparecido en el mercado y miembro de la familia

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 direccih 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 r. )do real permite que el microprocesador sólo dirrecione 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 desplazamientc nelecciova m r l Incalidad eo la mwwria.

Page 27: Ciencias Basicas e Ingenieria. Computación. Proyecto …148.206.53.84/tesiuami/UAM3894.pdfEl Intel 4004 es el primer microprocesador aparecido en el mercado y miembro de la familia

/ ~FFFFFH

Seggemneto de memoria que I

I- Segmento ds memoria que empieza en la localidad IOOOOH

Memoria en modo real 7

Registro de segmento I OOOH r'

En la fig anterior se muestra un segmento de memoria de empieza en la localidad lOOOH y termina en la '1 FFFFH, 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 instruciónes 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: dpUllta a la iguiente illstruc:Licjn dentru del segmento de c;odigo, y es ei

desplazamiento .

Page 28: Ciencias Basicas e Ingenieria. Computación. Proyecto …148.206.53.84/tesiuami/UAM3894.pdfEl Intel 4004 es el primer microprocesador aparecido en el mercado y miembro de la familia

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

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

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

ES:Segmento extra

30000 ZFFFF

SS:Segmento de pila

20000 1 FFFF

CS:Segmento de datos

I ooor) OFFFF

CS:Segmento de código

uuoL)o

Sistema de memoria con los cuatro segmentos En siguiente figura se muestra un traslape transversal imaginario de segmentos, dentro de 1 mega de memoria.

S

Page 29: Ciencias Basicas e Ingenieria. Computación. Proyecto …148.206.53.84/tesiuami/UAM3894.pdfEl Intel 4004 es el primer microprocesador aparecido en el mercado y miembro de la familia

1

ISegmento de Datos1

/- (Segmento de Código]

S

Page 30: Ciencias Basicas e Ingenieria. Computación. Proyecto …148.206.53.84/tesiuami/UAM3894.pdfEl Intel 4004 es el primer microprocesador aparecido en el mercado y miembro de la familia

Conjunto 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 irstrucciones 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.

Page 31: Ciencias Basicas e Ingenieria. Computación. Proyecto …148.206.53.84/tesiuami/UAM3894.pdfEl Intel 4004 es el primer microprocesador aparecido en el mercado y miembro de la familia

Principales intruciones para el microprocesador 8088

Transferencia de datos IN Mete datos al acumulador desde un dispositivo de E/S

LEA Carga la dirección efectiva MOV Carga byte. palabra

PUSH Salva l a s palabras en la pila POP Recupera una palabra de la pila

Aritmeticas ADD Suma datos entre registros o la memoria y Otro registro CMP Compara datos DEC Decrementa DIV División sin signo IDIV División con signo

IMUL Multiplicación con signo M C Incrementa

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

Manipulaci6n de Bits AND Y ( AND) lógica NOT Invertir (complemeto a uno) OR O lógica

SCAS I cc I aCUmUlaUU1 1

Transferencia de programa CALL Llama a un procedimiento

JMP CERCANO Salta a otra parts del programa dentro del mismo segmento JMP LEJANO Salta a otra parte del programa en otro segmento

LOOP Repite ciclo CX veces RET Retorna de un procedimiento

Page 32: Ciencias Basicas e Ingenieria. Computación. Proyecto …148.206.53.84/tesiuami/UAM3894.pdfEl Intel 4004 es el primer microprocesador aparecido en el mercado y miembro de la familia

Sección 3

Manual de Usuario

Page 33: Ciencias Basicas e Ingenieria. Computación. Proyecto …148.206.53.84/tesiuami/UAM3894.pdfEl Intel 4004 es el primer microprocesador aparecido en el mercado y miembro de la familia

Manual de Usuario

OBJETIVO :

Simular el funcionamiento de manera “virtual” de un sistema mínimo ( Intel 8088 ) sin

Realizar una herramienta útil y didáctica para el aprendizaje en la utilización y requerirlo fisicamente.

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.

JUSTIFICACION

Debido al avance tecnológico de las ultimas dos décadas, la ciencia de la electrónica y 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 autoevaluarse 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 mayoría de las instituciones ( si no es que todas ) cuentan con un laboratorio de computadoras. L o Único que falta es el software. S o h a r e de nivel y calidad, y además hechos en México y por mexicanos calificados y altamente competitivos .

La gran mavoría 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 sí, pero de mala calidad, no visual y en ambiente Dos.

Page 34: Ciencias Basicas e Ingenieria. Computación. Proyecto …148.206.53.84/tesiuami/UAM3894.pdfEl Intel 4004 es el primer microprocesador aparecido en el mercado y miembro de la familia

PROPOSITO :

La presente obra tiene la finalidad de proporcionarle al usuario la herramienta y ejemplos necesarios para una adecuada explotación del sistema mínimo ( Intel 8088 ) , así como de poder proporcionar una herramienta de aprendizaje y experimentación para los alumnos con materias enfocadas a la Ingeniería en Electrónica o áreas afines .

DESCRIPCION DEL SISTEMA :

Composición fisica de un Sistema Mínimo.

El simulador estará formado por todas las partes fisicas (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 permitirán 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 proyecto es el siguiente:

Hardware

1 .- Procesador 486 ( como mínimo ) en adelante. 2.- 8Mb en Ram ( optimo ) 3.- Mouse ( indispensable )

Software

1 .- Windows 3.xx (en adelante) 2.- Lenguaje de programación Visual Básic Versión 4.00 3 . - Herramienta de apoyo Help Compiller 4.0 4.- Presentaciones desarrolladas en Core1 Draw Versión 7.00 (apoyo

visual)

b) Instalación

COMO INSTALAR EL SIMULADOR DEL SISTEMA MINIM0 8088, EN MI PC ??

Page 35: Ciencias Basicas e Ingenieria. Computación. Proyecto …148.206.53.84/tesiuami/UAM3894.pdfEl Intel 4004 es el primer microprocesador aparecido en el mercado y miembro de la familia

A continuación, se explicará paso a paso, como instalar ,accesar y utilizar el

Comenzando desde las especificaciones ya señaladas con anterioridad, (Requisito programa, así como una descripción de su funcionamiento y su ayuda escrita .

indispensable: contar 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.11 Utilizando el ratón (recomendable) se tendrá que escoger (dando doble click al botón izquierdo del ratón), el icono o archivo de “Principal”, posteriormente se deberá seleccionar el icono llamado “Administrador de archivos”, aquí se desplegara una ventana, en donde se tiene que especificar la unidad en la cual se encuentra el sistema ( Unidad A:\ o B:\ según sea el caso ), una vez que se muestren los archivos existentes de la unidad de disco asignada , se deberá buscar el archivo llamado “SETUP.EXE” y seleccionarlo. Inmediatamente tendrá que irse a la barra menú, y en “Archivo”, buscar la opción de “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.

el icono o archivo de “Principal”, posteriormente se deberá seleccionar el icono llamado “Administrador de archivos”, aquí se desplegara una ventana, en donde se tiene que especificar la unidad en la cual se encuentra el sistema ( Unidad A:\ o B:\ según sea el caso),una vez

ntrol que se muestren los archivos existentes de la unidad de disco asignada, Seleccionar “&Aivo”, y después “EJecutar”

Otra opción es que en el momento de seleccionar el archivo “Setup.exe” , se presione dos veces el botón izquierdo del ratón. Esto, automáticamente ejecutará el programa de instalación seleccionado. Posteriormente aparecerá una ventana que pedirá la confirmación de la ejecucicin del sistema (tiene que marcar “Aceptartt ). En breve aparecerá una ventana indicando la ejecución de SETUP:EXE. La pantalla de instalación del Simulador del sistema mínimo 8088 solicitará al usuario especifique si el archivo y/o la ruta son correctos ( solo presione Continuar ).

* Win95.

Page 36: Ciencias Basicas e Ingenieria. Computación. Proyecto …148.206.53.84/tesiuami/UAM3894.pdfEl Intel 4004 es el primer microprocesador aparecido en el mercado y miembro de la familia

Una vez accesado Windows ir al botón de inicio situado en la barra de herramientas situado (por lo general) en la parte inferior izquierda de la pantalla

Haga click aquí 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 menú de Ejecución (figura l), 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 Eguninar:

Figura 4

Page 37: Ciencias Basicas e Ingenieria. Computación. Proyecto …148.206.53.84/tesiuami/UAM3894.pdfEl Intel 4004 es el primer microprocesador aparecido en el mercado y miembro de la familia

Ahora seleccione el Archivo de programa llamado “Setup.exe” y oprima Abrir, esto lo . regresará a la ventana de Ejecutar, seleccione “Aceptar “.

En estos instantes se comenzará a cargar el proyecto en su Disco Duro con la dirección I preestablecida C:\ (con la opción de cambiar dicha ruta de instalación, si así se desea). I

Se ira mostrando el porcentaje de instalación cargado del disco 1 y posteriormente se pedirá que se inserte el disco 2 , 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 PROYECTO, 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.

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 cadq,uno de los botones y funciones con los que cuentan dichas ventanas.

Presentación

Al inicio del sistema encontrara una ventana de presentación en la que encontrara el nombre del sistema, así como, la Universidad a la que pertenecen los integrantes del equipo que realizaron el presente proyecto (Ver figural al final de esta sección).

Portada

En ella encontrara tres botones rotulados con las siguientes etiquetas :

Integrantes : Al hacer un clic sobre este botón Ud. encontrara el nombre de los integrantes que realizaron el presente proyecto.

0 Asesor : Al presionar este botón se desplegara el nombre de la persona encargada de realizar las correcciones al sistema

Ejecutar : Cuando Ud. presiona este botón se in-iciara la ejecución del sistema mínimo 8088

0 Salir : Con este botón Ud. regresara nuevamente al ambiente de Windows sin entrar al sistema

Page 38: Ciencias Basicas e Ingenieria. Computación. Proyecto …148.206.53.84/tesiuami/UAM3894.pdfEl Intel 4004 es el primer microprocesador aparecido en el mercado y miembro de la familia

(Ver figura 2 al final de la sección)

Una vez que oprimió el botón de ejecutar la ventana que a continuación se desplegara la podemos desglosar en cuatro bloques:

Editor 0 Componentes Gráficos 0 Menús 0 Microayuda

Editor

Este editor cuenta con los Rotulados :

0 Instrucciones : Esta etiqueta cuenta con dos botones rotulados con dos pequeñas flechas 0 Flecha hacia abajo izquierda : Muestra las instrucciones con las cuales cuenta el

0 Flecha hacia arriba izquierda : Muestra las instrucciones con las cuales cuenta el sistema

sistema

“Enter” de su máquina Enter : Al oprimir este botón se acepta la instrucción que se haya elegido simulando al

0 Registros : Esta etiquetado con dos botones rotulados con dos pequeñas flechas 0 Flecha hacia abajo derecha : Muestra los registros sobre los cuales se puede

Flecha hacia arriba derecha : Muestra los registros sobre los cuales se puede realizar una operación en ensamblador

realizar una operación en ensamblador 0 Teclado : Al oprimir cualquiera de estos botones, el resultado que se obtendrá es el que

0 Dirección de Editar : Le proporciona la dirección de edición actual 0 Botón Ejecutar : Muestra la pantalla de microprocesador interno, en la cual se muestra

trae rotulado

las operaciones internas de ejecución, el cual también se puede activar por la combinación de teclas ALT + E

también se puede activar por la combinación de teclas ALT + R (Ver fig3 )

0 Botón Reset : Limpia la memoria y pone dirección editar con el valor de cero, el cual

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 (fig 5).

Page 39: Ciencias Basicas e Ingenieria. Computación. Proyecto …148.206.53.84/tesiuami/UAM3894.pdfEl Intel 4004 es el primer microprocesador aparecido en el mercado y miembro de la familia

Menús

La ventana cuenta con una b&a de menús formada por tres títulos que son :

0 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 (fig 4). 0 Guardar(CTRL + G) : El cual guarda el contenido de un archivo editado en

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

0 Salir (CTRL + S) : Termina la ejecución del sistema

memoria (fig 6)

ventana de Portada

0 Comandos : Se puede activar por medio de la combinación de teclas ALT + Cy este menú cuenta con tres subménus que son :

0 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 (fig 11)

0 Ejecutar (CTRL + E) : Muestra la pantalla de microprocesador interno, en la cual se muestra las operaciones internas de ejecución

0 Desensamblar (CTRL + D) : Muestra una ventana con el código en lenguaje ensamblador(fig 1 O)

1

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

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

0 La etiqueta “Archivo *.mem” nos indica el archivo cargado actualmente en memoria

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.

Page 40: Ciencias Basicas e Ingenieria. Computación. Proyecto …148.206.53.84/tesiuami/UAM3894.pdfEl Intel 4004 es el primer microprocesador aparecido en el mercado y miembro de la familia

~~

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

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

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.

instrucción e instrucción.

ventana del simulador.

CTRL + A, o por medio del menú Archivo eligiendo la opción de Abrir.

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 esta sección.

Ventana de Simulador

3. Repetir los pasos 1 y 2 mientras desea seguir editando, en caso contrario su programa

4. La Dirección de Editar se ira incrementando de acuerdo al valor en bytes entre

5. Para iniciar el programa deberá de oprimir el botón de Ejecutar, el cual le abrirá la

6. Si desea cargar un programa que ya editó, basta con oprimir la combinación de teclas

7. Para Resetear (Limpiar) Este botón es utilizado en el caso de que Ud. desea limpiar su

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 (fig 9)

0 Registros Internos : Todos los registros internos al tiempo de cargar esta ventana se inicializan 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 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

Page 41: Ciencias Basicas e Ingenieria. Computación. Proyecto …148.206.53.84/tesiuami/UAM3894.pdfEl Intel 4004 es el primer microprocesador aparecido en el mercado y miembro de la familia

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 tambien 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 2ireccionar 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 (Í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 direccionar datos destino en forma indirecta para utilizarlos con las instrucciones de cadenas o arreglos.

IP ( Apuntador de instrucciones ): Se utiliza siempre para direccionar a la siguiente instrucción que va a ejecutar el microprocesador. Par formar la localidad real de la siguiente instrucción se suma el contenido de IP con CS(por) IOH. Cabe señalar que se puede realizar direcciomaniento 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 ): E! segmemo de c6digo es una pcrcicin de la memoria que tiene los programas y procedimientos utilizados por los programas. El registro de segmento de

Page 42: Ciencias Basicas e Ingenieria. Computación. Proyecto …148.206.53.84/tesiuami/UAM3894.pdfEl Intel 4004 es el primer microprocesador aparecido en el mercado y miembro de la familia

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. Definido en el segmento 0000.

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 enel segmento 0400

ES(segn1ento 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 5ytes.

Modos de Direccionamiento

El 8088 dispone de muchos modos de direccionamiento que proporcionan diferentes modos de acceder operandos, 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.

o 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/S) para los dispositivos de E/s del sistema.

0 Bus de datos : El canal transfiere éstos entre el microprocesador y la memoria y los dispositivos de E/S conectados en el sistema.

m

I

Page 43: Ciencias Basicas e Ingenieria. Computación. Proyecto …148.206.53.84/tesiuami/UAM3894.pdfEl Intel 4004 es el primer microprocesador aparecido en el mercado y miembro de la familia

I

0 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”.

0 Botones de Control : Estos se encuentran etiquetados con los siguientes Rótulos :

0 Reset : Inicializa los registros internos a cero, exceptuando los registros de segmentos

0 Anima : Este botón ejecuta el programa continuamente a una velocidad determinada por el valor de la caja de intervalo, activada por la caja A - tiempo.

0 Siguiente : Este botón ejecuta cada instrucción paso a paso.

0 Desensambla : Este botón nos muestra una ventana con el código desensamblado.

o 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 submenus :

0 Menú Abrir : Este menú contiene los siguientes submenus : 0 Abrir : Este submenu se encarga de abrir un archivo que se haya editado

0 Guardar : Este submenu se encarga de guardar el archivo que se este editando

0 Salir : Este submenu se encarga de regresarlo a la pantalla de Edición

previamente (fig 12)

actualmente (fig 13).

Cada vez que Ud. ejecute el comando de abrir un nuevo archivo debera de actualizar l a Dirección a Editar

m

Page 44: Ciencias Basicas e Ingenieria. Computación. Proyecto …148.206.53.84/tesiuami/UAM3894.pdfEl Intel 4004 es el primer microprocesador aparecido en el mercado y miembro de la familia

01 MOV REG8 DATO8 02 MOV REG REG 03 MOV REG 16 DATO 16 04 MOV MEM REG 05 MOV REG h4EM 06 ADD REG8 DATO8 07 ADD REG8 REG8 O8 ADD REG16 DATO16

I

CARGA 3 X 8 CODIGO CARGA 3 8 CARGA 4 X 16 CODIGO CARGA 4 X X 16 DATOS CARGA 4 16 DATOS SUMA 3 X 8 CODIGO

Código: Este es el valor correspondiente de cada instrucción. Instrucción: Es la descripcih textual de cada instrucción. Función: Es la actuación de cada instrucción. Tamaño de instrucción: Es e1 tamaño rzal de cada instrucción en memoria BusDatos: Señaia si se hace uso del Busdatos. BusDirección:Sefiala si se hace uso del Bus de Direcciones.

m

Page 45: Ciencias Basicas e Ingenieria. Computación. Proyecto …148.206.53.84/tesiuami/UAM3894.pdfEl Intel 4004 es el primer microprocesador aparecido en el mercado y miembro de la familia
Page 46: Ciencias Basicas e Ingenieria. Computación. Proyecto …148.206.53.84/tesiuami/UAM3894.pdfEl Intel 4004 es el primer microprocesador aparecido en el mercado y miembro de la familia

Ejemplos de aplicación:

Carga de datos:

ARCHIVO: CARGA 1 .MEM

MOV AL OOh Inmediato o1 o1 O0 MOV BH FFh Inmediato O 1 02 FF MOV DH 18h Inmediato O 1 07 18

INS REG DATO Direccionamiento C.ins C.reg Dato Dato 16 Lo Hi

Bits MOV AX 2533h Inmediato O3 O8 25 33 MOV BX FF58h Inmediato O3 09 FF 58 MOV CX 52D8h Inmediato O3 OA 52 DX

Page 47: Ciencias Basicas e Ingenieria. Computación. Proyecto …148.206.53.84/tesiuami/UAM3894.pdfEl Intel 4004 es el primer microprocesador aparecido en el mercado y miembro de la familia

ARCHIVO: CARGA3.MEM

INS 1 REG I REG I Direccionamiento I C.ins 1 C.reg I C.reg MOV AL BL I Registro I 02 I O0 I 03

I MOV AH BH I Registro I 02 I o1 I 02 I I v I I I

MOV BH AL I Registro I 02 I 02 I O0 MOV BL AH I Registro I 02 I 03 I O 1

Y ~~

MOV CL DL Registro 07 05 02 Registro MOV CH DH 06 04 02

" "

MOV DL CL

05 07 02 Registro MOV DH CH 05 05 02 Registro MOV CH CH 02 02 02 Registro MOV AL AL 04 06 02 Registro

ARCHIVO: CARGA4.MEM

I INS I REG I REG I Direccionamiento I C.ins I C.reg I Cireg -1 MOV AX cs

OD OA 02 Registro MOV CX DI 11 09 02 Registro MOV BX DS 12 O8 02 Registro

MOV DX AX I Registro I 02 I OB I O8 MOV SI BX I Registro I 02 I OC I 09 u I

MOV BX AX

09 OC 02 Registro MOV SI BX O8 OA 02 Registro MOV DI AX OE OB 02 Registro MOV DX BP 08 09 02 Registro

- MOV DI SI I Registro I 02 I OD I OC

L

Page 48: Ciencias Basicas e Ingenieria. Computación. Proyecto …148.206.53.84/tesiuami/UAM3894.pdfEl Intel 4004 es el primer microprocesador aparecido en el mercado y miembro de la familia

ARCHIVO: CARGA5.MEM

INS Lo Hi 8 bits DS

C.reg Ofsset Ofsset C.ins Direccionamiento REG direccibn

MOV 0012h AH

05 AA 12 04 Directo MOV 12AAh CH 03 65 23 04 Directo MOV 2365h BH 02 DD 5F 04 Directo MOV 5FDDh B L 00 54 12 04 Directo MOV 1254h AL 01 12 O0 04 Directo

MOV ADFF AH

07 64 23 04 Directo MOV 2364 DH 05 32 56 04 Directo MOV 5632 CH 02 89 FD 04 Directo MOV FD89 BL 01 FF AD 04 Directo

~~ "" "

I I I 1 -

MOV 1236h CL I Directo [ 04 I 12 I 36 I 04

ARCHIVO: CARGA6.MEM

INS Lo Hi 16 bits DS

C.reg Ofsset Ofsset C.ins Direccionamiento REG direccibn

Page 49: Ciencias Basicas e Ingenieria. Computación. Proyecto …148.206.53.84/tesiuami/UAM3894.pdfEl Intel 4004 es el primer microprocesador aparecido en el mercado y miembro de la familia

ARCHIVO: CARGA7.MEM

MOV AL A9A8h Directo 05 O0 A9 A8 MOV CL 12AAh Directo 05 05 12 AA MOV CH 123631 Directo 05 04 12 36

ARCHIVO: CARGA8.MEM

INS Reg Dire Direccionamiento 8 bits DS

MOV AX O0 12h Directo MOV BX 1254h Directo MOV CX 5FDDh Directo MOV SI 5263h Directo MOV DI 1245 h Directo MOV AX 986Ah Directo MOV BX 5633h Directo MOV DX 2365h Directo

I MOV I

SI 12AAh I Directo I MOV DI 1236h 1 Directo

05 I 08 I O0 I 12

05 I OA 5F DD 05 I OC 52 63

05 I 08 I 98 6A 05 I 09 I 56 33 05 OB 23 65 05 oc 12 AA O 5 OD 12 36

Page 50: Ciencias Basicas e Ingenieria. Computación. Proyecto …148.206.53.84/tesiuami/UAM3894.pdfEl Intel 4004 es el primer microprocesador aparecido en el mercado y miembro de la familia

Suma de datos:

ARCHIVO: SUMA 1 .MEM

I INS I REG 1 DATO I Direccionamiento I C6d I C6d I Valor 1 I I I Bits -

ADD AL 6Ah Inmediato 06 GO 6A ADD AH 7Bh Inmediato 06 O 1 7B ADD BH 6Eh Inmediato 06 02 6E ADD BL 26h Inmediato 06 03 26 ~- "

ADD CL 67h Inmediato 06 04 67 ADD CH 7Bh Inmediato 06 05 7B ADD AL 85h Inmediato 06 O0 85 ADD BL 89h Inmediato 06 03 89 ADD DL 59h Inmediato 06 06 59 ADD DH 18h Inmediato 06 07 18

ARCHIVO: SUMA2.MEM

Bits

ADD BX FF58h ADD CX 52D8h ADD DX F4A5h ADD AX 5263h ADD BX 452Ah ADD CX 2633h ADD DX AD89h ADD SI 5CC6h ADD DI 00022h

Inmediato Inmediato Inmediato

Inmediato Inmediato Inmediato O8 Inmediato I 08 Inmediato I O8

C.reg

08 09 OA OB 08 09 OA OB oc OD

211jj FF 58

2A

5C C6 O0 22

Page 51: Ciencias Basicas e Ingenieria. Computación. Proyecto …148.206.53.84/tesiuami/UAM3894.pdfEl Intel 4004 es el primer microprocesador aparecido en el mercado y miembro de la familia

ARCHIVO: SUMA3.MEM

1 INS I REG I REG 8 1 Direccionamiento I Cód I Cód I C ó f l

ARCHIVO: SUMA4.MEM

INS REG REG Direccionamiento Cins C.reg C.reg 16 bits

Page 52: Ciencias Basicas e Ingenieria. Computación. Proyecto …148.206.53.84/tesiuami/UAM3894.pdfEl Intel 4004 es el primer microprocesador aparecido en el mercado y miembro de la familia

ARCHIVO: SUMA5.MEM

INS

58 FF 09 OA Inmediato ADD BX FF58h 33 25 O8 OA Inmediato ADD AX 2533h

Ofsse Ofsse C.reg C.ins Direccionamiento Direc REG DS Hi Lo

ADD CX 52D8h 1 Inmediato I OA 1 OA I 52 I D8 ADD DX F4A5h 1 Inmediato I OA I OB I F4 I A5 ~ ~- ~

t ADD SI 5CC6h I Inmediato 1 OA I OC I 5C I C6 I I 1 I I

ADD BX 5632h 1 Inmediato AF I DD OA CA ADD CX AFDDh I Inmediato 56 I 32 09 OA

ADD DX 2635h I Inmediato I OA I OB [ 26 [ 35 ADD DI 00022h I Inmediato I OA I OD 1 O0 I 22

División de datos:

ARCHIVO: DIVIDE1 .MEM

I INS I REG I Direccionamiento I C6d I C6d 1 I Inst 1 Reg.

DIV AL Registro I OB I O0 Registro

DIV Registro DIV BL Registro OB DIV CL Registro

DIV AL Registro 1 OB I O0 DIV BL Registro 1 OB 1 03 DIV DL Registro I OB I 06 DIV DH Registro I OB I 07

m

I

Page 53: Ciencias Basicas e Ingenieria. Computación. Proyecto …148.206.53.84/tesiuami/UAM3894.pdfEl Intel 4004 es el primer microprocesador aparecido en el mercado y miembro de la familia

ARCHIVO: DIVIDE2.MEM

1 INS I Dire I Direccionamiento I C.ins I Ofsset I Ofsset 1 I DS Hi Lo DIV 0012h Directo oc O0 12 DIV 1254h Directo oc 12 54

DIV 2365h Directo oc 23 65 DIV l l l l h Directo oc 1 1 1 1 DIV F14Fh Directo oc F1 4F

I DIV DD89h I Directo I OC I DD I 89 1 I I

DIV A9A8h Directo OC A9 A8 DIV 12AAh Directo oc 12 AA DIV 1236h Directo oc 12 36

Resta de datos:

ARCHIVO: RESTA1.MEM

INS REG DATO Direccionamiento Cód C6d Valor 8 Inst Reg.

I Bits I SUB AL 6Ah I Inmediato I OD I O0 I 6A SUB AH 7Bh Inmediato OD O 1 7B SUB BH 6Eh Inmediato OD 02 6E SUB BL 26h Inmediato OD 03 26 SUB CL 67h Inmediato OD 04 67

i

SUB CH 7Bh Inmediato 1 OD 05 1 7B SUB AL 85h Inmediato I OD O0 I 85 SUB BL 89h

18 07 OD Inmediato SUB DH 18h 59 06 OD Tnmediato SUB DL 59h 89 O3 OD Inmediato

-~ ~ ~ ~~

Page 54: Ciencias Basicas e Ingenieria. Computación. Proyecto …148.206.53.84/tesiuami/UAM3894.pdfEl Intel 4004 es el primer microprocesador aparecido en el mercado y miembro de la familia

ARCHIVO: RESTA2.MEM

I INS I REG I REG 8 I Direccionamiento I Cód I C6d I C6d I 1 bits Inst Reg. Reg.

SUB AL BL Registro OE O0 02 SUB AH BH Registro OE O 1 03 - SUB BH AL Registro OE 03 O0 SUB BL AH Registro OE 02 O1 SUB CL DH Registro OE 04 07

SUB Registro SUB DH AL Registro OE SUB DH CH Registro

ARCHIVO: RESTA3.MEM

INS REG DATO Direccionamiento C.ins C.reg Dato Dato 16 Lo Hi

Bits SUB AX 2533h Inmediato OF 08 25 33 SUB BX FF58h I Inmediato 1 OF 1 09 I FF I 58 SUB CX 52D8h I Inmediato I OF I OA I 52 1 D8 SUB DX F4A5h Inmediato OF OB F4 A5 SUB AX 5263h Inmediato OF 08 52 63 SUB BX 452Ah Inmediato OF 09 45 2A SUB CX 2633h Inmediato OF OA 26 33 SUB DX AD89h Inmediato OF OB AD 89 SUB SI 5CC6h Inmediato OF OC 5C C6

~~

SUB DI 00022h [ Inmediato I OF I OD 1 O0 I ” 33

Page 55: Ciencias Basicas e Ingenieria. Computación. Proyecto …148.206.53.84/tesiuami/UAM3894.pdfEl Intel 4004 es el primer microprocesador aparecido en el mercado y miembro de la familia

ARCHIVO: RESTA4.MEM

ARCHIVO: RESTA5.MEM

I INS I REG 1 Direc I Direccionamiento I C.ins I C.reg [ Ofsse I Ofsse I

m

Page 56: Ciencias Basicas e Ingenieria. Computación. Proyecto …148.206.53.84/tesiuami/UAM3894.pdfEl Intel 4004 es el primer microprocesador aparecido en el mercado y miembro de la familia

Producto de datos:

ARCHIVO: PRODUCTO 1 .MEM

MUL Registro MUL Registro MUL BH Registro

12 MUL CL Registro 03 12 MUL BL Registro 02 12

04 MUL CH Registro 1 12 [ 05 MlJL A L Registro I 12 I O0 ~ ~

MUL BL Registro

07 12 MUL DH Reeistto 06 12 MUL DL Registro 03 12

u

ARCHIVO: PRODUCT02.MEM

INS Dire Direccionarniento C.ins Ofsset

MUL 0012h Directo 13 O0 DS Hi

MUL 1254h Directo 13 12 MUL 5FDDh Directo 13 5F W L 2365h Directo 13 23

Ti DD

4F

Page 57: Ciencias Basicas e Ingenieria. Computación. Proyecto …148.206.53.84/tesiuami/UAM3894.pdfEl Intel 4004 es el primer microprocesador aparecido en el mercado y miembro de la familia

. Incremento de datos:

ARCHIVO: MCRE 1 .MEM

Registro ~ N C - ~ BH Registro 14 02

INC BL Registro 14 03 INC CL Registro 14 04 - MC CH Registro 14 05 INC AL Registro 14 O0 M C BL Registro 14 03 INC DL Registro 14 06 M C AX Registro 14 08 INC BX Registro 14 09 M C cx Registro 14 OA M C SI Registro 14 OC TNC DI Registro 14 OD

~~ Y

ARCHIVO: INCRE2.MEM

‘ INS Dire Direccionamiento C.ins Ofsset Ofsset

INC 0012h Directo 15 O0 12 INC 1254h Directo 15 12 54 INC jFDDh Directo 15 5F DD INC 7365h Directo 15 23 65

DS Hi Lo

1

1NC l l l l h

.“3 , ‘98 I 15 Dire:?a INC .?9,Uh 89 DD 15 Directo INC DD89h 4F F1 15 Directo 1NC F14Fh 1 1 1 1 15 Directo

I

INC 12AAh 12 I 36 15 Directo INC 1236h 12 I AA 15 Directo

Page 58: Ciencias Basicas e Ingenieria. Computación. Proyecto …148.206.53.84/tesiuami/UAM3894.pdfEl Intel 4004 es el primer microprocesador aparecido en el mercado y miembro de la familia

Decremento de datos:

ARCHIVO: DECRE 1 .MEM

DEC Registro DEC BH Registro 16 02 DEC BL Registro 16 03 DEC CL Registro 16 04

X E C ~ CH Registro 16 05 DEC AL Registro 16 O0 DEC BL Registro 16 03

DEC AX Registro I 16 I 08 DEC BX Registro

DEC SI Registro 16 I OC DEC DI Registro 16 I OD

ARCHIVO: DECRE2.MEM

INS Dire Direccionamiento C.ins Ofsset Ofsset DS Hi Lo

I DEC 0012h I Directo I 17 I O0 1 12 I "

I I I

DEC 125431 Directo 17 12 54 DEC 5FDDh Directo 17 5F DD DEC 2365h Directo 17 23 65 DEC I l l l h I Directo I 17 I 1 1 I 1 1 DEC Fl4Fh I Directo

, DEC A9A8h 1 Directo I 17 1 A9 1 A8

I DEC 12AAh 1 Directo ! 17 ! ! 2 I A h

m

Page 59: Ciencias Basicas e Ingenieria. Computación. Proyecto …148.206.53.84/tesiuami/UAM3894.pdfEl Intel 4004 es el primer microprocesador aparecido en el mercado y miembro de la familia

Saltos en segmento de código:

ARCHIVO: JUMP.MEM

INS Dire Direccionamiento C.ins Ofsset Ofsset

JMP 0002h Directo 18 O0 02 Jh4P 0002h Directo 18 O0 02

DS Hi Lo

"

JMP 0004h Directo 18 O0 04 JMP OOOlh Directo 18 O0 o1 Jh4P 0002h Directo 18 O0 02

~

JMP OOOlh I Directo I 18 1 O0 I o1 JMP 0025h 1 Directo 1 18 I O0 1 25 " " ~~

JMP 0025h Directo 18 O0 25 JMP OOOlh Directo 18 O0 o1 JMP 0002h Directo 18 O0 02

Apilamiento de datos:

ARCHIVO: PUSH1 .MEM

Direccionarniento C.ins Cxeg

PUSH Inmediato PUSH CX Inmediato OA PUSH DX Inmediato OB

I PUSH SI Inmediato ] 19 1 OC 1 I

PUSH BX Inmediato I 19 1 09 PUSH CX Inmediato I 19 1 OA PUSH ,4X Inmediato 19 OS PUSH DX Inmediato 19 OB PUSH DI Inmediato 19 OD

-

Page 60: Ciencias Basicas e Ingenieria. Computación. Proyecto …148.206.53.84/tesiuami/UAM3894.pdfEl Intel 4004 es el primer microprocesador aparecido en el mercado y miembro de la familia

ARCHIVO: PUSH2.MEM

INS Dire Direccionamiento C.ins ns Hi

PUSH 0012h Directo 1A O0 12 PUSH . 1254h Directo 1A 12 54

"

PUSH 5FDDh Directo 1A SF LID PUSH 2365h Directo IA 23 65 PUSH l l l l h Directo I 1A I 1 11 PUSH F14Fh Directo 1A F1 I 4F PI JSH DD89h Directo 1A DD I 89 "" " -~ ..

1 PUSH A9A8h 1 Directo I 1A 1 A9 I AS I I I

PUSH 12AAh Directo 1A 12 AA PUSH 1236h Directo 1A 12 36

Desapilamiento de datos:

ARCHIVO: POPl.MEM

Page 61: Ciencias Basicas e Ingenieria. Computación. Proyecto …148.206.53.84/tesiuami/UAM3894.pdfEl Intel 4004 es el primer microprocesador aparecido en el mercado y miembro de la familia

ARCHIVO: POP2.MEM

INS Dire Direccionamiento C.ins Ofsset DS Hi

I POP 0012h I Directo 1 IC I O0 I I I u

POP 1254h Directo I IC I 12 POP SFDDh Directo I 1C I 5F - -~ -~~~

POP 2365h Directo 1C 23 POP l l l l h Directo IC 11 POP F14Fh Directo 1c F1

-

POP A9A8h Directo POP 12AAh Directo POP 1236h Directo 1c

Ofsset Lo

12 54 DD 65 11 4F 89 A8 AA 36

Page 62: Ciencias Basicas e Ingenieria. Computación. Proyecto …148.206.53.84/tesiuami/UAM3894.pdfEl Intel 4004 es el primer microprocesador aparecido en el mercado y miembro de la familia

Sección 4

Manual Técnico

Page 63: Ciencias Basicas e Ingenieria. Computación. Proyecto …148.206.53.84/tesiuami/UAM3894.pdfEl Intel 4004 es el primer microprocesador aparecido en el mercado y miembro de la familia

Apartir del estudio de la arquitectura básica, de un sistema minimo utilizando el microprocesador de la familia Intel, se realizó un analisis que nos permitio implementar una herramienta , interactiva para poder realizar simulaciónes en lenguaje ensamblador.

Partiendo de la propuesta de realizar una herramienta que nos permitiera simular programas en lenguaje ensamblador a nivel de microporcesador interno se desarrollo un sistema basado en la arquitectura de un microporcesador de la familia intel.

Arquitectura Interna Básica del sistema minimo 8088

Los microprocesador, busca instruciones en la memoria con una operación de lectura, decodifica, el código,y ejecuta la instrución, el sistema de memoria está ocioso entre cada ejecucuón de instrucción . En la siguiente figura se muestra el proceso básico del trabajo del microprocesador, ha 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 mecoria la instrución a ejecutar Direccionada por el registro Ip (Registro apuntador a siguiente instrución) mediante un algoritmo llamado Leecó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 microporcesador ejecuta el código de instrucción mediante un algoritmo llamado ejecutacodigo2(). localizado en la formal

4.-Incrementa 1P.text en tamaño de instrucción +l esta operacion se realiza en Siguiente -click localizada en la forml.

~~

Microprocesador [cuperar rDecodificG (Ejecutar I Recuperar I Decodificar I Ejecutar I 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 mega de memoria. Justificando lo anterior el sistema minimo tiene un bus de direcciones de 20 bits, por lo cual se puede dirrecionar desde:

0 0 0 0 0 00000000000000000000

11111111 1111 1111 1111 F F F F F

""""""""""""""""""""""-

Por lo cual implementamos un arreglo de las sigientes caracteristicas : Arreglo Unidimensional llamado memoria, de Tamaiio de 1 Mega y de tipo byte

Page 64: Ciencias Basicas e Ingenieria. Computación. Proyecto …148.206.53.84/tesiuami/UAM3894.pdfEl Intel 4004 es el primer microprocesador aparecido en el mercado y miembro de la familia

Memoria(0 To 1048575) As Byte

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

El sistema de memoria esta dividido en bloques los cuales estan definidos de la siguient manera.

t 8 bits FFFFF

FOOOO

OFFFF

00000

La memoria Eprom esta definida en un segmerlto de 64 k mediante un inicio en la dirreción de Memoria(983040) hasta Memoria(1048575) 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 definida en un segmento de 64 k localizado su inicio en la dirección de Memoria(0) hasta Memoria(65535).

La memoria ram esta segmentada en tres segmentos que son los siguientes:

Segmento de código: definido en Memoria(0) hasta Memoria(l023) z 0000-03FF

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

Segmento de pila: definido en Memoria(2048) hasta Memoria(3071) E 0800- BFF

Segmento extra: definido en Memoria(3072) hasta Memoria(4095) z OCOO-OFFF

Hzsta este pmto se h- defkido y ccncepn!izado !a implementación de !z zxmcria, xms es de saber la memoria debe tener códigos que representen programas

Page 65: Ciencias Basicas e Ingenieria. Computación. Proyecto …148.206.53.84/tesiuami/UAM3894.pdfEl Intel 4004 es el primer microprocesador aparecido en el mercado y miembro de la familia

NOP FFFFFFF O MOV R8 DATO8 VFVFFFF

DETECTA BUSDATOS=ORIGEN DESTINO=BUSDATOS MOV REG REG VVFFFFF 2 DETECTA ASIGNA MOV R16 DATO16 VFFVVFF 3 DETECTA BUSDATOS=ORIGEN DESTINO=BUSDATOS MOV MEM REG FVFFFVV 5 DATASEGMENT DETECTA MAR=DIRECCION BUSDATOS=ORIGEN ASIGNA=MEMORIA MOV REG MEM VFFFFVV

DATASEGMENT DETECTA MEMORIA=ASIGNA ADD RS DATO8 VFVFFFF 3 DETECTA BUSDATOS=ORIGEN SUMA ADD R8 R8 VVFFFFF 2 DETECTA SUMA ADD R16 Dl6 VFFVVFF 3 DETECTA BUSDATOS=ORIGEN SUMA ADD R16 R16 VVFFFFF 2

Page 66: Ciencias Basicas e Ingenieria. Computación. Proyecto …148.206.53.84/tesiuami/UAM3894.pdfEl Intel 4004 es el primer microprocesador aparecido en el mercado y miembro de la familia

DETECTA SUMA ADD REG MEM VFFFFVV 3 DATASEGMENT DETECTA SUMAMEM DIV R8 VFFFFFF 2 DETECTA DIVIDE DIV MEM FFFFFVV 3 DATASEGMENT DETECTA DIVlDEMEM 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 J DATASEGMENT DETECTA RESTAMEM IMUL R8 VFFFFFF * 7

DETECTA MULTlPLICA MUL MEM FFFFFVV

Page 67: Ciencias Basicas e Ingenieria. Computación. Proyecto …148.206.53.84/tesiuami/UAM3894.pdfEl Intel 4004 es el primer microprocesador aparecido en el mercado y miembro de la familia

3

DETECTA MULTIPLICAMEM INC R8 VFFFFFF 2 DETECTA INCREMENTA INC MEM FFFFFVV 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

. DATASEGMENT

STACKSEGMENT DETECTA POPREG POP MEM FFFFFVV 4 STACKSEGMENT

Page 68: Ciencias Basicas e Ingenieria. Computación. Proyecto …148.206.53.84/tesiuami/UAM3894.pdfEl Intel 4004 es el primer microprocesador aparecido en el mercado y miembro de la familia

DATASEGMENT DETECTA POPMEM

Page 69: Ciencias Basicas e Ingenieria. Computación. Proyecto …148.206.53.84/tesiuami/UAM3894.pdfEl Intel 4004 es el primer microprocesador aparecido en el mercado y miembro de la familia

; This help project requires hc 3.1 [OPTIONS] errorlog = iconwrks.err title = AYUDA SIMULADOR contents = CONTENIDO compress = false oldkeyphrase = false warning = 3

[FILES] AYUDA.rtf

[MAPI CONTENIDO 1 SIMULADOR 2 GRAFICOS 5 DISPLAY 6 TECLAS 7 EJEMPLOS 8 TECLAEJE 9 TECLARES 10 DIRECCIONFISICA 11 MENUS 12 MICRO 13 BIT 14 BYTES 15 BUSDATOS 16 HISTORIA 17 CARGA 18 SUMA 19 RESTA 20 PRODUCTO 2 1 DIVISION 22 SALTO 23 MIC 24 interno 25 registro 26 mapa 27 INS 28 reg 29 EP 30 [WINDOWS]

main = "AYUDA SIMULADOR". (0.0,103-3.1023 L., ( 192.192,192 ) = "Icon Works Help", (232206,725,456 ),,, (, 192.192.192 ), I

[CONFIG] :CB("glossarv", "&Glossarv". "JI('prueba.hlp>qlossar)i'. 'GLOSSARY')") ;BrowseButtons()

Page 70: Ciencias Basicas e Ingenieria. Computación. Proyecto …148.206.53.84/tesiuami/UAM3894.pdfEl Intel 4004 es el primer microprocesador aparecido en el mercado y miembro de la familia

# SIMULADOR SISTEMA MINIM0 8088

El sistema minimo 8088es una herramienta que se diseño, para poder proporcionar al usuario una herramienta de software que le permita realizar practicar de programación a nivel ensamblador, a manera que pueda realizar sus primeras practicas de dicho lenguaje en un simulador de estas caracteristicas. Cabe señalar que estc sistema tiene sus limitaciones de programación y que solo podran ser manejadas algunas herramientas del 8088 ya que suele ser complicado para un proyecto terminal lograr modelar y simular todas las propiedades de el microprocesador 8088. -

-

El contenido de esta ayuda esta dividido en cuatrosecciones:

Los temas son los siguientes:

e

m e

Simulador Desensamblador Memoria

CONTENIDO

Page 71: Ciencias Basicas e Ingenieria. Computación. Proyecto …148.206.53.84/tesiuami/UAM3894.pdfEl Intel 4004 es el primer microprocesador aparecido en el mercado y miembro de la familia

# SIMULADOR

El sistema minimo esta representado de manera gráfica en esta pantalla, aqui 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 graficos, los cuales componen el sistema minimo 8088. Podemos cambiar de dirreción de edición de nuestros programas, asi como desensamblar el código de expresiones completas, aun condigo de lenguaje ensamblador.

Graficos de los componentes fisico del sistema minimo 8088 Display de edición de programas Coniunto de teclas de edición Caia de dirreción Menus

# SIMULADOR

Page 72: Ciencias Basicas e Ingenieria. Computación. Proyecto …148.206.53.84/tesiuami/UAM3894.pdfEl Intel 4004 es el primer microprocesador aparecido en el mercado y miembro de la familia

’ DESENSAMBLADOR

En esta pantalla se observa el comportamiento de los registros.

Registros del microprocesador e

’ DESENSAMBLADO

Page 73: Ciencias Basicas e Ingenieria. Computación. Proyecto …148.206.53.84/tesiuami/UAM3894.pdfEl Intel 4004 es el primer microprocesador aparecido en el mercado y miembro de la familia

#/ MAPEO-DE-MEMORIA

a

# MAPEO-DE-MEMORIA

Page 74: Ciencias Basicas e Ingenieria. Computación. Proyecto …148.206.53.84/tesiuami/UAM3894.pdfEl Intel 4004 es el primer microprocesador aparecido en el mercado y miembro de la familia

# GRAFICOS

Los graficos de esta pantalla representan los componentes fisicos del sistema, y podemos obtener información hacerca de ellos. Para obtener información de estos componentes graficos, debemos posicionar el cursor del mouse en el componente, y teclear un click en el boton derecho del mouse, y para cerrar la ventana de información del componente basta con teclear el botón cerrar.

# GRAFICOS

Page 75: Ciencias Basicas e Ingenieria. Computación. Proyecto …148.206.53.84/tesiuami/UAM3894.pdfEl Intel 4004 es el primer microprocesador aparecido en el mercado y miembro de la familia

# DISPLAY

El display es una ventana que nos permite vimalizar las expresiones del lenguaje, los registro, asi como los datos que se van cargando para completar las instruciones. Cabe señalar que en este objeto no podemos realizar ninguna edicion directa de datos.

Page 76: Ciencias Basicas e Ingenieria. Computación. Proyecto …148.206.53.84/tesiuami/UAM3894.pdfEl Intel 4004 es el primer microprocesador aparecido en el mercado y miembro de la familia

/# TECLAS

Las Teclas se clasifica en:

Las teclas de Edición son las 5 teclas que se encuentran debajo del display. Estas teclas se componen de las teclas de instrución que son las 2 teclas que se

encuentran en la parte izquieda de este conjunto, cuyas teclas se etiquetan con los simbolos siguientes: fi; La tecla de entrar que es la tercera tecla del conjunto cuyo simbolo es -1; las dos ultimas teclas de este conjunto con los simbolos siguientes u fi son las teclas de registros las cuales nos permiten escoger los registros del microprocesador para formar las instruciones 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 simbolos que nos permiten formar el conjunto de los numeros representados en la base hexadecimal.

Las teclas de función son las siguientes:

Tecla desensamblar Tecla Eiecutar Tecla ResetTecla Ejecutar: Nos permite ejecutar la pantalla de ejecución de

programas, esta fbnción se puede realizar posicionando el cursor del mouse enla tecla y haciendo un click en el boton izquierdo del mouse 6 mediante las teclas rapidas ALT+E.

# TECLAS

Page 77: Ciencias Basicas e Ingenieria. Computación. Proyecto …148.206.53.84/tesiuami/UAM3894.pdfEl Intel 4004 es el primer microprocesador aparecido en el mercado y miembro de la familia

Tecla Reset: Nos permite resetear la memoria y empezar una nueva ejecución, esta función se puede realizar posicionando el cursor del mouse enla tecla y haciendo un click en el boton izquierdo del mouse 6 mediante las teclas rapidas ALT+R.

Page 78: Ciencias Basicas e Ingenieria. Computación. Proyecto …148.206.53.84/tesiuami/UAM3894.pdfEl Intel 4004 es el primer microprocesador aparecido en el mercado y miembro de la familia

Tecla desensamblar: Esta tecla nos ejecuta el desensamblador del código de memoria a codigo en lenguaje ensamblador. podemos tener haceso a esta tecla mediante el posicionamiento del cursor del mouse y haciendo un click enel boton izquierdo o mediante la combinación de teclas rapidas ALT+D.

Page 79: Ciencias Basicas e Ingenieria. Computación. Proyecto …148.206.53.84/tesiuami/UAM3894.pdfEl Intel 4004 es el primer microprocesador aparecido en el mercado y miembro de la familia

# DIRRECIONFISICA

#/ DIRREICIONFISICA

Page 80: Ciencias Basicas e Ingenieria. Computación. Proyecto …148.206.53.84/tesiuami/UAM3894.pdfEl Intel 4004 es el primer microprocesador aparecido en el mercado y miembro de la familia

# MENUS

Page 81: Ciencias Basicas e Ingenieria. Computación. Proyecto …148.206.53.84/tesiuami/UAM3894.pdfEl Intel 4004 es el primer microprocesador aparecido en el mercado y miembro de la familia

Microprocesador Intel 8088.

El intel8088 es un procesador del tipo NMOS que se vende empacado con 40 patas. Tiene una trayectoria interna de datos de 16 & aunque lee y escribe de memoria solo 8 &a la vez ademas puede direccionar 1 Megabyte 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 minimo. 0 Modo maximo.

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 datos Sin embargo para reducir el mínimo de patas necesarias para que el 8088 se ajuste al paquete estandar de 40 terminaleslas 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 ambiguedades. Por otra parte a la pata 33 se le denomina MNMX (Mínima/Máxima) esta pata se activa para indicar que no esta en el modo máximo sino en el minimo.Para el control del bus de datos 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 lineas 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.

# MICRO

Page 82: Ciencias Basicas e Ingenieria. Computación. Proyecto …148.206.53.84/tesiuami/UAM3894.pdfEl Intel 4004 es el primer microprocesador aparecido en el mercado y miembro de la familia

BIT: Dígito binario: la unidad de datos más pequeña que un equipo puede almacenar. Los . bits se expresan como 1 o O.#BIT

## BIT

Page 83: Ciencias Basicas e Ingenieria. Computación. Proyecto …148.206.53.84/tesiuami/UAM3894.pdfEl Intel 4004 es el primer microprocesador aparecido en el mercado y miembro de la familia

Byte: Unidad minima de almacenamiento para un dato.

KiloByte----- 1,000 Bytes. MegaByte--- 1,000,000 Bytes.# BYTES

# BYTES

Page 84: Ciencias Basicas e Ingenieria. Computación. Proyecto …148.206.53.84/tesiuami/UAM3894.pdfEl Intel 4004 es el primer microprocesador aparecido en el mercado y miembro de la familia

BUS Datos: ES el canal por el cual se transfieren 10s datos, entre la memoria y el microprocesador. El canal de datos para el 8088, transfiere 1 byte entre la memoria y el microprocesador.# BUSDATOS

# BUSDATOS

Page 85: Ciencias Basicas e Ingenieria. Computación. Proyecto …148.206.53.84/tesiuami/UAM3894.pdfEl Intel 4004 es el primer microprocesador aparecido en el mercado y miembro de la familia

Sección 5

Código del simulador

Page 86: Ciencias Basicas e Ingenieria. Computación. Proyecto …148.206.53.84/tesiuami/UAM3894.pdfEl Intel 4004 es el primer microprocesador aparecido en el mercado y miembro de la familia

Jb DISPLAY - MouseMove(Button As Integer, Shift As Integer, X As Single,

+

ub Ejecutar Click ( ) DireccionEditarl.Text w l

'ub Form Load() .e$ = App. Path + "\mnemonicos. 1st"

ii

. = i + l

IoCodigo = i 2 1 JoOperacion = O ~cion~ditar = &HO Se inicailiza la dirreccion inicial para editar un p

i = O To 15 I'ecla (i) .Enabled = False i i = 3 T o 4 Funcion (i) .Enabled = False i LAY.Text = mnemonicos(Codigo0peracion) ccionamiento = 1

stros (O) = "AL" I Se inicializan el arreglos de registros del microporc

stros (1) = l l A H 1 l

stros(2) = IIBL" stros (3) = IIBH" stros ( 4 ) = llCL1l stros ( 5 ) = llCH1l stros ( 6 ) = llDL1' stros ( 7 ) = "DH" stros ( 8 ) = I I A X "

istros (18) = " C S " Inicialización del arreglo de codigos de error

iqosdeerror iqosdeerror iqosdeerror iqosdeerror iqosdeerror modificar iqosdeerror ( 5 1 iqosdeerror ( 6) iqosdeerror ( 7 1 igosdeerror ( 8 )

= "El Seqmento de códiqo, esta definido en O 0 0 0 HI1 = "El Seqmento de datos, esta definido en 0400 HI1 = " E l Seqmento de pila, esta definodo en 0800 HI1 = "El Seqmento estra esta, definido en OCOO H"

reqistros AX y el XL I1

= "La división excede el de un registro de 8 bl-

= 11 1 ibre 11

= 11 1 ibre (1

= 11 1 ibre = 11 1 ibre '1

I

Page 87: Ciencias Basicas e Ingenieria. Computación. Proyecto …148.206.53.84/tesiuami/UAM3894.pdfEl Intel 4004 es el primer microprocesador aparecido en el mercado y miembro de la familia

rml - 2

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

Set Destino = CH

Set Destino = DL

Set Destino = DH

Set Destino = ax

Set Destino = bx

Set Destino = cx

Set Destino = dx

Set Destino = si

Set Destino = di

Set Destino = bp

Set Destino = SS

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 Select End I f

I f Operacion(CodiqoOperacion).ByteReg2 Then Select Case Registro2

Case O

Case 1

Case 2

Case 3

Case 4

Case 5

Case 6

Case 7

Case 8

Case 9

Case 10

Case 11

Origen = AL.Text

Origen = AH.Text

Origen = BL.Text

Origen = BH.Text

Origen = CL.Text

Origen = CH.Text

Origen = DL.Text

Origen = DH.Text

Origen = ax.Text

Origen = bx.Text

Origen = cx.Text

m

Origen = dx.Text Case 12

Page 88: Ciencias Basicas e Ingenieria. Computación. Proyecto …148.206.53.84/tesiuami/UAM3894.pdfEl Intel 4004 es el primer microprocesador aparecido en el mercado y miembro de la familia

rml - 3

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 = Tl2.Text

Origen = MAR.Text

Origen = BusDatos.Text

Case 13

Case 14

Case 15

Case 16

Case 17

Case 18

Case 19

Case 20

Case 21

Case 22

Case 23

End Select End If If Operacion(Codiqo0peracion) .Dato8 Then

End If If Operacion(Codiqo0peracion) .DatoHi Then

Origen = Hex(DatoByte) 'checar si se usa BinHex()

If ExisteDestino Then

End If Origen = Hex (DatoWord)

End If

d Function

blic Sub EjecutaCodigo2 ( )

tones = vbRetryCance1 + vbcritical + vbDefaultButton1 Define los botones. tulo = "Códiqos de error" I Define el título. uda = "ayuda. hlp" Define el archivo

I de ayuda. mero = 1000

Dim dirreciondatos As Byte

For k = O To 30

Select Case Operacion (CodigoOperacion) .Micro (k)

Case "DATASEGMSNT" I Inicializa el segmento de datos

DATOS$ = "0400"

Cclse I' CGCEC;ZGblE;;T!' ' Inlciaiiza el segmento de cociigo

CODIGOS = "0000"

Case "STACKSEGMENTfl I inicializa el segmento de pila

STACK$ = "0800"

Page 89: Ciencias Basicas e Ingenieria. Computación. Proyecto …148.206.53.84/tesiuami/UAM3894.pdfEl Intel 4004 es el primer microprocesador aparecido en el mercado y miembro de la familia

rml - 4

Case "ASIGNA" asigna el valor del origen al destino

Destino.Text = Origen

Case llASIGNA=MEMORIAfl I Asigna el contenido de un registro al Segmento de da S

ento$)

Seqmento$ = DATOS$ T1. Text = Hex (Val (Trim (T1. Text) ) ) T2. Text = Hex (Val (Trim (T2. Text) ) ) Tl2.Text = Trim(T1.Text + T2.Text) ".Text = Val("&H'f + Tl2.Text) Desplazamiento$ = T12.Text

While Len (Desplazamiento$) < 4

Wend

DireccionEditar = CLng("&H" + Segmento$) * 16 + CLng("&H" + Desplaza If Len(0riqen) = 4 Then

Memoria(Direcci0nEditar) = CLnq("&HI' + Left (Trim(0riqen) I 2) ) Memoria (DireccionEditar + 1) = CLng(Il&H" + Right (Trim(0rigen) I 2

valormem = Val ( &HI1 + Trim (T12. Text) )

Desplazamiento$ = l10l1 + Desplazamiento$

BusDirecciones.Text = " O 1 I + Desplazamiento$ m

Else

Case "MEMORIA=ASIGNA" 'Asigna el contenido de una dirección de memoria del S

'de datos a un regis 'mento

'O

Seqmento$ = DATOS$ T1.Text = Hex(Va1 (T-rim(T1 .Text) ) T2.Text = Hex(Val(Trim(T2.Text))) T12.Text = Trim(T1.Text + T2.Text) Desplazamiento$ = Tl2.Text BusDirecciones .Text = "0" + T12. Text While Len (BusDirecciones. Text) < 5

Wend IBusDatos.Text = Origen

While Len (Desplazamiento$) < 4

BusDirecciones.Text = 110 '1 + BusDirecciones.Text

-ento$) DireccionEditar = CLng("&H1I + Segmento$) * 16 + CLng('l&HIl + Cesplaza

BusDatos.Text = Hex(Memoria(DireccionEditar)) I Destino = BusDatos.Text

1 MAR.Text = Memoria!DireccionEditar)

Case "SUTV~AMEM'~ Suma e1 contenido de un registro entre el cc'c' . . ;_e m a direccón

I del segemnto de datc;s

SeqmentoS = DATOS$ T1. Text = Hex (Val (Trim (T1 . Text) ) ) T2. Text = Hex (Val (Trim iT2. Text) ) )

Page 90: Ciencias Basicas e Ingenieria. Computación. Proyecto …148.206.53.84/tesiuami/UAM3894.pdfEl Intel 4004 es el primer microprocesador aparecido en el mercado y miembro de la familia

rml - 5

T12.Text = Trim(T1.Text + T2.Text) Desplazamiento$ = T12.Text BusDirecciones.Text = T12.Text While Len(BusDirecciones.Text) < 5 BusDirecciones.Text = I r O " + BusDirecciones.Text

While Len (Desplazamiento$) < 4

Wend

Wend

Desplazamiento$ = I r O t l + Desplazamiento$

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

Case "RESTA" 'Resta el contenido de un registro entre el contenido de 0 o reqistor

Destino.Text = Hex(CLng(lt&hlt + Destino.Text) - (lLng(lt&hlt + Origen)) Case "RESTAMEM" 'Resta el contenido de un registro entre el contenido d

una dirección de del segemnto de datos

SeqmentoS = DATOS$ T1. Text = Hex (Val (Trim (T1. Text) ) ) T2. Text = Hex (Val (Trim (T2. Text) ) ) Tl2.Text = Trim(T1.Text + T2.Text) Desplazamiento$ = T12.Text BusDirecciones .Text = r l O t r + T12. Text BusDatos.Text = Oriqen BusDirecciones.Text = T12.Text While Len(BusDirecciones.Text) < 5 BusDirecciones.Text = l l O t l + BusDirecciones.Text Wend

Desplazamiento$ = l l O t l + Desplazamiento$ While Len (Desplazamiento$) < 4

Wend DireccionEditar = CLng(ll&H1t + Segmento$) * 16 + CLng(lt&H1t + Desplaza

Destino. Text = Hex (Val ("&h" + Destino .Text) - Val (Memoria (DireccionE

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

ento$)

tar) ) 1

T1.Text = Memoria(DIRRECIONED1TAR)

Case "MULTIPLICA11

T12.Text = CLnq(fl&htl + AL.Text) T1 .Text = CLnq (I1&htt + CL.Text) T1. Text = CLnq ( "&h" + Destino. Text) ax. Text = Xex (Val ( I1&h" + T12 .Text) * Val ("&hll + T1. Tlxt J i

Case ttMULTIPLICAMEM'l Multiplica el contenido del registro AL por el con :nido de una direccibn

:spalda en el reqistro AX I del segmento de datos de 8 bits, y el producto ?o

Seq.rnentoS = LJliriGbs T1. Text = Hex (Val (Trim (T1. Text) ) ) T2. Text = Hex (Va1 (Trin (T2. Text) 1 ) T12 .Text = Trim (T1 .Text + T2 .Text) Desplazamiento$ = T12.Text BusDirecciones.Text = T12.Text While L e n ( B u s C i r e c c i o n e s . T e x c ) < 5

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

'BusDatos.Text = Orlqen While Len (Desplazamiento$) < 4 Desplazamiento$ = + Despiazamiento$

Page 91: Ciencias Basicas e Ingenieria. Computación. Proyecto …148.206.53.84/tesiuami/UAM3894.pdfEl Intel 4004 es el primer microprocesador aparecido en el mercado y miembro de la familia

rml - 6

Wend DireccionEditar = CLng("&H" + Segmento$) * 16 + CLng(ll&H1l + Desplaza

entoS 1

I El cociente lo pone en el registro AL y el residuo en el reg

Tl2.Text = CLnq("6rh" + ax.Text) T1.Text = CLnq(Il&h" + Destino.Text) BusDatos.Text = Destino

tro A H .

If Len(Hex(iT12.Text) / Val(T1.Text))) > 2 Then res = MsgBox(Codigosdeerror(4) , botones, Titulo, Ayuda, 5 If res = vbCancel Then

End If ComandoAnima Click -

Else AL.Text = Hex((T12.Text) / Val(T1.Text)) A H . Text = Hex (Val (T12. Text) Mod Val (T1. Text) )

End If

S

Case "DIVIDEMEM" Divide el contenido del registro Ax entre el conte

I de una direccion del segment do de 16 bits

de datos Seqmento$ = DATOS$ T1. Text = Hex (Val (Trim (T1 .Text) ) ) T2. Text = Hex (Val (Trim (T2. Text) ) ) Tl2.Text = Trim(T1.Text + T2.Text) Desplazamiento$ = Tl2.Text BusDirecciones.Text = Tl2.Text While Len(BusDirecciones.Text) < 5 BusDirecciones.Text = r l O " + BusDirecciones.Text Wend BusDatos.Text = Oriqen

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

Wend DireccionEditar = CLng(ll&H1l + Segmento$) * 16 + CLng("&Htl + Desplaza

T12. Text = CLnq ( "&h" + ax. Text) T1 .Text = CLnq (I1&h" + CL.Text)

.ento$)

o T1.Text = CLnq(ll&hll + Destino.Text) If Len (Hex ( (T12 .Text) / Val (Memoria (DireccionEditar) ) ) > 2 Then

res = MsqBox (Codiqosdeerror ( 4 ) , botones, Titulo, Ayuda, S! If res = vbCancel Then ComandoAnima Click

End If -

Else AL.Text = Hex( (Tl2.Text) / Val (Memoria(Direcci0nEditar) j ) G

lrda el cociente en AL Ah.'T'exr; = dex{Vai ( 1 1 2 :l'exc) Moa Val (lViemoria(D1reccionEd~~~r~ )

' Guarda el residuo en AH End If BusDatos.Text = Hex(Val(Memoria(DireccionEditar)))

Case "INCREMENTA" Incrementa el contenido en uno de un regiscz-7 iestin

Destino.Text = Hex(Val("&h" + Destino.Text) + 1) Case "INCREMENTAMEM" I Incrementa el contenido de una direccic-::

Ito de datos : egm

Page 92: Ciencias Basicas e Ingenieria. Computación. Proyecto …148.206.53.84/tesiuami/UAM3894.pdfEl Intel 4004 es el primer microprocesador aparecido en el mercado y miembro de la familia

rml - 7

ento$)

Seqmento$ = DATOS$ T1.Text = Hex(Val(Trim(T1.Text))) T2. Text = Hex (Val (Trim (T2. Text) ) ) Tl2.Text = Trim(T1.Text + T2.Text) Desplazamiento$ = Tl2.Text BusDirecciones.Text = T12.Text While Len (BusDirecciones . Text) < 5 BusDirecciones.Text = r l O f f + BusDirecciones.Text Wend BusDatos.Text = Oriqen

Desplazamiento$ = 110" + Desplazamiento$ While Len (Desplazamiento$) < 4

Wend DireccionEditar = CLng ( "&H" + Segmento$) * 16 -+ CLng(f'&H1l + Desplaza MAR.Text = Memoria(Direcci0nEditar) Memoria(Direcci0nEditar) = Hex(CLng("&H" + MAR.Text)) + 1

Case "DECREMENTA" Decrernenta el contenido de un registro

Destino.Text = Hex(Val(ll&Hfl + Destino.Text) - 1 )

Case IIDECREMENTAMEM" 'Decrementa el contenido de una direccion del se* to de datos

Seqmento$ = DATOS$ Selecciona el segmento de datos T1. Text = Hex (Val (Trim (T1. Text) ) ) T2.Text = Hex(Val(Trim(T2.Text))) Tl2.Text = Trim(T1.Text + T2.Text) Desplazamiento$ = T12.Text BusDirecciones.Text = Tl2.Text While Len (BusDirecciones. Text) < 5 BusDirecciones.Text = 'IO" + BusDirecciones.Text Wend BusDatos.Text = Oriqen

Desplazamiento$ = l l O 1 f + Desplazamiento$ While Len (Desplazamiento$) < 4

Wend DireccionEditar = CLng (Il&H" + Segmento$) * 16 + CLng(ll&Hfl + Desplaza MAR.Text = Memoria(Direcci0nEditar) I f Memoria(Direcci0nEditar) <> O Then Memoria(Direcci0nEditar) = Hex(CLng("&hIl + MAR.Text)) - 1

ento$)

Else

End I f Error 1

I Case "INCREMENTA A MAR" I MAR.Text = Hex(CLng("&h" + MAR.Text) + 1)

Case "DECREMENTA" I Destino.Text = Hex(ValiDestino.Text) - 1)

I Case llCOMPLEMENTO1r I Destino.Text = Hex(255 - Val(0rigen))

I Case "MAR=DIRECCION"

Case 'fDESTINO=BUSDATOS'l ' El contenido del busdatos lo carga al destin

Destino.Text = BusDatos.Text 1 Case "BUSDATOS=DESTINO"

Destino = BusDatos.Text

BusDatos.Text = Oriqen Case llBUSDATOS=ORIGENf' 'El contenido del origen lo carga al bus datos

I Case "ORIGEN=BUSDATOS1t I BusDatos.Text = Oriqen

' EsribirBusDirecciones Case "ORIGEN=BUSDIRRECIONES"

Page 93: Ciencias Basicas e Ingenieria. Computación. Proyecto …148.206.53.84/tesiuami/UAM3894.pdfEl Intel 4004 es el primer microprocesador aparecido en el mercado y miembro de la familia

rml - 8

I Case l 'BUSDIRRECIONES=ORIGENtf ' Case '1DESTINO=BUS31RRECIONESgt Case l'BUSDIRRECIONES=DESTINOtl Case I'DESTINO ES Tltl ' Set Destino = T1 'Case 'IDESTINO ES T2"

I Set Destino = T2 'Case "DESTINO ES T12"

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

Set Oriqen = T1 'Case "ORIGEN ES T2"

Set Oriqen = T2 'Case 'IORIGEN ES T12"

Set Oriqen = T12 'faltan los demss casos

Case I Ejecución de un salto relativo

ip.Text = Hex( (Val ('t&h't + ip.Text) + Val ('l&h" + Destino.Text) ) )

Case I1PUSHREG" 'Ejecución del apilamiento en SS de un registro

PILA = STACK$ Seleccionamos el segmento de pila T1. Text = Hex (Val (Trim (T1. Text) ) ) T2.Text = Hex(Val(Trim(T2.Text))) T12. Text = Trim (T1. Text + T2. Text) Desplazamiento$ = Tl2.Text BusDatos.Text = Oriqen BusDirecciones.Text = Val (sp.Text) + Val ( " 0 8 0 0 1 ' ) BusDirecciones.Text = Hex( (Val('t&h'' + sp.Text) + Val(It&H1' + ' t0800 ' t

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

Wend

'While Len(BusDirecciones.Text) < 5 'BusDirecciones.Text = '10 '1 + BusDirecciones.Text While Len (Desplazamiento$) < 4 Desplazamiento$ = I ' O " + Desplazamiento$ Wend DireccionEditar = CLnq(I'&Hft + PILA) * 16 + CLnq("&HI1 + sp.Text) Memoria(Direcci0nEditar) = CLnq(l'&H1t + Left(Trim(Destino1 , 2) 1 Auxl = Hex(CLnq("&H" + Left (Trim(Destin0) , 2) 1 )

BusDirecciones.Text = T12.Text

Wend

Memoria(Direcci0nEditar + 1) = CLng(t'&H1l + Right (Trim(Destino1, 2 aux2 = Hex(CLnq("&H" + Riqht(Trim(Destin0) , 2 ) ) ) ,

BusDatos.Text = Auxl + aux2 sp.Text = Hex((Val("&h" + sp.Text) + Val(2)))

Case PUSHMEMI' I Ejecución de Apilamiento en el SS de un dato d e l CS

PILA = STACKS I Seleccionamos el seqmento de pila SeqmentoS = DATOS$ I Selecionamos el seqmento de pila Desplazamiento$ = Trim (Hex (Val (Trim (T1 .Text) ) ) + Hex (Val (Trim (T2 .Tex

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

While Len(BusDirecciones.Text1 < 5 BusDirecciones.Text = " 0 " + BusDirecciones.Text

Wend

While Len (Desplazamiento$) < 4 Desplazamiento$ = "0" + Desplazamiento$

Wend DireccionEditar = CLng ( Ir&Htl + Segmento$) * 16 + CLng("&Hft + 'ssnlaza

-ento$) Auxl = Str (Memoria (DireccionEditar) )

Page 94: Ciencias Basicas e Ingenieria. Computación. Proyecto …148.206.53.84/tesiuami/UAM3894.pdfEl Intel 4004 es el primer microprocesador aparecido en el mercado y miembro de la familia

lrml - 9

aux2 = Str(Memoria(Dir2ccionEditar + 1)) While Len (sp. Text) < 4

Wend DireccionEditar = CLnq("&H" + PILA) * 16 + CLnq(ll&H1l + sp.Text) Memoria (DireccionEditar) = Hex (Val (ll&hll + Auxl) ) Memoria(Direcci0nEditar + 1) = Hex(Va1 ("&h" + aux2) ) sp.Text = Hex( (Val (I1&h" + sp.Text) + Val(2))) BusDatos . Text = Hex (Auxl) + Hex (aux2)

sp.Text = + sp. Text

Case "POPREG" no de 16 Bites

I Ejecución de Desapila del SS a un reg des

SeqmentoS = STACK$ Seleccionamos el segmento de pila While Len(sD. Text) e 4 sp. Text = r r O 1 l + sp.Text

Wend Di-reccionEditar = CLng("&H" + Segmento$) * 16 + CLng("&HI1 + sp.Text)

Direccion del SS BusDirecciones.Text = Hex( (Val (ll&hlf + sp.Text) + Val ("&H" + '1080011)

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

Wend

.o

auxiliarl = Hex(Val(Memoria(DireccionEditar - 1) ) ) auxiliar2 = Hex(Val(Memoria(DireccionEditar - 2))) BusDatos.Text = auxiliar2 + auxiliarl Destino.Text = auxiliar2 + auxiliarl Asignación al resgistro dest

Memoria(Direcci0nEditar - 1) = O Eliminación de valoes de la pila Memoria(Direcci0nEditar - 2) = O Eliminación de valoes de l a pila sp. Text = Hex (Val ("&h" + sp. Text) - Val (2) Decremento del Sp

Case llPOPMEM1l Seqmento$ = STACK$ Seleccionamos el segmento de pila While Len(sp.Text) < 4

Wend sp.Text = r r O 1 l + sp. Text

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

auxiliarl = Hex (Val (Memoria (DireccionEditar - 1) ) ) auxiliar2 = Hex(Val(Memoria(DireccionEditar - 2 ) ) ) Memoria(Direcci0nEditar - 1) = O Eliminación de valoes de la pila Memoria(Direcci0nEditar - 2) = O Eliminación de valoes de l a pila

sp.Text = Hex (Val (Il&h" + sp.Text) - Val (2) 1 Decremento del S p SeqmentoS = DATOS$ T1.Text = Hex(ValiTrim(T1.Text))) T2. Text = Hex (Val (Trim (T2. Text ) T12.Text = Trim(T1.Text + T2.Text) BusDirecciones.Text = T12.Text While LeE iBcsDireccicnes . Text 1 < 5 BusDirecciones.Text = 11011 + BusDirecciones.Text

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

Wend DireccionEditar = CLng ( I1&H" + Segmento$) * 16 + CLng(I1&Hl1

Wend

Desplazamiento$ = " 0 " + Desplazamiento$

-ento$) MAR.Text = Memoria(DireccionEditar) Memoria (DireczionEditar) = Val. ( I1&h" + auxiiiar-2) Memoria(Direccior1Zditar + 1) = Va' ' I 1 \ &h" + auxiliarl) BusDatos.Text = auxiliar2 + auxillarl

End Select Next k

Id Sub

Page 95: Ciencias Basicas e Ingenieria. Computación. Proyecto …148.206.53.84/tesiuami/UAM3894.pdfEl Intel 4004 es el primer microprocesador aparecido en el mercado y miembro de la familia

rml - 10

blic Sub HazDump ( ) Micad$ = MemoriaFisica$(SegmentoDump.Text, DesplazamientoDump.Text) While Len(MiCad$) < 5

Wend DireccionFisicaDump = CLng ( Ir&HI1 + Micad$) Dump.Text = I I I I

Dim OffsetAux As Lonq Auxl$ = "&H" + Desp1azamientoDump.Text OffsetAux = CLnq(Auxl$) For i = DireccionFisicaDump To DireccionFisicaDump + 12 * 8 Step 8

MiCad$ = "O" + MiCad$

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

Wend CadenaAuxS = CadenaAux$ + F o r j = i T o i + 7

CadenaAux$ = ' (0 + CadenaAuxS

num$ = Hex (Memoria (j ) ) If Len (num$ ) = 1 Then num$ = O + num$ CadenaAux$ = CadenaAuxS + num$ + 11

Next -j F o r j = i T o i + 7

If Memoria( j) < > O And Memoria(j) c > 9 Then

Else

End If

CadenaAuxS = CadenaAuxS + Chr(Memoria(j)) CadenaAuxS = CadenaAuxS + II

Next j Dump.Text = Dump.Text + Chr(l3) + Chr(l0) + CadenaAux$ OffsetAux = OffsetAux + 8

Next i Id Sub

lblic Function ObtenDireccionNoCero(Direccion As Long) While Direccion < 1023 And Mernoria(Direcci0n) = O

Direccion = Direccion + 1 Wend ObtenDireccionNoCero = Direccion

Id Function

lblic Function ObtenTamafioiDireccion As Long) DireccionInicial = Direccion While Direccion < 1024 And (Memoria(Direccion) <> O Or Memoria(Direcclon + 1

< > O Or Memoria(Direcc1on + 2 ) < > O Or Memoria(Direcci0n + 3 ) < > O Or Memeria( ireccion + 4 ) < > O )

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

.Id Function

rivate Sub Abrir Click 0 Dim Direccion As Lonq Dim Tamaño As Integer Dim Dato As Byte D i m i For i = O To 65535 Step 1

Page 96: Ciencias Basicas e Ingenieria. Computación. Proyecto …148.206.53.84/tesiuami/UAM3894.pdfEl Intel 4004 es el primer microprocesador aparecido en el mercado y miembro de la familia

rml - 11

Memoria (i) = CLng ( "&hfl + ' l o o f r )

Next i DE.Text = ~ f O O O O : O O O O ~ ~ CodiqoOperacion = O DireccionEditar = &HO

Proceso.Min = 1 Proceso.Max = 27 Proceso.Value = Proceso.Min On Error GoTo Finalizar Labe37.Caption = "Archivo: I f + AbrirMemoria.filename

'AbrirMemoria.Action = 1 AbrirMemoria .DialoqTitle = "Abrir archivof1 AbrirMemoria.ShowOpen Open AbrirMemoria.fi1ename For Input As 1 On Error GoTo Finalizarcerrar

While Not EOF(1) Label37.Caption = AbrirMemoria.filename

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

Input #1, Dato Memoria(Direcci0n + i - 1 ) = Dato Proceso.Value = i

Next i Wend 'Proceso.Value = Proceso.Min

Close 1 HazDump

nalizarcerrar:

nalizar:

d Sub

ivate Sub AH Chanqe ( 1 BanderaReqistro Then BanderaRegistro = False

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

Wend AH.Text = I f 0 " + AH.Text

End If If Len (AH.Text) > 2 Then AH.Text = Right (AH.Text, 2 ) ax.Text = AH.Text + AL.Text

d .d

BanderaRegistro = True TF IL

Sub

,ivate Sub AH KeyPress(KeyAscii As Integer) BanderaReqistro = False Caracter = Chr(KeyAscii) I f (Caracter >= " 0 " And Caracter c = I r 9 I t ) Or (Caracter >= "All And Caracter <=

F") Or (Caracter >= And Caracter <= flfrr) Then KeyAscli = Asc (Ucase (Caracter) ) cadena$ = cadena$ = Mid (AH. Text , 2 , 1) -.Text = cadena$ AH.SelStart = 1

KeyAscii = O Else

End I f BanderaRegistro = True

Id Sub

Page 97: Ciencias Basicas e Ingenieria. Computación. Proyecto …148.206.53.84/tesiuami/UAM3894.pdfEl Intel 4004 es el primer microprocesador aparecido en el mercado y miembro de la familia

rml - 12

ivate Sub AL Chanqe 0 BanderaRegistro Then

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

Wend AL. Text = 11011 + AL. Text

End If If Len (AL.Text) > 2 Then AL.Text = Right (AL.Text, 2 ) BanderaReqistro = False ax.Text = AH.Text + AL.Text BanderaRegistro = True

d If d Sub

ivate Sub AL KeyPress(KeyAscii As Integer) BanderaReqistro = False Caracter = Chr (KeyAscii) If (Caracter >= 1 1 0 1 1 And Caracter <= f 1 9 f 1 ) Or (Caracter >= "A" And Caracter c=

F") Or (Caracter >= I1alf And Caracter c = fIflr) Then KeyAscii = Asc(UCase(Caracter)) cadena$ = cadena$ = Mid(AL.Text, 2, 1 ) AL.Text = cadena$ AL.Se1Start = 2

KeyAscii = O

m

Else

End If BanderaRegistro = True

d Sub

ivate Sub Anima Timero

d Sub

ivate Sub ax Chanqe 0 BanderaReqistro Then

Siguiente-Click

BanderaRegistro = False

I f Len (ax.Text) < 4 Then While Len(ax.Text) < 4

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

End If If Len(ax.Text) > 4 Then ax.Text = Right(ax.Text, 4 ) AH.Text = Left(ax.Text, 2 ) AL.Text = Riqht(ax.Text, 2) BanderaRegistro = True

d I f

.a Sub

-ivate Sub ax KeyPress(KeyAscii As Integer) BanderaReqistro = False ValldaHexadecimal KeyAscii, ax BanderaRegistro = True

td Sub

-ivate Sub BH Chanqe 0 )x.Text = SH.Text + BL.Text ! BanderaReqistro Then

BanderaRegistro = False

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

BH.Text = I f O " + BH. Text

Page 98: Ciencias Basicas e Ingenieria. Computación. Proyecto …148.206.53.84/tesiuami/UAM3894.pdfEl Intel 4004 es el primer microprocesador aparecido en el mercado y miembro de la familia

rml - 13

Wend End If If Len(BH.Text) > 2 Then BH.Text = Right(BH.Texc, 2) bx.Text = BH.Text + BL.Text BanderaRegistro = True

d If

d Sub

ivate Sub BH KeyPress(KeyAscii As Integer) Caracter = Chr(KeyAscii) If (Caracter >= l 1 O l 1 And Caracter <= 1 1 9 1 1 ) Or (Caracter >= "A" And Caracter <

I1F1l) Or (Caracter >= llall And Caracter <= I1fT1) Then 1 KeyAscii = Asc(UCase(Caracter))

I cadena$ = Mid (BH.Text I 2 I 1) 1 cadena$ = 1 1 1 1

I BH.Text = cadena$ I BH.SelStart = 1

I Else S

I KeyAscii = O 'End If

Caracter = Chr(KeyAscii1 If (Caracter >= l r O 1 l And Caracter <= I1g1l) Or (Caracter >= "AI1 And Caracter e=

nderaReqistro = False

F") Or (Caracter >= IIa1I And Caracter <= I1f1l) Then KeyAscii = Asc (Ucase (Caracter) ) cadena$ = 1 1 1 1

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

KeyAscii = O Else

End If BanderaRegistro = True

d Sub

ivate Sub BL Chanqe 0 x.Text = BH.Text + BL.Text BanderaRegistro Then

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

Wend BL.Text = 11011 + BL.Text

End I f I f Len(BL.Text) > 2 Then BL.Text = Right(BL.Text, 2) BanderaReqistro = False bx.Text = BH.Text + BL.Text BanderaRegistro = True

id I f Id Sub

.ivate Sub BL KeyPress(KeyAscii As Integer) Caracter = Chr(KeyAscii1 I f (Caracter >= " 0 " And Caraccer c = I1g1 l ! Or (Caracter >= I1A1I And C z r " '-3:: <=

F" ) Or (Caracter >= And Caracter <= I 1 f T 1 ) Then KeyAscii = Asc (Ucase (Caracter) ) cadena$ = I 1 I 1

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

Page 99: Ciencias Basicas e Ingenieria. Computación. Proyecto …148.206.53.84/tesiuami/UAM3894.pdfEl Intel 4004 es el primer microprocesador aparecido en el mercado y miembro de la familia

rml - 14

Else KeyAscii = O

End If

ivate Sub bp Chanqe ( )

d Sub bp.Text = ' I 1 ! Then bp.Text = 1 1 0 0 0 0 "

ivate Sub bp KeyPress(KeyAscii As Integer)

d Sub ValidaHexadecimal KeyAscii, bp

ivate Sub BusDatos ChanqeO If BusDatos.Text = Then BusDatos-Text = 11000011 If Len(BusDatos.Text) = 1 Then

End If If Len(BusDatos.Text) = 3 Then

End If

BusDatos. Text = 11011 + BusDatos .Text

BusDatos. Text = + BusDatos . Text Memoria (CLng ( I1&Htl + MAR. Text) ) = Val ( I1&h" + BusDatos

m

Text) Mod 256

d Sub

ivate Sub BusDatos KeyPress(KeyAscii As Integer) BanderaReqistro = False ValidaHexadecimal KeyAscii, BusDatos BanderaRegistro = True

ValidaHexadecimal KeyAscii, BusDatos d Sub

ivate Sub BusDirecciones ChanqeO

d Sub If BusDirecciones.Text = Then BusDirecciones.Text = 11000011

.ivate Sub BusDirecciones KeyPress(KeyAscii As Integer)

d Sub ValidaHexadecimal KeyAscii, BusDirecciones

ivate Sub bx Chanqe 0 H.Text = Left(bx.Text, 2 ) L.Text = Riqht (bx.Text, 2 ) BanderaReqistro Then BanderaRegistro = False

I f Len (bx. Text j < 4 Ther, While Len(bx.Textj < 4

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

BH.Text = Left(bx.Text, 2 ) BL.Text = Riqht(bx.Text, 2) BanderaRegistro = True

id If

Id Sub

rivate Sub bx KeyPress(KeyAscii As Integer)

Id Sub ValidaHexadecimal KeyAscii, bx

Page 100: Ciencias Basicas e Ingenieria. Computación. Proyecto …148.206.53.84/tesiuami/UAM3894.pdfEl Intel 4004 es el primer microprocesador aparecido en el mercado y miembro de la familia

rml - 15

ivate Sub CH - Change 0

cx.Text = CH.Text + CL.Text BanderaReqistro Then BanderaRegistro = False

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

CH.Text = I 1 O 1 l + CH.Text Wend

End If If Len(CH.Text) > 2 Then CH.Text = Right(CH.Text, 2) cx.Text = CH.Text + CL.Text BanderaRegistro = True

d If

d Sub

ivate Sub CH KeyPress(KeyAscii As Integer) Caracter = Chr(KeyAscii1 If (Caracter >= I 1 O " And Caracter c = I 1 9 l 1 ) Or (Caracter >=

I1FI1) Or (Caracter >= IIaII And Caracter <= l1fI1) Then 1 KeyAscii = Asc (Ucase (Caracter) )

1 cadena$ = Mid(CH.Text, 2, 1) 1 cadena$ = I f t 1

CH.Text = cadena$ CH.SelStart = 1

KeyAscii = O Else

End If

m

IIA" And Caracter c

:nd Sub

/ / I / / .nderaReqistro = False

Caracter = Chr (KeyAscii) If (Caracter >= I 1 O " And Caracter <= 1 1 9 1 1 ) Or (Caracter >= I1A" And Caracter e =

FII) Or (Caracter >= "a" And Caracter <= Then KeyAscii = Asc(UCase(Caracter)) cadena$ = cadena$ = Mid(CH.Text, 2, 1) CH.Text = cadena$ CH.SelStart = 2

KeyAscii = O Else

End If BanderaRegistro = True End Sub

:ivate Sub Check1 Click0 i Checkl.Value = O Then

intervalo.Enabled = False Label33.Caption = "Intervalo " tiempo desactivado"

-se "

intervalo.Enabled = True Label33.Caption = "Intervalo tiempo activadoll

id I f id Sub

:ivate Sub CL Chanqe ( ) :x.Text = CH.Text + CL.Text BanderaRegistro Then

- -

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

Page 101: Ciencias Basicas e Ingenieria. Computación. Proyecto …148.206.53.84/tesiuami/UAM3894.pdfEl Intel 4004 es el primer microprocesador aparecido en el mercado y miembro de la familia

rml - 16

CL.Text = 110" + CL.Text Wend

End If If Len(CL.Text) > 2 Then CL.Text = Right(CL.Text, 2) BanderaReqistro = False cx.Text = CH.Text + CL.Text BanderaRegistro = True

3 Sub

ivate Sub CL KeyPress(KeyAscii As Integer) Caracter = Chr(KeyAscii) If (Caracter >= l l O 1 f And Caracter e= f 1 9 1 1 ) Or (Caracter >= I1AI1 And Caracter <=

F " ) Or (Caracter >= And Caracter e= llffl) Then KeyAscii = Asc (Ucase (Caracter) ) cadena$ = cadena$ = Mid(CL.Text, 2, 1) CL.Text = cadena$ CL.SelStart = 2

Else KeyAscii = O

End If m

ivate Sub ComandoAnima Click0 If Anima.Enabled Then

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

Anima.Enabled = True Siquiente.Enabled = False ComandoAnima.Caption = "&Parar"

Else

End If d Sub

ivate Sub ComandoAnima MouseMove(Button As Integer, Shift As Integer, X As Sin e, Y As Sinqle) Muestra mensaje en la parte inferior de la pantalla el mensaje" udarapida.Caption = "Ejecuta el proqrama residente en memoria, continuamente a elocidad determinada por el intervalo" d Sub

-

ivate Sub Command1 Click0 icializa Registros- m i r i = 1024 To 65535 Step 1 rncriaii) = CLng("&h" + I l O O l l )

xt i .d Sub

-

Muestra mensaje en la parte inferior de la pantalla el mensaje" 7udarapida.Caption = "Resetea el IP y los registros para empezar una nue'ia ejec :ión" td Sub

*ivate Sub Command2 Click 0 :sensamblador.Show 1 td Sub

Page 102: Ciencias Basicas e Ingenieria. Computación. Proyecto …148.206.53.84/tesiuami/UAM3894.pdfEl Intel 4004 es el primer microprocesador aparecido en el mercado y miembro de la familia

rml - 17

Muestra mensaje en la parte inferior de la pantalla el mensaje" .udarapida.Caption = "Muestra el código en lenguaje ensamblador" d Sub

ivate Sub Command3 Click0 aux$ = MemoriaFisica(SegmentoDump.Text, Desp1azamientoDump.Text) While Len(aux$) c 5

Wend aux$ = I1&HI1 + aux$ Memoria(CLnq(aux$) ) = Val (ll&H1l + NuevoValor.Text) Dump.Refresh Ha z Dump Dump.Refresh

aux$ = l 1 O " + aux$

d Sub

,ivate Sub Command3 MouseMove(Button As Integer, Shift As Integer, X As Single,

udarapida.Caption = "Este botón nos permite introducir un valor nuevo en l a me ria" .d Sub

As Sinqle) -

S

ivate Sub cs Chanqe 0 f cs.Text = I1I1 Then cs.Text = 1 1 0 0 0 0 1 ' d Sub

.ivate Sub cs KeyPress(KeyAscii As Integer) ValidaHexadecimal KeyAscii, cs cs.Text c > 11000011 Then MsqBox (Codigosdeerror ( 0 ) )

.d I f

.d Sub

,ivate Sub cx Chanqe ( ) IH.Text = Left (cx.Text, 2) 'L.Text = Right(cx.Text, 2 )

BanderaReqistro Then BanderaRegistro = False

I f Len (cx.Text) < 4 Then While Len (cx.Text) < 4

Wend cx. Text = 11011 + cx. Text

End I f

If Len(cx.Text) > 4 Then cx.Text = Right(cx.Text, 4 ) CH.Text = Left(cx.Text, 23 CL.Text = Riqht (cx.Text , 2) BanderaRegistro = True

id If

id Sub

rivate Sub cx KeyPress(KeyAscii As Integer)

Id Sub ValidaHexadecimal KeyAscii, cx

rivate Sub DE Change ( ) :scad = DE.Text Id Sub

rivate Sub DesplazarnientoDurnp - Change0

Page 103: Ciencias Basicas e Ingenieria. Computación. Proyecto …148.206.53.84/tesiuami/UAM3894.pdfEl Intel 4004 es el primer microprocesador aparecido en el mercado y miembro de la familia

rml - 18

HazDump

aux$ = MemoriaFisica(SegmentoDump.Text, DesplazamientoDump.Text) While Len(aux$) c 5

Wend aux$ = &HI1 + aux$ NuevoVa1or.Text = Hex(Memoria(CLng(aux$) Mod 1024) ) While Len(NuevoValor.Text) < 2

Wend

aux$ = I 1 O " + aux$

NuevoValor . Text = O I I + NuevoValor. Text

mp.Refresh d Sub

ivate Sub DesplazamientoDump KeyPress(KeyAscii As Integer)

d Sub ValidaHexadecimal KeyAscii, DesplazamientoDump

ivate Sub DH Chanqe 0 .x.Text = DH.Text + DL.Text BanderaReqistro Then BanderaRegistro = False

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

Wend DH.Text = + DH.Text

End If If Len(DH.Text) > 2 Then DH.Text = Right (DH.Text, 2) dx.Text = DH.Text + DL.Text BanderaRegistro = True

.d If

.d Sub

.ivate Sub DH KeyPress(KeyAscii As Integer) Caracter = Chr (KeyAscii) If (Caracter =.= 1 1 O 1 ! And Caracter c = t 1 9 1 1 ) Or (Caracter >= "A" And Caracter <

IIFIl) Or (Caracter >= IIaII And Caracter <= I 1 f l f ) Then I KeyAscii = Asc (Ucase (Caracter) )

I cadena$ = Mid(DH.Text , 2, 1) 1 cadena$ =

I DH.Text = cadena$ I DH.Se1Start = 1

I Else

1 End If I KeyAscii = O

LnderaReqistro = False Caracter = Chr(KeyAscii) I f (Caracter >= " 0 " And Caracter c = ' ' 9 " ) Or (Caracter >= "A" And Caracter <= Or (Caracter >= rlall And Caracter c = I l f l I ) Then KeyAscll = Asc (Ucase (Caracter-) cadena$ = cadena$ = Mid (DH. Text, 2 , 1) DH.Text = cadenas DH.SelStart = 2

KeyAscii = O Else

End I f BanderaRegistro = True

Page 104: Ciencias Basicas e Ingenieria. Computación. Proyecto …148.206.53.84/tesiuami/UAM3894.pdfEl Intel 4004 es el primer microprocesador aparecido en el mercado y miembro de la familia

rml - 19

ivate Sub di Chanqe ( )

d Sub di. Text = Then di. Text = "0000"

ivate Sub di KeyPress(.KeyAscii As Integer)

d Sub ValidaHexadecimal KeyAscii, di

ivate Sub DL Chanqe 0 x.Text = DH.Text + DL.Text BanderaRegistro Then

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

Wend . DL.Text = I r O l 1 + DL. Text

End If If Len (DL. Text) > 2 Then DL. Text = Right (DL BanderaReqistro = False dx.Text = DH.Text + DL.Text BanderaRegistro = True

.d If

Text, 2 )

.d Sub

,ivate Sub DL KeyPress(KeyAscii As Integer) Caracter = Chr(KeyAscii) If (Caracter >= t l O 1 f And Caracter e= l19l1) Or (Caracter >= "A" And Caracter <=

F") Or (Caracter >= rfaII And Caracter <= Then KeyAscii = Asc(UCase(Caracter)) cadena$ = cadena$ = Mid (DL. Text , 2 , 1) DL.Text = cadena$ DL.SelStart = 2

KeyAscii = O Else

End If

td Sub

.ivate Sub ds Chanqe 0 f ds.Text = I f f I Then ds.Text = "0000" td Sub

-Ivate Sub ds KeyPress(KeyAscii As Integer) ValidaHexadecimal KeyAscii, ds If cs.Text <> 1 1 0 4 0 0 t 1 Then

MsqBox (Codigosdeerror (1 1 j Id I f

:.i v h t z %;b Gx Chanqe i )H.Text = Left(dx.Text, 2 ) )L.Text = Right (dx.Text, 2 )

I BanderaReqistro Then BanderaRegistro = False

I f Len(dx.Text) < 4 Then While Len (dx.Text) < 4

Wend dx.Text = 11011 + dx. Text

End If If Len(dx.Text) > 4 Then dx.Text = Right(dx.Text, 4 )

Page 105: Ciencias Basicas e Ingenieria. Computación. Proyecto …148.206.53.84/tesiuami/UAM3894.pdfEl Intel 4004 es el primer microprocesador aparecido en el mercado y miembro de la familia

rml - 20

DH.Text = Left(dx.Text, 2) DL.Text = Riqht(dx.Text, 2) BanderaRegistro = True

3 If

3 Sub

ivate Sub dx KeyPress(KeyAscii As Integer)

d Sub ValidaHexadecimal KeyAscii, dx

ivate Sub Eproml MouseMove(Button As Integer, Shift As Integer, X As Single, Y S Sinqle) udarapida.Caption = "Segmento de memoria EPROM, 64KB" d Sub

-

ivate Sub es Chanqe O f es.Text = Then es.Text = " 0 0 0 0 1 1

d Sub

ivate Sub es KeyPress(KeyAscii As Integer) ValidaHexadecimal KeyAscii, es If cs.Text c > 'lOCOO" Then

MsqBox (Codigosdeerror(3)) d If d Sub

ivate Sub fin Click ( ) load Me reccionEditar1 = Descod d Sub

-

ivate Sub Fin MouseMove(Button As Integer, Shift As Integer, X As Single, Y As inqle) Muestra mensaje en la parte inferior de la pantalla el mensaje" udarapida.Caption = "Regresa ala pantalla de edición y componentes electronic0

.d Sub

-

.ivate Sub Form Load0 !Dim Eprom (1) , RAM (1) 'defino mi memoria RAM y ROM

DireccionDump = O 'Dump en cero HazDump 'Creamos el dump Eprom(1) .Inicio = &HFE000 'Inicializamod Emprom Eprom (1) . Fin = &HFFFFF RAM(1) . Inicio = O 'Inicializamod Ram RAM(1) .Fin = 65535

NumEprom = 1 NumRam = 1

'Idicamos que solo hay 1 Eprom y 1 RAM

Inicializa Reqist.ros

LeeDatosOperacion 'Cargar la tabla de l o s mnemonicos BanderaReqistro = True

'Estado inicial d e l Fetch

DE = Descod

Id Sub

lblic Function MemoriaFisica$(Sesmento$, Offset$) If Seqmento$ ' = '"I Then Seq-mento$ = ' ' 0 0 0 0 1 1 If Offset$ = " ' I Then Offset$ = " 0 0 0 0 " Auxl$ = "&H" + SeqmentoS aux2$ = 'I &HI' + Offset$

Page 106: Ciencias Basicas e Ingenieria. Computación. Proyecto …148.206.53.84/tesiuami/UAM3894.pdfEl Intel 4004 es el primer microprocesador aparecido en el mercado y miembro de la familia

rml - 21

MemorjaFisica$ = Hex$ (CLng(Auxl$) * 16 + CLng(aux2S) ) d Func t lon

blic Sub IncrementaIP(i As Integer)

If ip.Text = Then ip.Text = 11000011 Dim Auxl As Lonq aux$ = s & H " + ip .Text Auxl = CLnq (aux$) Auxl = Auxl + i ip . Text = BinHex (Auxl)

d Sub

ivate Sub Form MouseMove(Button As Integer, Shift As Integer, X As Single, Y A Sinqle) udarapida.Caption = "Simulador del sistema 8 0 8 8 " m

d Sub

-

ivate Sub Frame1 MouseMove(Button As Integer, Shift As Integer, X As Single, Y S Sinqle) udarapida.Caption = "Segmento de memoria asiganada para otros dispositivos" d Sub

-

ivate Sub Guardar Click0 Dim Direccion As Lonq Dim Tamaño As Inteqer On Error GoTo Finalizar AbrirMemoria.Flaq-s = &H806& AbrirMemoria.DialoqTitle = "Guardar memoria" AbrirMemoria.ShowSave

Open AbrirMemoria.filename For Output As 1 Direccion = O Do

Direccion = ObtenDireccionNoCero(I2ireccion) I f Direccion >= 1023 Then Exit Do Print #1, Direccion aux& = Direccion Tamaño = ObtenTamaño (aux&) Print #1, Tamaño For i = 1 To Tamaño

Next i Direccion = Direccion + Tamaño

Print #1, Memoria(Direccion + i - 1)

Loop Until Direccion >= 1023 Close 1

.naiizar :

ld Sub

:ivate Sub intervalo ChanqeO lima.Interva1 = Val(intervalo.Text) id Sub

rivate Sub ip Chanqe O Jhile Len (ip.Text) < 4 .p.Text = I r O " + ip.Text Tend Id Sub

Page 107: Ciencias Basicas e Ingenieria. Computación. Proyecto …148.206.53.84/tesiuami/UAM3894.pdfEl Intel 4004 es el primer microprocesador aparecido en el mercado y miembro de la familia

rml - 22

ivate Sub ip KeyPress(KeyAscii As Integer)

3 Sub ValidaHexadecimal KeyAscii, ip

ivate Sub labell MouseMove(Button As Integer, Shift As Integer, X As Single, Y S Sinqle) udarapida.Caption = "Reqistro Acumulador de 16 bits ó 2 bytes conserva el res tad0 temporal despues de realizar operaciones"

d Sub

-

ivate Sub Label10 Click0 qmentoDump.Text = ss.Text evoVa1or.Text = t r O O 1 t d Sub

ivate Sub Label10 MouseMove(Button As Integer, Shift As Integer, X As Single, As Sinqle) udarapida.Caption = "Reqistro de Segmento de Pila, Direcciona el inicio de la cción de memoria que es la pila" d Sub m

-

ivate Sub Labelll Click0 qmentoDump.Text = es.Text evovalor .Text = l t O O "

d Sub

ivate Sub Labelll MouseMove(Button As Integer, Shift As Integer, X As Single, As Sinqle) ,udarapida.Caption = "Registro de Segmento Extra, lo utilizan algunas instrucio S para cadenas" .d Sub

-

.d Sub

.ivate Sub Label13 MouseMove(Button As Integer, Shift As Integer, X As Single, As Sinqle) 7udarapida.Caption = "Reqistro Apuntador de Instruciones, dirreciona siempre aq !lla instrución a ejecutar" Id Sub

-

rivate Sub Label14 MouseMove(Button As Integer, Shift As Integer, X As Single, As Sinqle) rudarapida. Caption = "El bus :a Id Sub

-

rivate Sub Label15 MouseMove As Sinqle) rudarapida. Caption = "El bus I la memoria" Id Sub

-

rivate Sub Label16 MouseMove As Single) -

de dirreciones suministra una dirrecion en la memo

Button As Integer, Shift As Integer, X A s Single,

de datos transfiere estos entre el microprocesador

Button As Integer, Shift As Integer, X As S ~ ~ g l e ,

Page 108: Ciencias Basicas e Ingenieria. Computación. Proyecto …148.206.53.84/tesiuami/UAM3894.pdfEl Intel 4004 es el primer microprocesador aparecido en el mercado y miembro de la familia

rml - 23

udarapida.Caption = "Este campo nos permite trasladarnos al desplazamiento ind ado, dentro del segmento asignado" d Sub

udarapida.Caption = "Este campo permite cambiar el segmento, que esta asignado or default"

d Sub

ivate Sub Label18 MouseMove(Button As Integer, Shift As Integer, X As Single, As Sinsle) -

udarapida.Caption = "El DUMP es un zoom que se realiza sobre la memoria en el gmento asignado"

d Sub

ivate Sub Label19 MouseMove(Button As Integer, Shift As Integer, X As Single, As Sinqle) udarapida.Caption = "Registro de datos de un byte, es de uso general"

d Sub

- m

ivate Sub Label2 MouseMove(Button As Integer, Shift As Integer, X As Single, Y S Sinqle) udarapida.Caption = "Reqistro Base de 2 bytes, a menudo conserva el desplazami to de los datos que hay en memoria"

d Sub

-

ivate Sub Label20 MouseMove(Button As Integer, Shift As Integer, X As Single, As Sinqle) udarapida.Caption = "Registro Contador de un byte, contiene el conteo de varia instruciones"

-

d Sub

ivate Sub Label21 MouseMove(Button As Integer, Shift As Integer, X As Single, As Sinqle) udarapida.Caption = "Reqistro Base de un byte, a menudo conserva el desplazami to de los datos que hay en memoria"

d Sub

-

,ivate Sub Label22 MouseMove(Button As Integer, Shift As Integer, X As Single, As Sinqle) udarapida.Caption = "Reqistro Acumulador de 8 bits 6 un byte conserva el resu ado temporal despues de realizar operaciones"

.d Sub

-

-ivate Sub Label24 MouseMove(Button As Integer, Shift As Integer, X As . . ::e, As Single) -

Page 109: Ciencias Basicas e Ingenieria. Computación. Proyecto …148.206.53.84/tesiuami/UAM3894.pdfEl Intel 4004 es el primer microprocesador aparecido en el mercado y miembro de la familia

rml - 24

udarapida.Caption = "Registro Contador de un byte, contiene el conteo de varia instruciones"

d Sub

ivate Sub Label25 - MouseMove(Button As Integer, Shift As Integer, X As Single, As Sinqle) udarapida.Caption = "Reqistro Base de un byte, a menudo conserva el desplazami to de los datos que hay en memoria"

d Sub

ivate Sub Label26 MouseMove(Button As Integer, Shift As Integer, X As Single, As Sinqle) udarapida.Caption = IIReqistro Acumulador de 8 bits ó un byte conserva el resu ado temporal. despues de realizar operaciones"

d Sub

-

ivate Sub Label27 MouseMove(Button As Integer, Shift As Integer, X As Single,- As Sinqle) udarapida.Caption = "Dirreción final del la memoria RAM" d Sub

-

ivate Sub Label29 MouseMove(Button As Integer, Shift A s Integer, X As Single, As Sinqle) udarapida.Caption = "Segmento de datos, dirrección inicial y dirreción final" d Sub

-

'ivate Sub Label3 - MouseMove(Button As Integer, Shift As Integer, X As Single, Y .S Sinqle) .udarapida.Caption = "Registro Contador de 2 bytes, contiene el conteo de varia instruciones"

d Sub

.ivate Sub Label30 MouseMove(Button As Integer, Shift As Integer, X As Single, As Sinqle) wdarapida.Caption = "Segmento de pila, dirreción inicial, y dirreción final"

-

id Sllb

.-ivate Sub Label33 MouseMove(Button As Integer, Shift As Integer, X As Slnule, As Sinqle) 7udarapida.Caption = "Activa 13 opción Intervalo" id Sub

-

:ivate Sub Label34 MouseMove(J3utton As Integer, Shift As Integer, X A:- As Single)

. a - - I

Page 110: Ciencias Basicas e Ingenieria. Computación. Proyecto …148.206.53.84/tesiuami/UAM3894.pdfEl Intel 4004 es el primer microprocesador aparecido en el mercado y miembro de la familia

rml - 25

udarapida.Caption = "Es el intervalo para la velocidad de ejecución, Rango 1 9000 ( Recomendado 1 0 0 0 ) 1 1 d Sub

ivate Sub Label35 MouseMove(Button As Integer, Shift As Integer, X As Single, As Sinqle) udarapida.Caption = "Segmento extra, dirreción inicial y dirreción final" d Sub

-

ivate Sub Label4 MouseMove(Button As Integer, Shift As Integer, X As Single, Y S Sinqle) udarapida.Caption = llRegistro de datos de 2 bytes, es de uso general" d Sub

-

ivate Sub Label5 MouseMove(Button As Integer, Shift As Integer, X As Single, Y S Sinqle) udarapida.Caption = llRegistro Indice de fuente; dirreciona datos fuente de cad as o arreglosr1

d Sub

-

ivate Sub Label6 MouseMove(Button As Integer, Shift As Integer, X As Single, Y S Sinqle) udarapida.Caption = "Registro Indice de Destino, dirreciona datos destino en f ma indirecta"

-

d Sub

ivate Sub Label7 MouseMove(Button As Integer, Shift As Integer, X As Single, Y S Sinqle) udarapida.Caption = "Reqistro Apuntador de Base, apuntador de uso general que rreciona a una matriz de datos en la pila"

d Sub

-

ivate Sub Label8 Click0 qmentoDump.Text = cs.Text evovalor. Text = O O d Sub

ivate Sub Label8 ~ MouseMove(Button As Integer, Shift As Integer, X As Single, Y

de la' memoria que tiene .el código" .d Sub

*ivate Sub Label9 Click0 :qmentoDump.Text = ds.Text :evcjVa;or.Te;ct = " G O : ' td Sub

*ivate Sub Label9 - MouseMove(Button As Integer, Shift As Integer, X As Sir ,q le , Y is Sinqle) rudarapida.Caption = "Reqistro de Seqmento de Datos,define la dirección lniciai le la sección de memoria que tiene los datos"

td Sub

:ivate Sub MAR Change 0 Dim aux As Long

Page 111: Ciencias Basicas e Ingenieria. Computación. Proyecto …148.206.53.84/tesiuami/UAM3894.pdfEl Intel 4004 es el primer microprocesador aparecido en el mercado y miembro de la familia

rml - 26

Iaux = Memoria(CLnq(I1&H1l + MAR.Text) Mod 1048576) BusDatos.Text = BinHex(aux)

d Sub

ivate.Sub NuevoValor KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then

Desp1azamientoDump.Text = BinHex$((CLng('l&hIl + Desp1azamientoDump.Text) While Len(Desp1azamientoDump.Text) e 4

1) Mod 65536)

DesplazamientoDump.Text. = 11011 + Desp1azamientoDump.Text Wend KeyAscii = O NuevoValor.Se1Start = 2

Caracter = Chr (KeyAscii) If (Caracter >= 11011 And Caracter e= I19l1) Or (Caracter >= I1A1l And Caracte

Else

e= I r F 1 I ) Or (Caracter >= I1aI1 And Caracter e= l 1 f l 1 ) Then KeyAscii = Asc (Ucase (Caracter) ) cadena$ = cadena$ = Mid(NuevoValor.Text, 2, 1) NuevoValor.Text = cadena$ NuevoValor.Se1Start = 2

KeyAscii = O Else

End If End If

.d Sub

.ivate Sub NuevoValor LinkError(LinkErr As Integer) id Sub -

-ivate Sub ProqressBarl MouseDown(Button As Integer, Shift A s Integer, X As Sin .e, Y As Single)

td Sub

-

:ivate Sub Salir Click 0 JireccionEditarl = Descod :load Me td Sub

:ivate Sub SeqmentoDump Change0 NuevoValor . Text = 'I 11

HazDump aux$ = MemoriaFisica(SegmentoDump.Text, Desp1azamientoDump.Text) While Len (aux$) c 5

Wend aux$ = ' I &HI1 + aux$ NuevoValor .Text = Hex (Melnoria (CLng (aux$) Mod 1024) ) While Len(NuevoVa1or.Text) c 2

Wend Dump.Refresh

aux$ = 11011 + aux$

NuevoValor . Text = I ' O + NuevoValor . Text

Id Sub

rivate Sub SeqmentoDump KeyPress(KeyAscii As Integer)

Id Sub ValidaHexadecimal KeyAscii, SegmentoDump

rivate Sub si Chanqe ( ) E si.Text = 1 1 1 1 Then si.Text = ' 1 0 0 0 0 1 1 Id Sub

rivate Sub si KeyPress(KeyAscii As Integer) ValidaHexadecimal KeyAscii, si

Page 112: Ciencias Basicas e Ingenieria. Computación. Proyecto …148.206.53.84/tesiuami/UAM3894.pdfEl Intel 4004 es el primer microprocesador aparecido en el mercado y miembro de la familia

lrml - 27

.d Sub

,%vate Sub Siquiente Click0 If Val(fl&h" + ip.Text) > Val("&h" + Riqht(Descod, 4)) Then

respuesta = MsqBox("Ejecuci6n Terminada, para volver a ejecutar el código Te

If respuesta = 1 Then e RESET , vbOKOnly, "Ejecución de Programas")

ComandoAnima - Click

End If

Select Case EstadoFetch Else

Case O BusDatos-Text = " 0 0 0 0 " BusDirecciones .Text = l l O O O O O 1 f LeeCodiqo Estado.Caption = "Leer el codigo de instrucciónll

Case 1 DecodificaCodiqo Estado.Caption = Operacion(Codigo0peracion) .mnemonic0

Case 2 E j ecutaCodiqo2 Estado.Caption = "Instrucción ejecutada" HazDumr,

I

End Select EstadoFetch = (EstadoFetch + 1) Mod 3

:d If td Sub

lblic Function EsribirBusDireccionesO Resultado = False If NumRam >= 1 Then

aux$ = II&HIt + BusDirecciones .Text For i = 1 To NumRam If (CLnq(aux$) >= RAM(i) .Inicio) And (CLng(aux$) e= RAM(i) .Fin) Then

Resultado = Resultado Or True End If Next i

End If

AnimaAnterior = Anima.Enabled : Not Resultado Then

Anima.Enab1ed = False MSQBOX dirección específica es inválida, se leyo basura") Anima.Enabled = AnimaAnterior

1d I f 2erBusDirecciones = Resultado Id Function lblic Function LeerBusDirecciones ( j

Resultado = False If NumEprom >= 1 Then

aux$ = ll&H1l + BusDirecciones.Text For i = 1 To NumEprom

If (CLng(aux$) >= Eprom(i) .Inicio) And (CLng(aux$) c= Eprom(i) .Fin) T m

Resultado = Resultado Or True End If Next i

End If If NumRam >= 1 Then

aux$ = I r&H" + BusDirecciones.Text

Page 113: Ciencias Basicas e Ingenieria. Computación. Proyecto …148.206.53.84/tesiuami/UAM3894.pdfEl Intel 4004 es el primer microprocesador aparecido en el mercado y miembro de la familia

sensamblador - 1

olic Sub PonCódigo(NumLinea As Integer, segini As Long) Linea = O Dim aux As Long indice = O Tamaño = 1

Operandol = False Desensamblador.ScaleMode = 4 Desensamblador.CurrentX = O Desensamblador.CurrentY = O While indice c 1024 And Linea c NumLinea

Texto = Operacion(Memoria(indice + segini)) .mnemonic0 While Mid(Texto, k, 1) c > 'I And k c Len(Texto)

Wend Texto = Mid(Texto, 1, k) + 'I

'I

If Operacion(Memoria(indice + seqini)) .ByteReql Then

k = l

k = k + l

Texto = Texto + Reqistros(Memoria(indice + segini + Tamaño)) Tamaño = Tamaño + 1 Operandol = True

End If If Operacion(Memoria(indice + seqini)).OffHi Then

If Operandol Then Texto = Texto + I' , Texto = Texto + [ I 1

aux = Memoria(indice + seqini + Tamaño) Texto = Texto + BinHex(aux) aux = Memoria(indice + seqini + Tamaño + 1) Texto = Texto + BinHex(aux1 Texto = Texto + ! I ] 'I

Tamaño = Tamaño + 2 End If If Operacion(Memoria(indice + seqini)).Dato8 Then

If Operandol Then Texto = Texto + aux = Memoria(indice + seqini + Tamaño) Texto = Texto + BinHex(aux) Tamaño = Tamaño + 1

End If If Operacion(Memoria(indice + seqini)).DatoHi Then

If Operandol Then Texto = Texto + 1 1 , 1 1

aux = Memoria(indice + seqini + Tamaño) Texto = Texto + BinHex(aux1 aux = Memoria(indice + seqini + Tamafio + 1) Texto = Texto + BinHex(aux) Tamaño = Tamaño + 2

Texto = Texto + Reqistros (Memoria (indice + segini + Tamaño) ) Tamaño = Tamaño + 1

End If If Operacion(Memoria(indice + seqini)) .ByteReq2 Then

End If Operandol = False If indice < BarraVertical.Value And Linea = O Then CambioAtras = Tamaño If indice >= BarraVertical.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

Wend Id Sub

:ivate Sub Barravertical-Change0 i banderacambios Then tnderacambios = False

Page 114: Ciencias Basicas e Ingenieria. Computación. Proyecto …148.206.53.84/tesiuami/UAM3894.pdfEl Intel 4004 es el primer microprocesador aparecido en el mercado y miembro de la familia

sensamblador - 2

UltimoValor = BarraVertical.Value - 1 Then BarraVertical.Value = UltimoValor + CambioAdelante

timovalor = BarraVertical.Va1ue seIf UltimoValor = BarraVertica1.Value + 1 Then

timovalor = BarraVertical.Va1ue se

.d I f :sensamblador.ScaleMode = 4 !sensamblador.ScaleWidth = Desensamblador.ScaleWidth :sensamblador.ScaleHeiqht = Desensamblador.Sca1eHeiqht :sensamblador.BarraVertical.Left = Desensamblador.Sca1eWidth - 2 :sensamblador.BarraVertical.Top = O !sensamblador.BarraVertical.Height = Desensamblador.ScaleHeight !sensamblador.Cls mCódiqo Desensamblador.ScaleHeight, SegDesensamblar mderaCambios- = True id I f Id Sub

BarraVertica1.Value = UltimoValor - CambioAtras

UltimoValor = BarraVertical.Va1ue

-ivate Sub Borrar Click0 .de Id Sub

-

-ivate Sub CambiarDireccion Click0 LX = InputBox ("Dirección de inicio para desensamblar", llCambio", Str (SegDesensa )lar) ) ;eqDesensamblar = CLnq (ll&h" + aux) IqDesensamblar = Val (ll&h" + aux) :sensamblador.Refresh td Sub

-ivate Sub Form - Load O LmbioAtras = 1 LnderaCambios = True Id Sub

:ivate Sub Form Paint O !sensamblador.ScaleMode = 4 :sensamblador.ScaleWidth = Desensamblador.ScaleWidth 3sensamblador.ScaleHeiqht = Desensamblador.Sca1eHeiqht .sensamblador.BarraVertical.Left = Desensamblador.Sca1eWidth - 2 :sensamblador.BarraVertical.Top = O ?sensamblador.BarraVertical.Height = Desensamblador.ScaleHeight :sensamblador.Cls mCódigo Desensamblador.ScaleHeight, SegDesensarnblar Id Sub

Page 115: Ciencias Basicas e Ingenieria. Computación. Proyecto …148.206.53.84/tesiuami/UAM3894.pdfEl Intel 4004 es el primer microprocesador aparecido en el mercado y miembro de la familia

storial - 1

b llamarhistorial(archivo As String)

en b$ For Input A s #1 = App. Path + l l \ l l + archivo

Loop tEXT2.Text = Texto$

.ose #1 id Sub

*ivate Sub Checkl Click 0 If Checkl.Value = 1 Then

tEXT2.BackColor = &HO& tEXT2.ForeColor = &HFFOO& Checkl. Caption = "Color Azul"

Else If Check1.Value = O Then tEXT2.BackColor = &HFF0000 tEXT2.ForeColor = &HFFFFOO Checkl. Caption = ltColor Ambar" End If

End If

Id Sub

rivate Sub Command3 - Click0 -de lload historial 1rm2. Show Id Sub

rivate Sub Form Load0 3XT2 .Visible = True ill llamarhistorial (113000.TXTll) Id Sub

lb SSTabl Click(PreviousTab As Integer) 3XT2 .Visible = False ZXT2 .Visible = True ldex = sstabl.Tab

:lect Case Index Case O

Case 1

Case 2

Case 3

Case 4

Case 5

Case 6

Case 7

Case 8

Call llamarhistorial ( " 3 0 0 0 .TXT")

Call llamarhistorial ("4004. txt")

Call llamarhistorial ("4040. txt")

Call llamarhistorial ("80G8. txt")

Call llamarhistorial ("8048. txt")

Call llamarhistorial ("8080. txt")

Call llamarhistorial ("8085. txt")

Call llamarhistorial ("8086. txt")

Call llamarhistorial ("80088. txt") Case 9 Call llamarhistorial ("80286. txt!')

Case 10

Page 116: Ciencias Basicas e Ingenieria. Computación. Proyecto …148.206.53.84/tesiuami/UAM3894.pdfEl Intel 4004 es el primer microprocesador aparecido en el mercado y miembro de la familia

storial - 2

Call llamarhistorial ( " 8 0 3 8 6 . txt")

Call llamarhistorial (Ilhisto. t x t " ) Case 11

d Select

d Sub

Page 117: Ciencias Basicas e Ingenieria. Computación. Proyecto …148.206.53.84/tesiuami/UAM3894.pdfEl Intel 4004 es el primer microprocesador aparecido en el mercado y miembro de la familia

rtada - 1

ivate Sub Toolbar2 - ButtonClick(ByVa1 Button As Button)

d Sub

ivate Sub Commandl-Click0 d Sub

ivate Sub Command2-Click0 d .d Sub

.ivate Sub Form Load0 Panell.Heiqht = 5535 Panell.Top = 720 Panell.Left = 720 Panell.Width = 8295 Panel3.Visible = False merl.Interva1 = 2000 .d Sub

,ivate Sub SSComm2andl Click0 .be16. Caption = "Alejandro Castillo Valdesll bel7.Caption = "Alejandro Briones Leal" be18 .Caption = "Alejandro Montejo Hernanadez" .d Sub

,ivate Sub SSCommandl Click0 .be16 .Caption = "Alejandro Castillo Valdes" .bel7.Caption = .be18 .Caption = IIAlejandro Briones" :Panel4. Caption = I l l1

Id Sub

.ivate Sub SSCommand2-Click0

.bel6.Caption =

.bel7.Caption = "Ing. Omar Maldonado Hernandez." !be18 .Caption = 1 1 1 1

;Panel4 .Caption =

Id Sub

*ivate Sub SSCommand3 Click ( 1 tbel7.Caption = IIEjecutando" )rm2. Show .de tload Portada Id Sub

Tivate Sub SSCommand4-Click0 -de Id Id Sub

rivate Sub Timer1 Timer 0 im contador As Inteqer lile contador e 4000 mtador = contador + 1

m

?nd 3Panell.Visible = False sPanel3.Visible = True

Id Sub

Page 118: Ciencias Basicas e Ingenieria. Computación. Proyecto …148.206.53.84/tesiuami/UAM3894.pdfEl Intel 4004 es el primer microprocesador aparecido en el mercado y miembro de la familia

rm2 - 1

ivate Sub ASB 8805 Click0 Este evento ejecuta los procedimientos necesarios para mostrar el grafico y la nformación 4 textual de cada componente fisico del sistema 8088, a llamada al segundo procedimiento se efectua pasando los argumentos al proced iento on l o s nombres de los archivos necesarios para cada componente

11 Coordenadas 11 Componentes - informacion("pic7 .bmp", "hm6264. txt") d Sub

ivate Sub ASB 8805 MouseMove(Button As Integer, Shift As Integer, X A s Single,

Muestra mensaje en la parte inferior de la pantalla el mensajev1 bel3.Caption = "Oprima sobre el componente un click, para información" d Sub

As Sinqle) - -

*

ivate Sub CambiaDireccionEdicionComando Click() eqmento$ = InputBox ( "Dame el segmento" ) hile Len(Seqmento$) e . 4

end qmento$ = 11000011 splazamiento$ = InputBox("Dame el desplazamiento")

Segmento$ = l l O v l + Segmento$

CLng (Il&h" + Desplazamiento$) e Val (1023) Then

.ile Len (Desplazamiento$) e 4

nd reccionEditar = CLnq(Il&H" + SeqmentoS) * 16 + CLnq("&HI1 + Desplazamiento$) reccionEditarl = Ucase (Segmento$ + : + Desplazamiento$) se spuesta = MsqBox("E1 desplazamiento esta fuera de rango ,ya que el segmento de ódiqo es de tamaño lk (1024) equivalente a 1 0 3 F F l l f ) .d If

.d Sub

Desplazamiento$ = 11011 + Desplazamiento$

,ivate Sub Commandl Click O :t Descod = DireccionEditarl jrml . Show 1 Id Sub

-ivate Sub Commandl MouseMove(Button As Integer, Shift As Integer, X As -

' As Sinqle) Muestra rr.enoaje en lz ?arte inferior de la pantalla el x,cnaaje" tbe13 .Caption = "Tecle de ejecución, llama al CPU interno" Id Sub

-

:ivate Sub Command2 Click 0 1formacion.Visible = False

id Sub

Yivate Sub Command3 Click0 Esta Sub Cierra la ventana de información de componentes fisicos SSPanell.Visible = False

Page 119: Ciencias Basicas e Ingenieria. Computación. Proyecto …148.206.53.84/tesiuami/UAM3894.pdfEl Intel 4004 es el primer microprocesador aparecido en el mercado y miembro de la familia

rm2 - 2

d Sub

ivate Sub DISPLAY MouseMove(Button As Integer, Shift As Integer, X As Single,

ivate Sub Ejecutar Click() scod = DireccionEditarl.Text lrml . Show 1 .d Sub

.ivate Sub Form Load ( 1 Nombre$ = App. Path + "\mnemonicos. 1st" i = O ReDim mnemonicos (10) ODen Nombre$ For Input As 1 Apertura del archivo microinstruciones.lst

i = i + l Wend MaximoCodigo = i Close 1

. . O

CodiqoOperacion = O DireccionEditar = &HO Se inicailiza la dirreccion inicial para editar un p

~ ~

)qrama For i = O To 15

Next i For i = 3 To 4

Next i DISPLAY.Text = mnemonicos(Codigo0peracion) Direccionamiento = 1

Tecla (i) .Enabled = False

Funcion(i) .Enabled = False

Registros(()) = I~ALII 1 Se inicializan el arreglos de registros del miCroPorc

Reqistros (1) = "AH1' Reqistros (2) = 'IBL" Reqistros (3 = I'BH" Reqistros (4) = ''CL" Reqistros (5) = ''CHI' Reqistros ( 6 ) = IIDL" Reqistros (7) = ''DH" Reqistros (8) = I I A X "

Reqistros ( 9 ) = ''BX" Reqistros (10) = "CX" Reqistros (11) = "DX" Reqistros (12) = " S I " Reqistros (13) = "DI" Reqistros (14) = "BPI' Reqistros (15) = ''SS" Reqistros (16) = ''ES" P.eqistrcs !17 ! = ' IDS"

:ador

Codiqosdeerror(0) = "El Seqmento de códiqo, esta definido en O000 H" Codiqosdeerror(1) = "El Seqmento de datos, esta definido en 0400 HI1 Codiqosdeerror(2) = "El Seqmento de pila, esta definodo en 0800 HI1 Codiqosdeerror(3) = "El Seqmento estra esta, definido en OCOO HI1 Codiqosdeerror(4) = "La división excede el tamaño de un registro de '? bits,f

Codiqosdeerror ( 5 ) = "libre" Codiqosdeerror (6) = "libre" Codiqosdeerror (7) = "libre" Codigosdeerror (8) = "libre"

vor de modificar los reqistros AX y el XL

Page 120: Ciencias Basicas e Ingenieria. Computación. Proyecto …148.206.53.84/tesiuami/UAM3894.pdfEl Intel 4004 es el primer microprocesador aparecido en el mercado y miembro de la familia

rm2 - 3

Codigosdeerror (9) = "libre"

ListaDireccionamiento (1) = "Inmediato" ' ListaDireccionamiento (2) = I1Reqistrot1 LeeDatosOperacion llamada a datos de operación Edicion = O SeqDesensamblar = O

d Sub

ivate Sub Frame1 - DragDrop(Source As Control, X As Single, Y As Single)

d Sub

ivate Sub Funcion Click(1ndex As Integer) Select Case Index

Case O 'TECLA DE BUSQUEDA DE CODIGO DE OPERACION 1 CodiqoOperacion = CodiqoOperacion + 1 If CodigoOperacion >= MaximoCodigo Then CodigoOperacion = MaximoCodi

DISPLAY-Text = Operacion(Codigo0peracion) .mnemonic0

'TECLA DE BUSQUEDA DE CODIGO DE OPERACION 2 If CodiqoOperacion > O Then

End If DISPLAY.Text = Operacion(Codigo0peracion) .mnemonic0

- 1

Case 1 *

CodigoOperacion = CodigoOperacion - 1

Case 2 ENTER Select Case Edicion

Case O If Operacion(CodigoOperacion).ByteRegl Then

Edicion = 1 Funcion(0) .Enabled = False Funcion(1) .Enabled = False Funcion(3) .Enabled = True Funcion(4) .Enabled = True If Operacion(Codiqo0peracion) .Dato8 Then

End If If Operacion(Codiqo0peracion) .DatoHi Then

End If DISPLAY.Text = Reqistros(ReqistroActua1)

ElseIf Operacion(CodigoOperacion).OffHi Then Edicion = 2 DISPLAY .Text = " 0 0 " Funcion(0) .Enabled = False Funcicn (1) .Enabled = False Fcr Temp = O To 15

Next Temp

If RegistroActual > 7 Then RegistroActual = 7

If RegistroActual < 8 Then RegistroActual = 8

Tecla (Temp) .Enabled = True

End If Memoria(Direcci0nEditar) = CodiqoOperacion DireccionEditar = DireccionEditar + 1 aux$ = Left (DireccionEditarl .Text, 5 ) Auxl$ = "&H1I + Riqht (DireccionEditarl .Text, 4) Auxl$ = TiDos.BinHex(CLng(Auxl$) + 1) While Len(Auxl$) < 4

Wend DireccionEditarl.Text = aux$ + Auxl$

If Operacion (CodigoOperacion) . ByteReg2 Then

Auxl$ = " 0 " + Auxl$

Case 1

Edicion = 4 If Operacion(Codiqo0peracion) .DatoHi Then

End If If RegistroActual < 8 Then RegistroActual

Page 121: Ciencias Basicas e Ingenieria. Computación. Proyecto …148.206.53.84/tesiuami/UAM3894.pdfEl Intel 4004 es el primer microprocesador aparecido en el mercado y miembro de la familia

lrm2 - 4

DISPLAY.Text = Reqistros(RegistroActua1) Funcion (O) .Enabled = False Funcion(1) .Enabled = False Funcion (3) .Enabled = True Funcion (4) .Enabled = True

Edicion = 5 DISPLAY.Text = " 0 0 " Funcion (3) .Enabled = False Funcion(4) .Enabled = False For Temp = O To 15

ElseIf Operacion(Codigo0peracion) .Dato8 Then

Tecla (Temp) .Enabled = True Next Temp

ElseIf Operacion(Codigo0peracion) .DatoHi Then Edicion = 6 DISPLAY.Text = ' ' 00 " Funcion(3) .Enabled = False Funcion (4) .Enabled = False For Temp = O To 15

Next Temp

Edicion = 8 DISPLAY.Text = 1100" Funcion (3) .Enabled = False Funcion(4) .Enabled = False For Temp = O To 15

Next Temp

Edicion = O DISPLAY.Text = Operacion(Codigo0peracion) .mnemonic0 For Temp = O To 15

Next Temp Funcion (O) .Enabled = True Funcion (1) .Enabled = True Funcion (3) .Enabled = False Funcion (4) .Enabled = False

Tecla (Temp) .Enabled = True

ElseIf Operacion(CodigoOperacion).OffHi Then

Tecla(Temp) .Enabled = True

Else

Tecla(Temp) .Enabled = False

End If Memoria(Direcci0nEditar) = ReqistroActual DireccionEditar = DireccionEditar + 1 aux$ = Left(DireccionEditarl.Text, 5 )

Auxl$ = Tipos.BinHex(CLng(Auxl$) + 1 ) While Len(Auxl$) c 4

Wend DireccionEditarl.Text = aux$ + Auxl$ Edicion = 3 Memoria (ZlireccionEditar) = CLnq("&h" + DISPLAY.Text)

Auxl$ = I ' &HI' + Riqht(DireccionEditarl.Text, 4)

Auxl$ = " 0 " + AuXl$

Case 2

Direcciontiditar = DireczionEditar + 1 auxS = Left (DireccionEditarl .Text, 5) AuxiS = ll&H1l + Riqht (DireccionEditarl.Text, 4 ) AuxiS = Tipos.BinHex(CLng(Auxl$) + 1) Wrlile LeniAuxlS) < 4

Wend DireccionEditar1.Text = aux$ + Auxl$ DISPLAY.Text = IrOO"

If ODeracion íCodigoOperacion) .ByteReg2 Then

Aux~$ = "O" + Auxl$

Case 3

Edicion = 4 If OperacioniCodiqoOperacion) .DatoHi Then

End If For Temp = O To 15

I f RegistroActual < 8 Then RegistroActual

Tecla(Temp).Enabled = False

Page 122: Ciencias Basicas e Ingenieria. Computación. Proyecto …148.206.53.84/tesiuami/UAM3894.pdfEl Intel 4004 es el primer microprocesador aparecido en el mercado y miembro de la familia

rm2 - 5

Next Temp Funcion (3) .Enabled = True Funcion (4) . Enabled = True

DISPLAY.Text = Registros(RegistroActua1)

Edicion = O

DISPLAY.Text = Operacion(Codigo0peracion) .mnemonic0 For Temp = O To 15

Next Temp Funcion (O) .Enabled = True Funcion (1) .Enabled = True Funcion (3) .Enabled = False Funcion (4) .Enabled = False

Memoria (DireccionEditar) = CLnq(I1&h1l + DISPLAY.Text) Else

Memoria (DireccionEditar) = CLnq (ll&hl' + DISPLAY .Text)

Tecla(Temp) .Enabled = False

End I f DireccionEditar = DireccionEditar + 1 aux$ = Left(DireccionEditarl.Text, 5) Auxl$ = I1&H1I + Riqht (DireccionEditarl.Text, 4 ) Auxl$ = Tipos.BinHex(CLng(Auxl$) + 1) While Len(Auxl$) c 4

Auxl$ = " 0 " + Auxl$ Wend DireccionEditarl.Text = aux$ + Auxl$

Case 4 Edicion = O DISPLAY.Text = Operacion(Codigo0peracion) .mnemonic0 For Temp = O To 15

Next Temp Funcion (O) .Enabled = True Funcion (1) . Enabled = True Funcion (3) .Enabled = False Funcion (4) .Enabled = False

Tecla (Temp) .Enabled = False

Memoria(Direcdi0nEditar) = ReqistroActual DireccionEditar = DireccionEditar + 1 aux$ = Left(DireccionEditarl.Text, 5) Auxl$ = "&HI1 + Riqht (DireccionEditarl.Text, 4) Auxl$ = Tipos .BinHex (CLng (Auxl$) + 1) While Len(Auxl$) c 4

Wend DireccionEditarl.Text = aux$ + Auxl$

Case 5, 7, 9

AUXl$ = " 0 'I + Auxl$

Edicion = O For Temp = O To 15

Next Temp Funcion (O) .Enabled = True Funcion (1) . Enabled = True FLlncion (3) .Enabled = False Funclon (4) . Enabled = False

Tecla(Temp) .Enabled = False

Memoria (DireccionEditar) = CLnq ("&h" + DISPLAY .Text) DireccionEditar = DireccionEditar + 1 aux$ = Left (DireccionEditarl.Text, 5 ) Auxl$ = l1&HT1 + Riqht (DlrecclonEditarl .'Text , 4) Auxl$ = Tipos.BinHex(CLng(Auxl$) + 1) While Len(Auxl$) < 4

Wend DireccionEditarl.Text = aux$ + Auxl$ DISPLAY.Text = Operacion(Codigo0peracion) .mnemonic,-.

Edicion = 7 Memoria (DireccionEditar) = CLng(l1&hI1 + DISPLAY .Tex: DISPLAY.Text = I 1 O O 1 ' DireccionEditar = DireccionEditar + 1 aux$ = Left(DireccionEditarl.Text, 5 )

Auxl$ = " 0 " + Auxl$

Case S

Page 123: Ciencias Basicas e Ingenieria. Computación. Proyecto …148.206.53.84/tesiuami/UAM3894.pdfEl Intel 4004 es el primer microprocesador aparecido en el mercado y miembro de la familia

rm2 - 6

AuxlS = lf&H1l + Riqht (DireccionEditarl .Text, 4) ALxl$ = Tipos .BinHex (CLng (Auxl$) + 1) While Len(Auxl$) < 4

Wend DireccionEditarl.Text = aux$ + Auxl$ Edicion = 9 Memoria (DireccionEditar) = CLng(ll&hll + DISPLAY.Text) DISPLAY.Text = 1 1 0 0 " DireccionEditar = DireccionEditar + 1 aux$ = Left(DireccionEditarl.Text, 5) Auxl$ = rl&HT1 + Riqht (DireccionEditarl.Text, 4) Auxl$ = Tipos.BinHex(CLng(Auxl$) + 1) While Len(Auxl$) c 4

Auxl$ = " 0 " + Auxl$

Case 8

AUxl$ = " 0 " + Auxl$ Wend DireccionEditarl.Text = aux$ + Auxl$

End Select

ReqistroActual = ReqistroActual + 1 If ReqistroActual > 18 Then ReqistroActual = 18 If Operacion(Codiqo0peracion) .Dato8 Then

End If If Operacion(Codiqo0peracion) .DatoHi Then

End If DISPLAY.Text = Registros(RegistroActua1)

If ReqistroActual > O Then ReqistroActual = RegistroActual If Operacion(CodiqoOperacion).Dato8 Then

End If If Operacion(Codiqo0peracion) .DatoHi Then

Case 3

If RegistroActual > 7 Then RegistroActual = 7

If RegistroActual e 8 Then RegistroActual = 8

Case 4

If RegistroActual > 7 Then RegistroActual = 7

If RegistroActual < 8 Then RegistroActual = 8

- 1

End If ~ 1 s p ~ ~ y . T e x t = Registros(RegistroActua1)

End Select .d Sub

.ivate Sub Funcion MouseMove(1ndex As Integer, Button As Integer, Shift As Inte Ir, X As Sinqle, Y As Sinqle) Muestra mensaje en l a parte inferior de la pantalla el mensaje" .be13. Caption = "Teclas de edición" .d Sub

-ivate Sub Histoarial - Click0 .storial. Show id Sub

-nf ormación

Ja llamada al segundo procedimiento se efectua pasando los argumentos al proced textual de cada componente fisico del sistema 8088,

niento :on los nGmbres de los archivos necesarios para cada componente

111 Coordenadas 111 Componentes - informacion("pic9 .bmp", "8088 .txt")

Id Sub

rivate Sub Intel D80314H MouseMove(Button As Integer, Shift As Integer, Y As Si gle, Y As Single) -

Page 124: Ciencias Basicas e Ingenieria. Computación. Proyecto …148.206.53.84/tesiuami/UAM3894.pdfEl Intel 4004 es el primer microprocesador aparecido en el mercado y miembro de la familia

lrm2 - 7

Muestra mensaje en la parte inferior de la pantalla el mensaje" bel3.Caption = "Oprima sobrE el componente un click, para información"

d Sub

,ivate Sub MenuAbrir-Click ( 1 AbrirArchivo Dim Direccion As Lonq Dim Tamaño As Integer Dim Dato As Byte Dim contador As Integer

For i = O To 65535 Step 1 Memoria (i) = CLng ( ll&h" + I1 O0 'I )

Dim i

Next i Forml.DE.Text = ~ ~ 0 0 0 0 : 0 0 0 0 1 1 CodiqoOperacion = O DireccionEditar = &HO

ProqressBarl.Min = 1 ProqressBarl.Max = 25 ProgressBarl.Value = ProgressBarl.Min

On Error GoTo Finalizar Label8 .Caption = "Archivo: + Abrirmem.fi1ename Abrirmem.DialoqTit1e = "Abrir archivo" Abrirmem.ShowOpen Open Abrirmem.filename For Input As 1 On Error GoTo Finalizarcerrar While Not EOF ( 1)

Input #1, Direccion, Tamaño

For i = 1 To Tamaño

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

ProqressBarl.Value = i Next i

ProgressBarl.Value = ProgressBarl.Min Wend

nalizarcerrar: Close 1 Forml.HazDump

nalizar :

td Sub

Private Sub MenuDesensarnblar Click0 !sensamblador.Show 1 -

:ivate Sub MenuGuardar-Click ( 1 GuardarArchivo Dim Direccion As Lonq Dim Tamaño As Inteqer On Error GoTo Finalizar Abrirmem.Flaqs = &H806& Abrirmem.DialoqTitle = "Guardar memoria" Abrirrnem.ShowSave Open Abrirmem.filename For Output As 1 Label8 .Caption = "Archivo : + Abrirmem. filename Direccion = O

Page 125: Ciencias Basicas e Ingenieria. Computación. Proyecto …148.206.53.84/tesiuami/UAM3894.pdfEl Intel 4004 es el primer microprocesador aparecido en el mercado y miembro de la familia

rm2 - Do

8

Direccion = Forml.ObtenDireccionNoCero(Direccion) If Direccion >= 1023 Then Exit Do Print #1, Direccion aux& = Direccion Tamaño = Forml.ObtenTamaño(aux&) Print #1, Tamaño For i = 1 To Tamaño

Next i Direccion = Direccion + Tamaño

Print #1, Memoria(Direccion + i - 1)

Loop Until Direccion >= 1023

Close 1 nalizar:

.d Sub

,ivate Sub Nec 8627P7 Click0 Este evento ejecuta los procedimientos necesarios para mostrar el grafico y la nformación textual de cada comDonente fisico del sistema 8088, S

la llamada al segundo procedimiento se efectua pasando los argumentos al proced liento 'on los nombres de los archivos necesarios para cada componente

.11 Coordenadas

.11 Componentes - informa~ion(~~pic14.bmp", "8255.t~t~~)

Id Sub

.ivate Sub Nec~8627P7~MouseMove(Button As Integer, Shift As Integer, X As Sing1

Muestra mensaje en la parte inferior de la pantalla el mensaje" ~bel3.Caption = "Oprima sobre el componente un click, para información" Id Sub

Y As Sinqle)

-ivate Sub Nec D8279C2 Click0 Este evento ejecuta los procedimientos necesarios para mostrar el grafico y la .nformación textual de cada componente fisico del sistema 8088, la llamada al segundo procedimiento se efectua pasando los argumentos al proced liento :on los nombres de l o s archivos necesarios para cada componente

111 Coordenadas i i l Componentes - informacion(~~pi~13.bmp~~, 'f8279.txtn)

Id Sub

rivate Sub Nec D8279C2 MouseYove(Button As Integer, Shift As Integer, X As Sing 2 , Y As Sinqle) Muestra mensaje en la parte inferior de la pantalla el mensajeit 1bel3.Caption = "Oprima sobre el componente un click, para información" Id Sub

-

rivate Sub PHIL 9131XN Click O información Este evento ejecuta ICs procedimientos necesarios para mostrar el grzf<zD y la

textual de cada componente fisico del sistema 8088, ;a llamada al segundo procedimiento se efectua pasando l o s argumentos ai sroced niento :on los nombres de los archivos necesarios para cada componente 311 Coordenadas 3111 Componentes - informacicn ( " p i c 6 .bmp'l, "0809. txt")

nd Sub

Page 126: Ciencias Basicas e Ingenieria. Computación. Proyecto …148.206.53.84/tesiuami/UAM3894.pdfEl Intel 4004 es el primer microprocesador aparecido en el mercado y miembro de la familia

4x12 - 9

,ivate Sub PHIL 9131XN MouseMove(Button As Integer, Shift As Integer, X As Sing , Y As Sinq1e)- Muestra mensaje en la parte inferior de la pantalla el mensaje" bel3.Caption = "Oprima sobre el componente un click, para información" d Sub

-

.ivate Sub Picturel Click 0 Este evento ejecuta los procedimientos necesarios para mostrar el grafico y la nformación textual de cada componente fisico del sistema 8 0 8 8 , ,a llamada al segundo procedimiento se efectua pasando los argumentos al proced liento :on los nombres de los archivos necesarios para cada componente

111 Coordenadas 111 Componentes - information( 11pic17 .bmp" , "74245. txt")

td Sub

-ivate Sub Picturel MouseMove(Button As Integer, Shift As Integer, X As Single,

Muestra mensaje en la parte inferior de la pantalla el mensaje" tbel3.Caption = "Oprima sobre el componente un click, para información" td Sub

As Sinqle) -

-ivate Sub Picture10 Click0 Este evento ejecuta los procedimientos necesarios para mostrar el grafico y la .nformación textual de cada componente fisico del sistema 8 0 8 8 ,

liento :on los nombres de l o s archivos necesarios para cada componente

i l l Coordenadas i l l Componentes - informacion("picl9.bmp", "7404.txt")

Id Sub

Yivate Sub Picturelo-MouseMove(Button As Integer, Shift As Integer, X As Single Y As Sinqle) Muestra mensaje en la parte inferior de la pantalla el mensaje" ibe13.Caption = IIOprima sobre el componente un click, para información" id Sub

llamada al segundo procedimiento se efectua pasando l o s argumentos al proced

rivate Sub Picture11 Click0

Lnf ormación

La llamada al segundo procedimiento se efectua pasando los argumentos ai proced niento :on los nombres de l o s archivos necesarios para cada componente

Este evento ejecuta los procedimientos necesarios para mostrar el grafico y la

textual de cada componente fisico del sistema 8 0 8 8 ,

211 Coordenadas 311 Componentes - informacion("picl9.bmp", "7404.txt")

nd Sub

rivate Sub Picturell MouseMove(Button As Integer, Shift As Integer, X As Single Y As Sinqle) Muestra mensaje en la parte inferior de la pantalla el mensaje"

-

2bel3.Caption = "Oprima sobre el componente un click, para informaci6r" nd Sub

rivate Sub Picture12 Click ( 1

información

La llamada al segundo procedimiento se efectua pasando los argumentos . .Ted

Este evento ejecuta los procedimientos necesarios para mostrar el gr.>. .,I i a

textual de cada Componente fisico del sistema 8 0 8 8 ,

Page 127: Ciencias Basicas e Ingenieria. Computación. Proyecto …148.206.53.84/tesiuami/UAM3894.pdfEl Intel 4004 es el primer microprocesador aparecido en el mercado y miembro de la familia

rm2 - 10

iento on l o s nombres de los archivos necesarios para cada componente

11 Coordenadas 11 Componentes - informacion ("pici5 .bmp1!, "7414. txt")

d Sub

,ivate Sub Picturel2~MouseMove(Button As Integer, Shift As Integer, X As Single Y As Sinqle) Muestra mensaje en la parte inferior de la pantalla el mensaje" .bel3.Caption = "Oprima sobre el componente un click, para información" .d Sub

.ivate Sub Picture13 Click ( 1 Este evento ejecuta los procedimientos necesarios para mostrar el grafico y la nformación textual de cada comDonente fisico del sistema 8088, la llamada al segundo procedimiento se efectua pasando l o s argumentos al proced liento !on los nombres de los archivos necesarios para cada componente

.11 Coordenadas

.11 Componentes - informacion("pic2.bmp", "8push.txt")

.ivate Sub Picture13 MouseMove(Button As Integer, Shift As Integer, X As Single Y As Sinqle) Muestra mensaje en la parte inferior de la pantalla el mensaje" tbel3.Caption = "Oprima sobre el componente un click, para información" td Sub

-

-ivate Sub Picture14 Click ( ) Este evento ejecuta l o s procedimientos necesarios para mostrar el grafico y la mformación textual de cada componente fisico del sistema 8088, la llamada al segundo procedimiento se efectua pasando los argumentos al proced liento :on los nombres de los archivos necesarios para cada componente

111 Coordenadas 111 Componentes - informa~ion(~~pic2l.bmp~~, "resis.txtIl)

id Sub

7ivate Sub Picture14 MouseMove(Button As Integer, Shift As Integer, X As Single Y As Sinqle) Muestra mensaje en la parte inferior de la pantalla el mensaje" ibe13.Caption = "Oprima sobre el componente un click, para información" Id Sub

-

rivate Sub Picturei5 Click ( )

información

La llamada ai segundo procedimiento se ei-ectua pasando l o s argumentos al procea niento 'on los nombres de los archivos necesarios para cada componente

311 Coordenadas 111 Componentes - informacion ( t1pic16. bmp" , "resis. txt" )

Id Sub

rivate Sub Picture15 MouseMove(Button As Integer, Shift As Integer, X ., ~. .qle

Este evento ejecuta los procedimientos necesarios para mostrar el grafico y la

textual de cada componente fisico del sistema 8088,

Y As Sinqle) Muestra mensaje en la parte inferior de la pantalla el mensaje"

-

3bel3.Caption = "Oprima sobre el componente un click, para informaci,"

Page 128: Ciencias Basicas e Ingenieria. Computación. Proyecto …148.206.53.84/tesiuami/UAM3894.pdfEl Intel 4004 es el primer microprocesador aparecido en el mercado y miembro de la familia

lrm2 - 11

d Sub

,ivate Sub Picture16 Click ( ) Este evento ejecuta los procedimientos necesarios para mostrar el grafico y la nformación textual de cada componente fisico del sistema 8088, la llamada al segundo procedimiento se efectua pasando los argumentos al proced liento Ion los nombres de los archivos necesarios para cada componente

.11 Coordenadas

.11 Componentes - informacion("picl2.bmp", "capa.txt")

Sub

.ivate Sub Picture16 MouseMove(Button As Integer, Shift As Integer, X As Single Y As Sinqle) Muestra mensaje en la parte inferior de la pantalla el mensaje'! .bel3.Caption = "Oprima sobre el componente un click, para información" .d Sub

,ivate Sub Picture17 Click0 Este evento ejecuta l o s procedimientos necesarios para mostrar el grafico y la

-

nformación textual de cada comoonente fisico del sistema 8088, la llamada al segundo procedimiento se efectua pasando los argumentos al proced liento !on los nombres de los archivos necesarios para cada componente

.11 Coordenadas

.11 Componentes - informacion("pic23.bmp", "RELOJ.txt")

.ivate Sub Picture2 Click(1ndex As Inteqer) Este evento ejecuta los procedimientos necesarios para mostrar el grafico y la .nformación textual de cada comoonente fisico del sistema 8088, la llamada al segundo procedimiento se efectua pasando los argumentos al proced Liento :on los nombres de los archivos necesarios para cada componente

.11 Coordenadas

.11 Componentes - informacion ("pic3 .bmp" , "2764. txt") Id Sub

.ivate Sub Picture2 MouseMove(1ndex As Integer, Button As Integer, Shift As Int ier, X As Sinqle, Y As Sinqle) Muestra mensaje en la parte inferior de la pantalla el mensaje" 1be13.Caption = "Oprima sobre el componente un click, para información" Id Sub

:ivate Sub Picture3 Click0 Este evento ejecuta l o s procedimientos necesarios para mostrar el grafico y la .nf ormación textual de cada componente fisico del sistema 8088, Ja llamada al segundo procedimiento se efectua pasando los argumentos al proced Tiento :on los nombres de los archivos necesarios para cada componente

i l l Coordenadas 111 Componentes informacion ("pic8 .bmp", "74373. txt") id Sub

-

rivate Sub Picture3 MouseMove(Button As Integer, Shift As Integer, X As Single, ! As Sinqle) Muestra mensaje en la parte inferior de la pantalla el mensaje" tbe13.Caption = "Oprima sobre el componente un click, para información"

-

Page 129: Ciencias Basicas e Ingenieria. Computación. Proyecto …148.206.53.84/tesiuami/UAM3894.pdfEl Intel 4004 es el primer microprocesador aparecido en el mercado y miembro de la familia

rm2 - 12

d Sub

ivate Sub Picture4 Click O Este evento ejecuta 10s procedimientos necesarios para mostrar el grafico Y la nformación textual de cada componente fisico del sistema 8 0 8 8 , a llamada al segundo procedimiento se efectua pasando los argumentos al proced iento on l o s nombres de los archivos necesarios para cada componente

11 Coordenadas 11 Componentes informacion("picl.bmp", "7432.txt") d Sub -

As Sinqle) Muestra mensaje en la parte inferior de la pantalla el mensaje" bel3.Caption = "Oprima sobre el componente un click, para información" d Sub

ivate Sub Picture5 Click(1ndex As Inteqer) * Este evento ejecuta l o s procedimientos necesarios para mostrar el grafico y la

liento on los nombres de los archivos necesarios para cada componente

rer, X As Sinqle, Y As Sinqle) Muestra mensaje en la parte inferior de la pantalla el mensaje" .bel3.Caption = "Oprima sobre el componente un click, para informaciónlf td Sub

liento :on los nombres de los archivos necesarios para cada componente

111 Coordenadas 111 Componentes - informacion ("pic10 .bmp", "7400. txt")

I As Sinqle) Muestra mensa.ie en la parLe inferior de ia pantalla el mensaje1t ibel3.Caption = "Oprima sobre el componente un click, para información" Id Sub

niento :on los nombres de los archivos necesarios para cada componente

311 Coordenadas

Page 130: Ciencias Basicas e Ingenieria. Computación. Proyecto …148.206.53.84/tesiuami/UAM3894.pdfEl Intel 4004 es el primer microprocesador aparecido en el mercado y miembro de la familia

>rm2 - 13

311 Componentes - informacion("pic5.bmp", "sn75188.txt")

Id Sub

civate Sub Picture7 MouseMove(Button As Integer, Shift As Integer, X As Single, 17 As Sinqle)

3bel3.Caption = "Oprima sobre el componente un click, para información" Id Sub

rivate Sub Picture8 Click 0

-

Muestra mensaje en la parte inferior de la pantalla el mensaje"

Este evento ejecuta l o s procedimientos necesarios para mostrar el grafico y la

311 Coordenadas 311 Componentes - informacion("picll.bmp", "74138. txt")

nd Sub

rivate Sub Picture8 MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Sinqle)

2bel3.Caption = "Oprima sobre el componente un click, para información" nd Sub

* -

Muestra mensaje en la parte inferior de la pantalla el mensaje"

rivate Sub Picture9 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 l o s argumentos al proced niento con 10s nombres de los archivos necesarios para cada componente

311 Coordenadas 311 Componentes - informacion ("pic18 . b m ~ ~ ~ , "74138. txt")

nd Sub

rivate Sub Picture9 MouseMove(Button As Integer, Shift As Integer, X As Y As Sinqle)

abel3.Caption = llOprima sobre el componente un click, para información" nd Sub

-

Muestra mensaje en la parte inferior de la pantalla el mensaje"

rivate Sub Regresar - indice-Click0 ide nload Form2 orta.da. Show nd Sub

rivate Sub Reset-Click0 i n 1 i or i = O To 65535 Step 1 emoria(i) = CLng("&h" + '10011) ext i ireccionEditar1 .Text = " 0 0 0 0 : 0000" 'odiqoOperacion = O

nd Sub

rivate Sub Reset - MouseMove(Button As Integer, Shift As Integer, X As 3 . .S Sinqle)

,abel3. Caption = "Resetea la memoria"

DireccionEditar = &HO

Muestra mensaje en la parte inferior de la pantalla el mensaje"

Single,

. A , Y

Page 131: Ciencias Basicas e Ingenieria. Computación. Proyecto …148.206.53.84/tesiuami/UAM3894.pdfEl Intel 4004 es el primer microprocesador aparecido en el mercado y miembro de la familia

rm2 - 14

d Sub

ivate Sub Salir-Click0 nd d Sub

ivate Sub SSCommandl - Click0

.d Sub

,ivate Sub SSPanell MouseMove(Button As Integer, Shift As Integer, X As Single, ' As Sinqle) Muestra mensaje en la parte inferior de la pantalla el mensaje" .bel3.Caption = "Area de edición de programas"

-

- .d Sub

.ivate Sub SSPanel2 MouseMove(Button As Integer, Shift As Integer, X As Single, ' As Sinqle) Muestra mensaje en la parte inferior de la pantalla el mensaje" .be13 .Ca~tion = "Area sin uso en ejecución"

-

.ivate Sub Tecla Click(1ndex As Inteqer) Este procedimiento muestra en el objeto display el valor hexadecimal de la tec

1 oprimida

If DiqitosHex = O Then DISPLAY.Text = 1 1 1 1

If DiqitosHex = 2 Then DISPLAY. Text = Riqht (DISPLAY. Text, 1) DisitosHex = DiqitosHex - 1

End If4 If DisitosHex < 2 Then

-

Select Case Index Case O To 9

Case 10 To 15 DISPLAY.Text = DISPLAY.Text + Chr(&H30 + Index) DISPLAY.Text = DISPLAY.Text + Chr(&H37 + Index)

End Select DiqitosHex = DigitosHex + 1 End If

Id Sub

lblic Sub Componentes informacion(picture As Strinq, archivo As Strinq) este procedimiento se utiliza para llamar los archivos *.bmp que tienen inform :ión qrafica de los :omDonentes fisicos del sistema 8088, los cuales son asignados al objeto COMPON JTE.picture; Ademas de cargar al Objeco form2. textl.text el archivo de texto de información 3el componente ;et X = Loadpicture (Ilc:\actualizacion\" + picture) ;et X = Loadpicture (App.Path + + picture) 1mponente.picture = X j = App.Path + l l \ ' t + archivo 2belll.Caption = bS 3en b$ For Input As #1 3xto$ = 11 11

Do While Not EOF(1) Line Input #1, a$ Texto$ = Texto$ + a$ + Chr$ (13) + ChrS(10)

Loop Textl.Text = Texto$

lose #1

Page 132: Ciencias Basicas e Ingenieria. Computación. Proyecto …148.206.53.84/tesiuami/UAM3894.pdfEl Intel 4004 es el primer microprocesador aparecido en el mercado y miembro de la familia

.pos - 1

lblic Type TEprom Inicio As Long Fin As Long

Id Type

lblic 'Type TInformacionOperaciones ByteReql As Boolean 'Estado 1 ByteReq2 A s Boolean 'Estado 4 Dato8 As Boolean 'Estado 5 DatoHi As Boolean 'Estado 6 DatoLo As Boolean 'Estado 7 Of fHi As Boolean 'Estado 2 y 8

mnemonic0 As Strinq Micro (40) As String

OffLo A s Boolean 'Estado 3 y 9

Id Type

rblic rblic rblic lblic rblic rblic rblic rblic rblic rblic rblic rblic rblic rblic lblic lblic lblic lblic lblic lblic Queva rblic lblic lblic lblic lblic lblic lblic lblic lblic lblic lblic lblic lblic l b l i c ublic ublic ublic ublic ublic ublic ublic

mnemonicos ( ) A s Strinq EstadoFetch As Inteqer Memoria(0 To 1048575) As Byte I Declaración del arreglo de memoria DirecionamientoReqistro As Byte CodiqoDireccionamiento As Byte CodiqoReqistrol A s Byte ' Con Uso CodiqoReqistro2 As Byte 'Con uso CodiqoSeqmento As Lonq CodiqoDesplazamiento As Lonq NumEprom As Inteqer, NumRam As Integer Eprom() As TEprom RAM ( 1 As TEprom Dato As Lonq DireccionEditar DiqitosHex As Inteqer Reqistros(0 To 19) As String ReqistroActual As Inteqer Direccionamiento As Integer NumByteMeter ListaDireccionarniento(1 To 2) As String modificación del 11 de mayo de 1997 MaximoCodiqo CodiqoOperacion As Byte ModoDireccionamiento As Byte Reqistrol As Byte Reqistro2 As Byte DatoByte As Lonq DatoWord As Lonq Direccion As Lonq Operacion(100) As TInformacionOperaciones Edicion As Lonq BanderaReqistro As Boolean CambioAdelante As Integer CambioAtras As Inteqer UltimoValor As Inteqer banderacambios As Boclean SeqDesensamblar As Lonq Oriqen As Strinq 'Oriqen de instrucción Destino As TextBox 'destino de instrucción Codiyosdeerror ( a 7 0 io) AS S t r i n q : Rrl-eyio cie errores Descod As TextBox Varibale que guarda el desplazamiento de código Sub Error(nurner0 As Integer)

nd Sub ublic Function BinHex$(num As Long)

cad$ = 1' 1'

While num c > O If num Mod 16 c 10 Then

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

Select Case num Mod 16 Case 10

Page 133: Ciencias Basicas e Ingenieria. Computación. Proyecto …148.206.53.84/tesiuami/UAM3894.pdfEl Intel 4004 es el primer microprocesador aparecido en el mercado y miembro de la familia

pos - 2

cad$ = "All + cad$ cad$ = IIB" + cad$ cad$ = IrC1l + cad$ cad$ = ltDl1 + cad$ cad$ = I1El1 + cad$ cad$ = lIF1l + cad$

Case 11

Case 12

Case 13

Case 14

Case 15

End Select End If num = num \ 16

Wend If cad$ = Then cad$ = O BinHex$ = cad$

.d Function

.blic Sub GuardarArchivo ( 1 Dim Direccion As Lonq Dim Tamaño As Inteqer On Error GoTo Finalizar Abrirmem.DialoqTitle = "Guardar memoria" Abrirmem.ShowSave Open AbrirMemoria.filename For Output As 1 Direccion = O Do

Direccion = Forml.ObtenDireccionNoCero(Direccion) If Direccion >= 1023 Then Exit Do Print #1, Direccion aux& = Direccion Tamaño = Forml.ObtenTamaño(aux&) Print #1, Tamaño For i = 1 To Tamaño

Next i Direccion = Direccion + Tamaño

Print #1, Memoria(Direcci0n + i - 1)

Loop Until Direccion >= 1023 Close 1

.nalizar : Id Sub

lblic Sub LeeDatosOperacionO Open App.Path + "\MicroInstrucciones.Ist" For Input As 1

While Not EOF(1) i = O

With Operacion (i) Input #1, .mnemonic0 Input #1, aux If Mid$(aux, 1, 1) = "V" Then

Else

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

Else

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

Else

.ByteRegl = True

.ByteRegl = False

.ByteReg2 = True

.ByteReg2 = False

.Dato8 = True

.Dato8 = False End If I f Mid$(aux, 4, 1) = IrV" Then

.DatoHi = True Else

.DatoHi = False

Page 134: Ciencias Basicas e Ingenieria. Computación. Proyecto …148.206.53.84/tesiuami/UAM3894.pdfEl Intel 4004 es el primer microprocesador aparecido en el mercado y miembro de la familia

pos - 3

End If If Mid$ (aux, 5 , 1) = "VII Then

. D ~ ~ O L O - = True

.DatoLo = False Else

End If If Mid$ (aux,

.OffHi = Else

.OffHi = End If If Mid$ (aux,

.Of fLo = Else

.OffLo = End If

6 , 1) = llV1l Then True

False

7 , 1) = "VII Then True

False

Input #1, Mic For k = 1 To Mic

Next k Input #1, .Micro(k)

End With i = i + l

Wend MaximoCodigo = i Close (1)

id Sub iblic Sub AbrirArchivo ( )

Dim Direccion As Lonq Dim Tamaño As Integer Dim Dato As Byte On Error GoTo Finalizar AbrirMemoria.ShowOpen Open AbrirMemoria.filename For Input As 1 On Error GoTo Finalizarcerrar While Not EOF(1)

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

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

Next i Wend

Close 1 Forml.HazDump

malizarcerrar:

malizar:

Id Sub

lblic Sub ValidaHexadecimal(KeyAscii As Integer, Objeto As TextBox) If KeyAscii = 8 Then

0bjeto.Text = I 1 O r 1 + Mid(Objeto.Text, 1, 3 ) KeyAscii = O Gbj eto. SelStarL = 4

Caracter = Chr(KeyAscii1 If (Caracter >= I r O f f And Caracter c= I1g1l ) Or (Caracter >= "A"

Else

c = f f F 1 l ) Or (Caracter >= I1aI1 And Caracter <= Ilf I I ) Then KeyAscii = Asc (Ucase (Caracter) ) cadena$ = cadena$ = Mid(Objeto.Text, 2, 3 ) 0bjeto.Text = cadena$ 0bjeto.SelStart = 4

KeyAscii = O Else

End If

And Caracte

Page 135: Ciencias Basicas e Ingenieria. Computación. Proyecto …148.206.53.84/tesiuami/UAM3894.pdfEl Intel 4004 es el primer microprocesador aparecido en el mercado y miembro de la familia

pos - 4

End If .d Sub

Page 136: Ciencias Basicas e Ingenieria. Computación. Proyecto …148.206.53.84/tesiuami/UAM3894.pdfEl Intel 4004 es el primer microprocesador aparecido en el mercado y miembro de la familia

Conclusiones

El Simulador del sistema mínimo 8088, se implemento 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 implementacjón de una gran conjunto de instrucciones soportadas por el microprocesador. La principal característica que nos hereda este simulador , es que debido ha la estructura, y al tipo de instrucciones manejadas con microinstruciones, podemos seguir aumentando las características del sistema implementado una gran numero de instrucciones para el crecimi- ento de este simulador.

Esta herramienta cubre las principales características e instrucciones de lenguaje ensambla- dor, 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.