Hardware-PC-XT-8088-8086

March 17, 2018 | Author: Rousver Ruben Quicaña Garay | Category: Central Processing Unit, Computer Data, Computing, Technology, Electronics


Comments



Description

UNIVERSIDAD NACIONAL DE SAN AGUSTIN DE AREQUIPAFACULTAD DE INGENIERÍA DE PRODUCCIÓN Y SERVICIOS ESCUELA PROFESIONAL DE INGENIERIA ELECTRÓNICA CURSO: ARQUITECTURA DE COMPUTADORAS (LABORATORIO) TURNO: VIERNES 7:00 a 9:00 am TÍTULO: Ensamblador 8088/8086, direccionamiento y programación, juego de instrucciones manual INTEL PRÁCTICA NRO: 3 INTEGRANTES: CUI: QUICAÑA GARAY, ROUSVER RUBÉN 20042943 RAMÍREZ LLERENA, NILTON RUDY 20050375 ZAVALA RIVEROS, VLADIMIR IVÁN 20022334 FIRMA: DOCENTE: ING. ERASMO SULLA FECHA: Viernes 15 de Mayo del 2015 AREQUIPA – PERÚ HARDWARE COMPUTADORA PERSONAL Hardware PC XT 8088-8086 Arquitectura de Computadoras PC XT 8088-8086 ÍNDICE 1. SISTEMAS QUE COMPONEN LA COMPUTADORA XT………………………………….………. 2 2. CARACTERÍSTICAS DEL PROCESADOR 8088/8086……………………………………...………. 3 3. FUNCIONAMIENTO EN GENERAL…………………………………………………..………….………. 6 4. SISTEMA DESCRITO POR BLOQUES Y POR CIRCUITOS……………………………………………………………………… ….……………….…. 8 5. ESQUEMÁTICO DEL SISTEMA COMPLETO SISTEMA DE APLICACIÓN……………….… 12 6. MUESTRA DE UNA MAINBOARD XT CON IDENTIFICACIÓN DE DISPOSITIVOS, ETIQUETADO Y ACCESORIOS…………………………………………....…….. 13 7. REGISTROS DEL 8088……………………………………………………………………………… …….… 14 8. MODOS DE DIRECCIONAMIENTO………………………………………………………… …..…….. 17 9. SET DE INSTRUCCIONES DEL 8088……………………………………………………………………. 21 10. LENGUAJE MÁQUINA, MACROENSAMBLADOR DEL 8088…………………………………. 26 11. DEBUGER Y SIMULADORES DEL 8088………………………………………………………………. 33 12. BIBLIOGRAFÍA……………………………………………………………… ………………………………… 34 1 Hardware PC XT 8088-8086 Arquitectura de Computadoras HARDWARE COMPUTADORA PERSONAL PC XT 8088-8086 1. SISTEMAS QUE COMPONEN LA COMPUTADORA XT: En el año de 1981, hizo su aparición el IBM Personal Computer, conocido comúnmente como “IBM PC” (en español Computadora u Ordenador Personal IBM), como un paso de la multinacional estadounidense IBM por incorporarse al campo de los microcomputadores personales. Sin embargo, en 1983, tres años después del lanzamiento del IBM PC original, la compañía introduce el modelo “PC XT” (Personal Computer with eXtended Technology). En donde lo más relevante fue la incorporación de un Disco Duro, 8 slots de expansión, una fuente de poder de mayor potencia y ya no contaba con la interfaz para casetes. A diferencia del modelo “PC AT” (Advanced Technology) lanzado un año después, el PC XT poseía concretamente un microprocesador Intel 8088, 16 k de RAM, ampliable a 256 k, una unidad de diskettes, un monitor de pantalla verde monocromática, un teclado y además estaba equipado con el MS-DOS rebautizado como PC-DOS. Estaba basado esencialmente en la misma arquitectura que el PC original. Su precio inicial fue de $3.285. 2 Hardware PC XT 8088-8086 Arquitectura de Computadoras En primer lugar, la computadora personal PC XT tenía como corazón al microprocesador 8088 de Intel, lo cual vendría a ser la unidad central de proceso o CPU. El 8088 era en sí una versión simplificada de su antecesor, el 8086 que contaba con registros y bus de datos de 16 bits. El 8088 contaba con registros de 16 bits, con un bus de datos de 8 bits y de direcciones de 20 bits. La ventaja se encontraba en que el bus de 8 bits coincidía con el bus de datos de la placa base. Sin embargo se requería la ayuda de un Coprocesador Intel 8087 para operaciones aritméticas de coma flotante. La computadora contaba con una “disquetera” o unidad de disquetes (“floppy disk” o disco flexible) de tamaño 5 ¼ de pulgada, de doble cara y con una capacidad de 360KB (Kilobytes). Lo que hacía destacar a esta computadora de su predecesor, el IBM PC Original, en cuanto a almacenamiento, era el uso de un Disco Duro de Seagate Technology ST412 de unos 10 MB (Megabytes) de capacidad. Más tarde las unidades de disquetes vendrían instaladas de fábrica pero de media altura, sin embargo en el 85, algunas unidades salieron de fábrica con dos disqueteras de tamaño completo en vez de una y sin contar con el disco duro convirtiéndose el montaje en una opción de bajo coste. Las unidades de diskette eran de la marca Tandon y el controlador de las unidades de diskette era un NEC µPD765. La PC XT contaba además con una serie de 128 KB de memoria RAM en la tarjeta madre que posteriormente pasarían a ser 256 KB debido a propósitos de estandarización. La placa base daba lugar a 8 ranuras o slots de expansión del tipo ISA de 8 bits. Se llegaron a tener hasta 2 versiones de la placa base del XT, donde la original podía admitir hasta 256 KB en la misma placa (4 bancos de chips de 64KB), capacidad que llegaría hasta los 640 KB con las tarjetas de expansión. La segunda versión vendría hasta el año 1986 en que se podía admitir hasta 640KB enteros en la placa madre gracias a dos bancos de chips de 256KB y los dos de 64KB. Algo que se incluyó en esta segunda versión fue el empleo de un IBM ROM BIOS, IBM BIOS o ROM BIOS que incluía soporte para el teclado expandido. El PC XT también albergaba una memoria ROM específica como intérprete de BASIC (lenguajes de programación de alto nivel), lo cual en el IBM PC Original era una operación realizada por una unidad de casete, que no se encontraba más en el XT. Para acceder a esta función de intérprete se requería de realizar operaciones auxiliares como desconectar el disco duro, dejar vacía la disquetera, y otras como acceder manualmente a la BIOS con un “depurador”. La placa madre también contaba con chips de soporte. Así se tenían: un oscilador o generador de señales de reloj 8284A, un controlador de interrupciones 8259A, un controlador de bus 8288, un controlador DMA 8237ª (DMA o Acceso Directo a Memoria), un timer 8253, una interfaz programable de periféricos 8255A, todos de Intel, más lógica discreta adicional implementada con circuitos TTL usados como lógica de pegamento. Otro componente del PC XT era el teclado, el cual al igual que en el caso de su predecesor, el PC Original no era compatible con aquellos de los 3 Operaciones de cadena. Una dificultad al respecto era el uso de diferentes códigos de escaneo. -5V. la diferencia es el ancho del bus de datos. además de la interfaz eléctrica algo diferente de los teclados PC/AT (Uso de adaptadores de señal). tomaran dos ciclos de memoria. Si los ciclos de datos son para 16 bits. Soporte para E/S mapeada en memoria. El 8088 ejecuta sus instrucciones desde una cola interna la cual se llena tan pronto como hay una localidad vacía. La fuente de alimentación generaba hasta 4 voltajes (+5V. Estos slots o ranuras de expansión alojaban a todo tipo de circuitos con diversas finalidades: Ampliación de Memoria. La diferencia en el ancho del bus no hace que el 8086 sea el doble de rápido que el 8088. es posible que se traslapen los ciclos de ejecución y búsqueda. Interrupción enmascarable y no enmascarable. No podemos dejar de lado los canales: Serie RS-232 como para periféricos como el ratón. Con tal de que las instrucciones se ejecuten de la cola interna y no tengan que esperar un ciclo del bus. +12V y -12V) y se encontraba dentro del chasis o case. La tarjeta o placa madre cuenta con un par de conectores de 16 pines provenientes de la fuente DC (de unos 130W) y de las señales entrantes. el controlador de video. Acceso directo a memoria Soporte para coprocesadores de bus local. 14 registros de 16 bits. tanto para la tarjeta monocromática (MDA). 2. incluyendo multiplicación y división. El siguiente es un resumen de los puntos de interés del 8088:           Arquitectura interna de 16 bits Soporta 1 MB de memoria Aritmética con signo y sin signo de 8 y 16 bits. su ejecución es tan rápida como pudiera ser en el 8086. El código escrito para uno se ejecutará en el otro sin cambios. como para la tarjeta gráfica de color (CGA). 4 . y el Paralelo para las Impresoras. El 8086 tiene tanto el bus interno como externo de datos de 16 bits. No podemos olvidar los 8 slots o sockets de 16 pines para las tarjetas que irán montadas en la placa. mientras que el 8088 tiene una ruta de datos interna de 16 bits pero la interface a memoria de solo 8 bits. el cual era el 6845 de Motorola. CARACTERÍSTICAS DEL PROCESADOR 8088/8086: El microprocesador 8088 es una derivación del 8086. 24 modos de direccionamiento de operandos. las unidades de disco y las tarjetas de expansión. Sin embargo también se cuentan con otros conectores para el teclado y el Speaker. mientras que en el 8086 sólo tomará uno. junto con la placa madre. El teclado tenía incorporado un procesador 8048 de Intel. tanto en binario como en decimal.Hardware PC XT 8088-8086 Arquitectura de Computadoras equipos más modernos (el AT o superior). el controlador de las unidades de disco. así. La figura que se mostrará a continuación. después se usan como el bus de datos del procesador. No están multiplexadas y permanecen estables durante el ciclo del bus. y S4 y S3 se codifican para decir cual registro de segmento se está usando. esta línea viene del reloj 8284. Durante el resto del ciclo. Estas líneas se aseguran y se convierten en los bits A16 – A19 de dirección del bus del sistema. S5 da el estado de habilitación de la bandera de interrupción. presentan el estado interno del 8088. En la PC.  CLK: Esta línea proporciona la información de temporización para el 8088. 5 . estas señales llevan los bits A16 – A19 de dirección de memoria.  A8 – A15: Estas líneas son la salida de los bits A8 – A15 de dirección para memoria y E/S en cada ciclo del bus.  A16/S3 – A19/S6: Al inicio de cada ciclo del bus para memoria. En la PC no se usa esta información de estado. llevan los bits A0 – A7 de dirección al principio del ciclo del bus.Hardware PC XT 8088-8086 Arquitectura de Computadoras Una manera de aprender acerca del 8088 es conocer las funciones de sus pines. Cuando S6 es bajo. Estas señales están multiplexadas. esta información de dirección se asegura (latched) y se convierte en la dirección del bus del sistema. esta información de dirección se asegura (latched) y se convierte en los bits A8 – A15 de dirección del bus del sistema. En la PC. En la PC. muestra un diagrama funcional a bloques (Functional Block Diagram) y un diagrama de la definición de las patitas (Pin Diagram) del 8088:  AD0 – AD7: Las señales de estas patas transmiten información de direcciones de memoria y E/S en cada ciclo del bus. Las salidas decodificadas del 8088 se convierten en las líneas de control del bus del sistema. En la PC. si está en alto. la ejecución continua. S1 y S2: Estas salidas presentan información del estado que pertenece al tipo de ciclo de bus que será ejecutado. se alambra con la salida BUSY del 8087. En la PC. se conecta al controlador de interrupciones 8259A.  RESET: Se usa para detener al microprocesador. así. esta línea se conecta a un enchufe de procesador auxiliar. pero tiene un nivel de prioridad más bajo. Debido a que el diseño de la PC no es de bus multimaestro.  TEST: Este pin de entrada se prueba por la instrucción espera de prueba. el cual expande la entrada a 8 entradas de interrupción al sistema. acepta peticiones de interrupción del enchufe del procesador auxiliar. y acepta peticiones de dispositivos sobre el bus del sistema. En la PC. En la PC esta entrada de petición de interrupción se usa para reportar errores de paridad en la memoria de la tarjeta madre. donde se decodifican. el 8088 espera en un estado de ocioso hasta que la pata va a bajo. En la PC. esta línea no se usa. 6 . La fuente del sistema genera una señal llamada energía buena. En la PC no se usa. estos bits se alambran al controlador de bus 8288. estas líneas están alambradas con el enchufe del procesador auxiliar de tal manera que puede seguir el estado de la cola del 8088. Si está en bajo. En la PC.  LOCK: Se activa por una instrucción de seguro (lock) y permanece activa hasta el final de la siguiente instrucción. la cual indica que los niveles de energía están en niveles adecuados y el RESET se puede remover del 8088.  S0.  RQ/GT1: Realiza la misma función que RQ/GT0. En la PC. el cual recibe su entrada de la fuente de energía del sistema. el cual lo sincroniza con el reloj del sistema. Se usa para indicar a otros maestros de bus que no deben intentar ganar el control del bus.Hardware PC XT 8088-8086 Arquitectura de Computadoras  RQ/GT0: Es una señal bidireccional usada por otros maestros de bus local para solicitar el uso del bus local.  NMI: Esta línea de entrada genera una interrupción no enmascarable (nonmaskable). esta señal viene del reloj 8284A. En la PC. y proporciona una función de generación de estados de espera en el bus del sistema.  QS0 y QS1: Estas líneas de salida dan el estado de la cola de instrucción interna. La PC usa la función READY para insertar un estado de espera en todos los accesos de puerto de E/S y DMA.  READY: Esta línea de entrada se usa para insertar estados de espera en los ciclos del bus del 8088 y. extender la longitud del ciclo. esta línea viene del reloj 8284A.  INTR: Esta señal de entrada es la de interrupción mascarable. compatible con el coprocesador numérico 8087. Los dos pasos se denotan como ciclo de búsqueda y ciclo de ejecución. “fetch” en inglés) la instrucción de memoria y la ejecuta. se produce algún error o se encuentra una instrucción que detiene la computadora. Para comprender esta función debe considerarse el detalle del proceso de ejecución del programa. 3. los cuales están compuesto de un conjunto de instrucciones almacenadas en memoria. se considera el procesamiento de una instrucción en dos etapas: la CPU lee (busca. Desde el punto de vista más simple.Hardware PC XT 8088-8086 Arquitectura de Computadoras El procesador opera a 4. de memoria. La ejecución del programa consiste en la repetición del proceso de traer y ejecutar la instrucción. operaciones y instrucción es una operación común a todas las y consiste en la lectura de la instrucción de una localidad La ejecución de la instrucción puede suponer varias depende de la naturaleza de la instrucción. 7 .77 MHz. frecuencia que es derivada del cristal de 14.31818 MHz la cual es dividida por tres por el reloj del procesador. tres grupos de canales del Timer de 16 bits y ocho niveles de interrupciones.58 MHz (la señal requerida para los televisores de color). y por cuatro se obtiene 3. La ejecución del programa se detiene sólo si la computadora se desconecta. El cuarto canal es programado para refrescar el sistema dinámico de memoria. esto está hecho para el programa del Timer-contador e informe periódicamente de la transferencia DMA. Buscar una instrucciones. El procesador es respaldado por el set de funciones provistas por cuatro canales de 20 bits de acceso directo a memoria o DMA. FUNCIONAMIENTO EN GENERAL: La función básica de una computadora es ejecutar programas. Tres de los cuatro canales de DMA están disponibles en el bus de Entrada/Salida y hay una alta velocidad para transferencia de datos entre las memorias y los canales de Entrada/Salida sin intervención de la memoria del procesador. La CPU es la encargada de ejecutar las instrucciones específicas del programa. El procesamiento de una instrucción se denomina ciclo de instrucción y se representa en la figura siguiente. trae. la CPU siempre incrementa el PC después de traer una instrucción para determinar de dónde traer la siguiente instrucción de la secuencia (siguiente dirección de memoria). ésta puede ser de cuatro tipos: - CPU . En una CPU típica. se utiliza un registro llamado contador de programa (PC program counter) para apuntar a la instrucción que debe traerse a continuación. El ciclo de ejecución de una instrucción puede ocasionar más de una referencia a memoria. puede especificar una operación de E/S. Para un ciclo de instrucción dado. la figura 5 proporciona una visión más detallada el ciclo de instrucción. Los estados se describen a continuación: 8 . CPU . Control: Una instrucción puede especificar que la secuencia de ejecución se altere por lo que la CPU debe poner el contador de programa al valor adecuado.E/S: Deben transferirse datos a o desde el exterior mediante el módulo de E/S. En general. la CPU busca o trae una instrucción de memoria.Memoria: Deben transferirse datos desde la CPU a la memoria o viceversa.Hardware PC XT 8088-8086 Arquitectura de Computadoras Al principio de cada ciclo de instrucción. Con estas consideraciones en mente. La CPU interpreta la instrucción y realiza la acción requerida. La instrucción traída se almacena en un registro de la CPU conocido como registro de instrucción (IR instruction register). o en su lugar. A no ser que se indique otra cosa. Procesamiento de datos: La CPU realizará alguna operación aritmética o lógica con los datos. algunos estados pueden no darse y otros pueden visitarse más de una vez. 77 MHz. porque una instrucción puede ocasionar una lectura. Almacenamiento de operando (os.Hardware PC XT 8088-8086 Arquitectura de Computadoras Cálculo de la dirección de instrucción (iac. operand fetch): Trae el operando desde la memoria o se lee desde el dispositivo de E/S. Búsqueda de operando (of. operand store): Escribe el resultado en memoria o lo saca a través de un dispositivo de E/S. instruction address calculation): Determina la dirección de la siguiente instrucción a ejecutar. 4. cada uno con capacidad de 160KB y se le podían agregar externamente dos manejadores de disco flexible. A continuación se muestra la PC original descrita por bloques: 9 . instruction fetch): La CPU lee la instrucción desde su posición de memoria. determina la dirección del operando. instruction operation decoding): Analiza la instrucción para determinar el tipo de operación a realizar y el (los) operando(s) a utilizar. La IBM PC original fue un sistema basado en disquete con una memoria de 32K y cinco ranuras o slots de expansión. Cálculo de la dirección del operando (oac. La PC original usó el microprocesador 8088 de Intel corriendo a 4. Operación con los datos (do. una escritura o ambas. Decodificación de la operación indicada en la instrucción (iod. El estado oac aparece dos veces. operand address calculation): Si la instrucción implica una referencia a un operando en memoria o disponible mediante E/S. La IBM PC soportaba uno o dos disquetes. data operation): realiza la operación indicada en la instrucción. Los estados inferiores sólo ocasionan operaciones internas en la CPU. SISTEMA DESCRITO CIRCUITOS: POR BLOQUES Y POR La PC XT estaba esencialmente basada en la misma arquitectura de la IBM PC Original. Búsqueda de instrucción (if. Obsérvese además la posibilidad de múltiples operandos y resultados puesto que se necesitan en algunas instrucciones. Los estados de la parte superior de la figura ocasionan intercambio entre la CPU y la memoria o módulo E/S. La fuente de energía se aumenta de 65 a 130 watts. Se agregó un puerto serie y un paralelo como equipo estándar. La capacidad del disco flexible se mejoró de un solo lado a doble lado para una capacidad total de 360K. En la figura a continuación.Hardware PC XT 8088-8086 Arquitectura de Computadoras Para estar a la vanguardia de las tecnologías competentes en ese entonces. de esta manera podemos contrastar los atributos del IBM PC con las mejoras anteriormente mencionadas: 10 . Se agregó adaptador de disco y disco duro. para mantenerse a la par con el desarrollo de software y la necesidad de más RAM y capacidad en disco. mostramos el sistema de la PC XT descrito por bloques. Esta necesidad se satisfizo con la introducción de la PC XT la cual adoptó las siguientes mejoras:       Se aumentó el número de ranuras de expansión a 8. La capacidad en RAM de la tarjeta madre se incrementó a 256KB. la IBM PC rápidamente requirió varias mejoras. En algunas compatibles. los ciclos de reloj son de 100 ns y con cero estados de espera el ciclo de memoria es de 400 ns. Una idea general de esta encierra las siguientes características: - Posee una máxima capacidad de direccionamiento de 1048576 BYTES. o 2. un ciclo de reloj es de 210 ns y sin estado de espera el ciclo de memoria es 4 veces 210 ns. al aumentar la velocidad del reloj.Hardware PC XT 8088-8086 Arquitectura de Computadoras La IBM PC XT no incrementó el rendimiento del procesador manteniendo el 8088 a 4.77 MHz. El rendimiento de la PC XT se extendió incrementando la velocidad del reloj a 8 y 10 MHz. o 840 ns. se requieren cinco ciclos de reloj. 11 .77 MHz.77 MHz. se agregaron estados de espera para los ciclos de memoria del procesador para permitir el uso de chips de RAM menos caros. Es una arquitectura Local BUS. A 10 MHz. comúnmente conocido como 1024KB. El 8088 requiere cuatro ciclos para ejecutar un ciclo de memoria. con la adición de un estado de espera.1 veces más rápido que la PC original de 4. En cuanto a la Arquitectura de la PC XT. A 4. debemos decir que esta es original de IBM y fue implementada en base al microprocesador 8088 de la INTEL. controladas por el controlador de interrupciones 8259 y el microprocesador 8088 respectivamente.Hardware PC XT 8088-8086 Arquitectura de Computadoras - Posee ocho canales de interrupciones mascarables y una no mascarable. los siguientes dispositivos: 12 . El diagrama de bloques a continuación presenta de forma general y más completa cada uno de los componentes de la placa principal del PC/XT basado en el microprocesador 8088: En cuanto a la circuitería de apoyo que ha sido mostrada en el diagrama anterior. Posee las señales de control básicas de lectura y escritura de memoria y puerto. Posee 4 canales de acceso directo a memoria. cuya primera versión fue implementada con un reloj de 4. Es una arquitectura sincrónica. +5V y -5V. Todas las señales son 100% compatibles con TTL menos las señales de 12V y -12V. el sistema PC XT usa adicionalmente como apoyo a las operaciones realizadas. todos controlados por el circuito integrado (IC) 8237 de la INTEL. Posee cuatro alimentaciones de: +12V. -12V.77 MHZ. Hardware PC XT 8088-8086 Arquitectura de Computadoras CODIGO DEL INTEGRADO FUNCION 74LS373 8 BIT LATCH ACTIVADO POR NIVEL 74LS245 8 BIT AMPLIFICADOR BIDIRECCIONAL 74LS244 8 BIT AMPLIFICADOR 74LS138 DECODIFICADOR 3/8 75477 AMPLIFICADOR INVERSOR 74LS175 FLIP FLOP D 74LS280 GENERADOR DE PARIDAD 74LS08 6 x INVERSOR 74LS32 4 x OR 74LS07 6 x BUFFER 74LS08 4 x AND 5. ESQUEMÁTICO DEL SISTEMA COMPLETO SISTEMA DE APLICACIÓN: 13 . MUESTRA DE UNA MAINBOARD XT CON IDENTIFICACIÓN DE DISPOSITIVOS.Hardware PC XT 8088-8086 Arquitectura de Computadoras 6. ETIQUETADO Y ACCESORIOS: 14 . Hardware PC XT 8088-8086 Arquitectura de Computadoras Mainboard de PC XT con ID de dispositivos Disco Duro de PC XT y Controlador 15 . para poder manejar variables en memoria y para su propio funcionamiento. Registros de Almacenamiento Temporal o de Datos: En primer lugar se tiene:  AX (Registro Acumulador): Es usado sobre todo en operaciones aritméticas como primer operando y también como registro de propósito general a disposición del programador. divididos según áreas de funcionalidad: 7. REGISTROS DEL 8088: Para ayudar al funcionamiento de las instrucciones. cada uno de los cuales está pensado principalmente para alguna función concreta. el microprocesador dispone de una serie de “variables” internas de nombres fijos que son los registros internos. En total hay 14 de estos registros. 16 . En seguida se dan detallan cada uno de estos registros.1.Hardware PC XT 8088-8086 Arquitectura de Computadoras Disquetera de PC XT y Controlador Case o Armario del PC XT con su Contenido 7. De esta forma se tiene que todas las instrucciones ensamblador pueden operar con datos de 8 y 16 bits según lo que se precise. bajo) y los 8 superiores AH (H de high. por ejemplo. SP (Stack Pointer): Es el registro que se reserva el procesador para uso propio en instrucciones de manipulación de la pila. Registros de la Pila: La pila es un área de memoria importante. DS (Data Segment): Se usa para indicar dónde están todos los datos del programa en ejecución. alto). ES (Extra Segment): Es el registro que referencia al segmento extra. Registros de Segmento: Son cuatro registros de 16 bits usados para indicar direcciones de memoria:     7. son de 16 bits. 7. En consecuencia. CH/CL y DH/DL respectivamente. DX (Registro Dato): Se usa como registro auxiliar en operaciones aritméticas y como contenedor de datos a la hora de usar instrucciones de comunicación de puertos. Tiene. CS (Code Segment): Este registro es usado por el procesador.2. Así.2). CX (Registro Contador): Este registro se usa siempre que se necesite un contador en operaciones repetitivas y bucles. dos registros que se usan como desplazamiento (offset) para apuntar su contenido.Hardware PC XT 8088-8086 Arquitectura de Computadoras    BX (Registro Base): Se usa principalmente para indicar posiciones de memoria (offset). En los demás registros esta subdivisión no es posible. junto con el registro IP.4. Se usan como complemento al registro SS y son:   7. BX. para conocer dónde está la instrucción actual que está siendo ejecutada. pero para permitir la realización de operaciones de tipo byte (8 bits) cada uno de estos cuatro registros está dividido en dos subregistros de 8 bits a los que se puede acceder de forma independiente (como se observa en la figura 1. los 8 bits inferiores de AX se llaman AL (L de low. BP (Base Pointer): Se usa como registro auxiliar. SS (Stack Segment): En este registro se indica al procesador dónde está la zona de memoria que se usa como segmento de pila. CX y DX se dividen en BH/BL.3. como todos los restantes. Son: 17 . y se usa como apuntador de memoria auxiliar en operaciones complejas donde se necesitan dos punteros de datos simultáneos. Estos cuatro registros. Registros Índices: Se utilizan como desplazamientos complementarios para DS y ES a la hora de indicar la posición donde se encuentran los datos a los que se desea acceder. en vez de uno. AF (Auxiliar Flag): Se usa como bandera auxiliar. Bit 12 al 15: No usados. SI (Source index): Se usa como puntero origen en operaciones de desplazamiento de datos entre dos zonas de memoria. La mayoría de sus 16 bits se utiliza para representar un estado concreto: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 CF -.OF (Overflow Flag): Indica si se ha producido un desbordamiento aritmético. Bit 3: No usado. Bit 7 .PF -. Bit 4 . 7.ZF (Zero Flag): Indica si se ha producido un resultado cero o una comparación con operadores iguales. como la que realiza el teclado cada vez que una tecla es pulsada. Bit 9 . Bit 10 .-.CF (Carry Flag): Es la bandera de acarreo. Bit 5: No usado. Registros de Instrucción: Sólo hay uno. el registro IP (Instruction Pointer). Se pone a 1 cuando se produce un resultado con acarreo tras una operación aritmética. Este puntero cambia su contenido automáticamente cada vez que se ejecuta una instrucción o cuando se salta a otro punto del programa mediante una instrucción de salto. Bit 6 .Hardware PC XT 8088-8086 Arquitectura de Computadoras   7.AF -.TF (Trap Flag): Es la bandera de atrape. Registro de Banderas: Este registro es usado para tener el control de estado y control de las operaciones.-. La Figura mostrada a continuación muestra el Conjunto de Registros del 8088: 18 . indica que está permitida la generación de interrupciones hardware que generan algunos periféricos.IF (Interrupt Flag): Si está a 1.DF (Direction Flag): Indica a la CPU hacia donde se desplazan los punteros relativos en operaciones repetitivas de cadenas de datos. indica que hay un número par de bits activos. Bit 11 . Bit 8 . es usado por la CPU para conocer la posición relativa a la base CS donde se encuentra la instrucción que se está ejecutando actualmente.PF (Parity Flag): Cuando está a 1. Se pone a 1 cuando hay necesidad de realizar ajustes tras una operación de tipo BCD. Bit 2 . Este registro no puede ser modificado directamente por parte del programador. usada en procesos de depuración de código. DI (Destination index): Se usa como destino en operaciones de desplazamiento de datos.5.-Bit 0 . Bit 1: No usado.SF (Sign Flag): Indica si se ha producido un resultado negativo o comparación menor.6.ZF SF TF IF DF OF -. La figura ilustra la generación de la dirección física. La dirección de memoria física se forma corriendo a la izquierda 4 bits el contenido del registro de segmento y sumándolo a la dirección de 16 bits.Hardware PC XT 8088-8086 Arquitectura de Computadoras 8. 048. A pesar de esto. El valor cargado en el Registro de Segmento se usa para localizar la región de 64 KB en el espacio de 1 MB. Esto se logra manipulando los contenidos del Registro de Segmento. el registro de 16 bits puede especificar 64 KB regiones diferentes. sin embargo el programador puede mover esta región de 64 KB a alguna demarcación en el espacio de 1 MB. Tomando en cuenta el criterio del programador. no puede por sí mismo especificar alguna demarcación en el espacio de 1 MB. Debido a que este Registro es también de 16 bits. 19 . El 8088 tiene una dirección de 20 bits que permite un tamaño de memoria física de 1. el almacenamiento está limitado a una región de 64 KB.576 bytes. MODOS DE DIRECCIONAMIENTO: El 8088 puede direccionar más de los 65536 bytes de datos especificados por los 16 bits. 3456H (AX <.Hardware PC XT 8088-8086 Arquitectura de Computadoras El valor del segmento se le llama dirección base. cualquier dirección en el espacio de 1 MB se puede identificar especificando una base y un offset. Para describir los modos se hará uso de la instrucción MOV destino. y una dirección dentro de un segmento se le llama offset. MOV AX. 20 . Por lo tanto. Así. origen.3456H) c) Direccionamiento Directo: Se suma el desplazamiento dado al segmento de datos. Tampoco se puede modificar el registro de segmento de código. se puede tener que muchas combinaciones de base y offset pueden usarse para especificar una dirección de memoria. Es muy rápido porque se hace con información de la cola. MOV AX. El único MOV que no se permite es el que se hace entre un registro de segmento y otro. BX (AX <. MODOS DE DIRECCIONAMIENTO: A continuación pasamos a describir ambos modos de Direccionamiento: el de Datos y el de Memoria de Programa.BX) b) Direccionamiento Inmediato: Transfiere el dato que sigue al código de operación al registro especificado. Es rápido. Modos de Direccionamiento de Datos: Se tienen los siguientes: a) Direccionamiento por Registro: Transfiere el contenido de un registro a otro del mismo tamaño. Si se usa BP se toma que el dato está en el segmento de pila.[DS x 10H + BX]) Cuando se utiliza este modo de direccionamiento y se emplean los registros BX. DI o SI.Hardware PC XT 8088-8086 Arquitectura de Computadoras - Direccionamiento directo que solo se aplica a una MOV entre una localidad de memoria y AL ó AX. Direccionamiento directo por desplazamiento: ídem anterior pero de 4 bytes. Son instrucciones muy comunes y tienen 3 bytes de longitud. BX. SL) MOV AX. [BX] (Ax <. EX.[BX+SI+DS x 10H]) Se usa para direccionar tablas en memoria. MOV ARRAY [BX+SI]. se asume que el dato está en el segmento de datos. MOV AX.AX (AX -> BX+4+DS x 10H) g) Direccionamiento Relativo Base Más Índice: Transfiere entre un registro y una dirección dada por un registro base más índice más desplazamiento. e) Direccionamiento Base Más Índice: Direcciona en forma indirecta los datos de memoria. Si se usa BP se toma como dato de pila. [BX+SI] (AX <. Se usa un registro base (BP o BX) más un registro índice (DI o SI). MOV AX. También BP direcciona en pila y los otros en datos.1234H (AX <. f) Direccionamiento Relativo por Registro: Para ubicar el dato se agrega un desplazamiento al contenido del índice (BP.[DS x 10H + 1234H]) d) Direccionamiento indirecto por registro: Transfiere un dato entre un registro y una dirección de memoria direccionada por un registro índice o base (BP. DI. AX (BX+ARRAY+SI+DS x 10H <.AX) 21 . MOV [BX+4]. DI o SI). Se usa para saltos largos entre segmentos.IP+2) c) Direccionamiento Indirecto de Memoria de Programa: La dirección está contenida en un registro relativo. Luego deccrementa 2. WAIT. NOTA: PUSH A y POP A salva o recupera todos los registros (excepto los de segmento) en la pila. La instrucción CALL aprovecha la pila para salvar la dirección de retorno y la RET para recuperarla. La pila se mantiene con 2 registros:  SP: Stack Pointer  SS: Stack Segment  PUSH: El SP-1 apunta a donde se almacenará la parte alta del próximo dato. DAA. la parte baja se recupera de SP+1. La parte baja se almacena en SP-2. Modos de Direccionamiento de Memoria de Programa: Usados en instrucciones de salto (JMP) y llamada (CALL ) a) Direccionamiento Directo a la Memoria del Programa: Se almacena la dirección con el código de operación. JMP 10000H CS <. 22 . IP <.BX) d) Direccionamiento a la Pila de Memoria: Los datos se ponen en la pila por PUSH y se recuperan por POP. JMP [BX] (Ip <. según el valor especificado luego del código de operación.0000H b) Direccionamiento Relativo de Memoria de Programa: Se modifica el contenido del IP para continuar la ejecución en otro lado. Luego incrementa 2. Se usa para saltos cortos intrasegmento. JMP 2 (IP <. HLT.10000H.  POP: LA parte alta del dato se recupera de SP.Hardware PC XT 8088-8086 Arquitectura de Computadoras Se usa para direccionar un arreglo bidireccional. e) Direccionamiento Implícito: El operando está implícito. LOCK. SET DE INSTRUCCIONES DEL 8088: 23 .Hardware PC XT 8088-8086 Arquitectura de Computadoras 9. Hardware PC XT 8088-8086 Arquitectura de Computadoras 24 . Hardware PC XT 8088-8086 Arquitectura de Computadoras 25 . Hardware PC XT 8088-8086 Arquitectura de Computadoras 26 . Hardware PC XT 8088-8086 Arquitectura de Computadoras 27 . . siendo sustituido por otros lenguajes más fáciles de aprender y utilizar. que además reducen la posibilidad de cometer errores. se procede a generar un programa objeto que es ligado y se genera un programa . Opcionalmente puede recurrirse a la utilería EXE2BIN de MS-DOS para transformarlo a . utiliza el alfabeto binario que consta de los dos únicos símbolos 0 y 1. por citar algunos. denominados bits (abreviatura inglesa de dígitos binarios). EJEMPLO 0000 0001 1010 0001 01 A1 1000 1001 1001 1010 89 9A 0011 1010 1001 1100 3A 9C 0111 0100 0111 0000 74 70 1110 1001 0010 0000 E9 20 ENSAMBLADORES Y MACROENSAMBLADORES: Existen varios ensambladores disponibles para ambiente MS-DOS: el IBM Macro Assembler. Macro Ensamblador IBM.Está integrado por un ensamblador y un macroensamblador. El lenguaje máquina es el único que entiende directamente la computadora. denominados bits (abreviatura inglesa de dígitos binarios).Hardware PC XT 8088-8086 Arquitectura de Computadoras 10. MACROENSAMBLADOR DEL 8088: El lenguaje máquina es el único que entiende directamente la computadora. 28 . En gran medida su funcionamiento y forma de invocarlo es sumamente similar al de Microsoft. Una breve descripción de cada uno se propociona a continuación. el Turbo Assembler de Borland. pero dejó de utilizarse por su dificultad y complicación. utiliza el alfabeto binario que consta de los dos únicos símbolos 0 y 1.COM. LENGUAJE MÁQUINA. Fue el primer lenguaje utilizado en la programación de computadoras. Es capaz de generar un listado con información del proceso de ensamble y referencias cruzadas. el Turbo Editassm de Speedware. Su forma de uso consiste en generar un archivo fuente en código ASCII.EXE. Los programas que componen el Macro Ensamblador Microsoft v4.EXE Microsoft 8086 object linker SYMDEB. Requiere 128KB de memoria y sistema operativo MS-DOS v2. Este archivo es usado para el proceso de ensamble y generación de código objeto. aunque estas diferencias son mínimas.. Estos mismos programas posiblemente funcionen con otros ensambladores sin cambios o con cambios mínimos cuando utilizan directivas o pseudoinstrucciones. es creado el código ejecutable en formato . Los programas ejemplo han sido desarrollados con éste y está garantizado su funcionamiento.. Inc. Trabaja de la misma forma.0. todos los programas que se creen con un ensamblador en particular podrán ser ensamblados en otro. y consiste de un ambiente integrado que incluye un editor y utilerías para el proceso de ensamble y depuración.0 son los siguientes: Programa Descripción MASM. Así. nos enfocaremos al Microsoft Macro Assembler v4. este ensamblador es capaz de soportar el juego de instrucciones de distintos tipos de microprocesadores Intel de la serie 80xx/80x86.0 este soporta desde el 8086 al 80286 y los coprocesadores 8087 y 80287..EXE Microsoft Macro Assembler LINK. Posteriormente. Es capaz de realizar el ensamble línea a línea.Hardware PC XT 8088-8086 Arquitectura de Computadoras Macro Ensamblador de Microsoft.EXE Microsoft Symbolic Debuger Utility MAPSYM.Dependiendo de la versión. Este ensamblador trabaja con tablas en memoria. Adicionalmente permite la generación de listados de mensajes e información de cada etapa del proceso y la capacidad de creación de archivos de código objeto. Trabaja con un archivo de código fuente creado a partir de un editor y grabado en formato ASCII. En su versión 4. y con un ligador. por lo que la generación del código ejecutable no implica la invocación explícita del ligador por parte del programador. El código ensamblador no cambia puesto que los microprocesadores con los que se va a trabajar son comunes.. Turbo Assembler. Turbo Editassm. y permite revisar listas de referencias cruzadas y contenido de los registros.. En lo que se refiere a las presentes notas.Este es desarrollado por Speedware. conforme se introducen los mnemónicos.De Borland Intl. Realmente la diferencia entre los ensambladores radica en la forma de generar el código y en las directivas con que cuente. cambiando las pseudo-operaciones no reconocidas por el equivalente indicado en el manual de referencia del paquete empleado.0 o superior.EXE.EXE Microsoft Symbol File Generator CREF. es muy superior al Turbo Editassm.EXE Microsoft Cross-Reference Utility 29 . pero proporciona una interfaz mucho más fácil de usar y un mayor conjunto de utilerías y servicios. ASM Sample source file for SYMDEB session README.EXE MAKE. Por cada ocurrencia en el código de esta macro. @ % No se puede utilizar un nombre que coincida con una palabra reservada o directiva del ensamblador. como a una subrutina o procedimiento. El término macroensamblador es usado para indicar que el ensamblador en cuestión tiene la capacidad de poder ensamblar programas con facilidad de macro. 80186. 8087 y 80287. incluyendo: · Letras de la A a la Z · Números del 0 al 9 · Los símbolos especiales: .DOC manual Updated information obtained after the was printed. Además es capaz de aprovechar las instrucciones del 80286 en la creación de código protegido y no protegido. 30 .EXE Microsoft Library Manager Microsoft Program Maintenance Utility EXEPACK. Es importante señalar que no se deja una llamada. 8088. Campo etiqueta: Una etiqueta debe comenzar con un carácter alfabético y puede contener hasta 31 caracteres.Hardware PC XT 8088-8086 Arquitectura de Computadoras LIB.0 crea código ejecutable para procesadores 8086.EXE Microsoft EXE File Header Utility COUNT. FORMATO DE LAS INSTRUCCIONES Cada instrucción en lenguaje ensamblador del 8088 está compuesta de 4 campos: Etiqueta operación operando comentario El campo comentario se utiliza para propósitos de documentación y es opcional.$ . Una macro es una pseudo-instrucción que define un conjunto de instrucciones asociadas a un nombre simbólico. en caso de existir. se dejan los parámetros con los que se estaba llamando la macro y no con los que había sido definida. Si el nombre incluye un punto. 80188. entonces el punto debe ser el primer carácter. el ensamblador se encarga de substituir esa llamada por todas las instrucciones asociadas y. El Microsoft Macro Assembler v4. 80286. sino que se incorporan todas las instrucciones que definen a la macro.EXE Microsoft EXE File Compression Utility EXEMOD. . Campo comentario: Se utiliza para documentar el código fuente del ensamblador. [nombre] DD valor_inicial [.. Sólo admite la forma: nombre = expresión.] donde valor_inicial puede ser una cadena o una expresión numérica cuyo resultado esté entre -255 y 255.] donde valor_inicial puede ser una constante cuyo valor esté entre -4294967295 y 4294967295. Definición de datos Ubica memoria para un ítem de datos y opcionalmente asocia un nombre simbólico con esa dirección de memoria y/o genera el valor inicial para ese ítem. Debe separarse del último campo por al menos un espacio e iniciar con . 31 . valor_inicial.. [nombre] DB valor_inicial [... [nombre] DW valor_inicial [.] donde valor_inicial puede ser una expresión numérica cuyo resultado esté entre -65535 y 65535 o un operando de memoria en cuyo caso se almacenará el offset del mismo. deberá utilizarse el símbolo ?.. no se puede volver a definir.. =: Es similar a EQU pero permite que el símbolo se pueda redefinir. Las dos formas son: nombre EQU expresión nuevo_nombre EQU viejo_nombre Una vez definido un nombre mediante EQU. Otra forma de expresar el valor inicial es: cuenta DUP (valor_inicial [. que es de 2 a 6 caracteres. Campo operando: Contiene la posición o posiciones donde están los datos que van a ser manipulados por la instrucción.. valor_inicial.]) donde cuenta es la cantidad de veces que debe repetirse lo que está entre paréntesis. valor_inicial. o bien un operando de memoria en cuyo caso se almacenarán el offset y el segmento del mismo (en ese orden). una expresión numérica cuyo valor absoluto no supere 65535. Si se desea que no haya valor inicial. valor_inicial.Hardware PC XT 8088-8086 Arquitectura de Computadoras Campo operación: Contiene el nemotécnico de la instrucción. Cuando inicia un comentario en una línea ésta deberá tener en la primera Columna el carácter DIRECTIVAS (Instrucciones para el ensamblador) Definición de símbolos EQU: Define nombres simbólicos que representan valores u otros valores simbólicos.. Sirve también para identificar el segmento de código. Este segmento no puede contener código o datos con valores iniciales. 5. Si no se indica combinación. Todas las direcciones de datos e instrucciones se representan la distancia entre el inicio del segmento y la dirección correspondiente. Combinación: define cómo combinar segmentos que tengan el mismo nombre. Clase: Es una forma de asociar segmentos con diferentes nombres. WORD: El segmento comienza en la siguiente dirección par. DWORD: Comienza en la siguiente dirección múltiplo de 4. PUBLIC: Concatena todos los segmentos que tienen el mismo nombre para formar un sólo segmento. ASSUME. 3. DOSSEG. 2. nombre_segm SEGMENT [alineación][combinación]['clase'] sentencias nombre_segm ENDS Alineación: define el rango de direcciones de memoria para el cual puede elegirse el inicio del segmento. el segmento no se combinará con otros del mismo nombre (combinación "privada"). 32 . Debe estar encerrado entre comillas simples.Hardware PC XT 8088-8086 Arquitectura de Computadoras Definición de segmentos Organizan el programa para utilizar los segmentos de memoria del microprocesador 8088. pero con propósitos similares. La diferencia consiste que. Si no se indica la alineación ésta será PARA. STACK: Es similar a PUBLIC. BYTE: El segmento comienza en el siguiente byte. Hay cinco posibles: 1. La longitud del segmento será la del segmento más largo. La longitud del segmento formado será la suma de las longitudes de los segmentos con el mismo nombre. 5. PAGE: Comienza en la siguiente dirección múltiplo de 256. el registro SS apuntará a este segmento y SP se inicializará con la longitud en bytes de este segmento. Estos son SEGMENT. AT dirección_de_segmento: Hace que todas las etiquetas y direcciones de variables tengan el segmento especificado por la expresión contenida en dirección_de_segmento. 4. 3. al comenzar la ejecución del programa. 4. ENDS. COMMON: Pone el inicio de todos los segmentos teniendo el mismo nombre en la misma dirección de memoria. 2. MEMORY: Es igual a PUBLIC. Todos los símbolos que forman la expresión dirección_de_segmento deben conocerse en el primer paso de ensamblado. Hay cinco posibles: 1. GROUP. PARA: Comienza en la siguiente dirección múltiplo de 16. ensambla una porción de código. IFE. Son los siguientes: IF.. IFNDEF. {IF|IFE} condición sentencias .] ASSUME: Sirve para indicar al ensamblador qué registro de segmento corresponde con un segmento determinado.. La etiqueta indica dónde debe comenzar la ejecución del programa. [ELSE 33 . todos pueden accederse mediante el mismo registro de segmento.Se ejecutan si es cierta (IF) o falsa (IFE). si bien siguen siendo segmentos diferentes.. una expresión utilizando el operador SEG o la palabra NOTHING. Control del ensamblador ORG expresión: El offset del código o datos a continuación será la indicada por la expresión. GROUP: Sirve para definir grupos de segmentos.Hardware PC XT 8088-8086 Arquitectura de Computadoras El linker pone los segmentos que tengan la misma clase uno a continuación de otro. IFDIF. aunque los datos estén en diferentes segmentos. IFIDN. Definición de procedimientos Los procedimientos son secciones de código que se pueden llamar para su ejecución desde distintas partes del programa. Además supone que los segmentos de código tiene clase CODE o un nombre con el sufijo CODE. Esta es la convención usada por los compiladores de lenguajes de alto nivel. IFB. Sintaxis: ASSUME reg_segm:nombre [. IF2. ENDIF. De esta manera. Opcionalmente puede ensamblarse otra porción de código si la condición no se cumple. Todos los símbolos que forman la expresión deben conocerse en el primer paso de ensamblado. IF1. Cuando el ensamblador necesita referenciar una dirección debe saber en qué registro de segmento lo apunta. etiqueta PROC {NEAR|FAR} sentencias etiqueta ENDP Ensamblado condicional Verifican una condición determinada y si se cumple. reg_segm:nombre. ELSE. DOSSEG: Esta directiva especifica que los segmentos deben ordenarse según la convención de DOS. EVEN: Hace que la próxima instrucción o dato se ensamble en la siguiente posición par.] donde el nombre puede ser de segmento o de grupo. sólo el módulo que contiene la dirección de arranque del programa debe contener la directiva END etiqueta. Los demás módulos deberán terminar con la directiva END (sin etiqueta). Un grupo es una colección de segmentos asociados con la misma dirección inicial. Sintaxis: nombre_grupo GROUP segmento [. IFDEF. segmento. Si el programa se compone de varios módulos. IFNB. Los segmentos de un grupo no necesitan ser contiguos. END [etiqueta]: Debe ser la última sentencia del código fuente. que cancela la selección de registro de segmento hecha con un ASSUME anterior.. ENDIF La directiva ELSE y sus sentencias son opcionales.. Luego se puede usar dicho nombre para representar esas sentencias.]] se ensamblarán las sentencias indicadas en la macro teniendo en cuenta que cada lugar donde aparezca un parámetro se reemplazará por el argumento correspondiente.. Definición de macros nombre_macro MACRO [Parámetro [.nombre_local. IFB <argumento> permite el ensamblado si el argumento en una macro es blanco (no se pasó el argumento). Todas las etiquetas dentro de la macro deberán estar indicadas en la directiva LOCAL para que el ensamblador no genere un error indicando que un símbolo está definido varias veces.Se ejecutan si es falsa (IF) o cierta (IFE). 34 . Al invocar la macro mediante: nombre_macro [argumento [. mientras que IFNDEF nombre lo permite si no está definido. <argumento2> permite el ensamblado si los dos parámetros pasados a la macro son idénticos.. mientras que IF2 lo permite en el segundo paso. IFIDN <argumento1>. entonces también aparecerán en algunas de las sentencias en la definición de la macro.. Opcionalmente se pueden definir parámetros para representar argumentos para la macro. ENDIF termina el bloque y es obligatorio. Macros: Las macros asignan un nombre simbólico a un bloque de sentencias fuente. Si existen. Se pueden anidar directivas condicionales.argumento. IF1 permite el ensamblado de las sentencias sólo en el primer paso.] sentencias ENDM Los parámetros son opcionales. IFNB <argumento> permite el ensamblado si el argumento en una macro no es blanco (se pasó el argumento)..parámetro.<argumento2> permite el ensamblado si los dos parámetros pasados a la macro son diferentes. IFDIF <argumento1>. IFDEF nombre permite el ensamblado de las sentencias si el nombre está definido. El nombre_local de la directiva LOCAL es un nombre simbólico temporario que será reemplazado por un único nombre simbólico (de la forma ??número) cuando la macro se invoque.Hardware PC XT 8088-8086 Arquitectura de Computadoras sentencias] .]] [LOCAL nombre_local[. 387 para coprocesadores.8087. IRPC parámetro. . 35 .486 y ..287 y . . Si ésta contiene comas..8086.286. 386P.486P y . . IRP e IRPC. Los de procesador son: . Como en el caso de la directiva MACRO. Referencias externas al módulo Sirve para poder particionar un programa en varios archivos fuentes o módulos.Hardware PC XT 8088-8086 Arquitectura de Computadoras La directiva EXITM (usada dentro de la definición de la macro) sirve para que no se ensamblen más sentencias de la macro (se usa dentro de bloques condicionales).586 para instrucciones en modo real. sólo se pueden ensamblar instrucciones del 8086 y 8087.286P. PURGE nombre_macro [. Definición de bloques de repetición Son tres: REPT. Son imprescindibles si se hace un programa en alto nivel con procedimientos en assembler..]: Borra las macros indicadas de la memoria para poder utilizar este espacio para otros símbolos. se puede incluir las sentencias LOCAL y EXITM y deben terminarse con la directiva ENDM. . Deben ubicarse al principio del código fuente. . . Habilitan las instrucciones correspondientes al procesador y coprocesador indicado. . REPT expresión sentencias ENDM La expresión debe poder ser evaluada en el primer paso del ensamblado y el resultado deberá estar entre 0 y 65535.186. Procesador: Indican el tipo de procesador y coprocesador en el que se va a ejecutar el programa.]> sentencias ENDM El parámetro se reemplaza por el primer argumento y se ensamblan las sentencias dentro del bloque. Hay tres: PUBLIC.argumento. cadena sentencias ENDM Es similar a IRP con la diferencia que el parámetro se reemplaza por cada carácter de la cadena. Luego el parámetro se reemplaza por el segundo argumento y se ensamblan las sentencias y así sucesivamente hasta agotar los argumentos.nombre_macro.386. IRP parámetro. ..586P para instrucciones privilegiadas. Sin estas directivas. <argumento [. Esta expresión indica la cantidad de veces que debe repetirse el bloque. espacios u otros caracteres especiales deberá encerrarse con paréntesis angulares (<>). . EXTRN e INCLUDE. . 5.STACK [size]: Define el segmento de pila de la longitud especificada. los símbolos en diferentes módulos pero con los mismos nombres tendrán la misma dirección. Segmentos simplificados Permite definir los segmentos sin necesidad de utilizar las directivas de segmentos que aparecen más arriba. COMPACT: Todo el código entra en un segmento de 64 KB. Durante una sesión con el linker. Algunos ensambladores no soportan este modelo. . . El tipo debe ser el mismo que el del ítem indicado con la directiva PUBLIC en otro módulo. nombre. LARGE: Tanto el código como los datos pueden ocupar más de 64 KB (pero no pueden haber matrices de más de 64 KB). mientras que los datos se acceden como NEAR.FARDATA? [name]: Define un segmento de datos FAR sin valores iniciales. SMALL: Los datos caben en un segmento de 64 KB y el código cabe en otro segmento de 64 KB. 2. TINY: Los datos y el código juntos ocupan menos de 64 KB por lo que entran en el mismo segmento. DWORD o ABS (número constante especificado con la directiva EQU o =)) especificado.]: Define una variable externa con el nombre y tipo (NEAR. . Por lo tanto todo el código y los datos se pueden acceder como NEAR. 3.COM... EXTRN nombre:tipo [.. WORD. 36 . INCLUDE nombre_de_archivo: Ensambla las sentencias indicadas en dicho archivo. Por lo tanto. por lo que ambos se acceden como FAR. BYTE.CODE [name]: Define el segmento de código. 6. Por lo tanto.DATA: Define un segmento de datos NEAR con valores iniciales. El modelo puede ser uno de los siguientes: 1.DATA?: Define un segmento de datos NEAR sin valores iniciales.nombre:tipo. HUGE: Tanto el código como los datos pueden ocupar más de 64 KB (y las matrices también).FARDATA [name]: Define un segmento de datos FAR con valores iniciales.MODEL modelo: Debe estar ubicada antes de otra directiva de segmento. . .]: Estos nombres simbólicos se escriben en el archivo objeto. código es FAR. . FAR.. Se utiliza para programas . MEDIUM: Los datos entran en un sólo segmento de 64 KB. pero el código puede ser mayor de 64 KB. mientras que los datos se acceden como FAR. pero los datos no (pero no pueden haber matrices de más de 64 KB). 4. código es NEAR. por lo que ambos se acceden como FAR y los punteros a los elementos de las matrices también son FAR.Hardware PC XT 8088-8086 Arquitectura de Computadoras PUBLIC nombre[.  @fardata?: Nombre del segmento definido con la directiva .FARDATA. .  @datasize: Vale 0 para los modelos SMALL y MEDIUM (datos NEAR). 37 .DATA?. El depurador permite detener el programa en:  Un punto determinado mediante un punto de ruptura.CODE.  @data: Nombre del segmento definido con la directivas . . debugger). LARGE y HUGE (código FAR). es un programa que permite depurar o limpiar los errores de otro programa informático. Los siguientes símbolos están definidos cuando se usan las directivas anteriores:  @curseg: Tiene el nombre del segmento que se está ensamblando. Durante esa interrupción.  Examinar el contenido de los registros del procesador.  @fardata: Nombre del segmento definido con la directiva .STACK (los cuatro están en el mismo segmento). y vale 1 para los modelos MEDIUM.  @code: Nombre del segmento definido con la directiva . permitiendo al usuario examinar la situación. el usuario puede:  Examinar y modificar la memoria y las variables del programa.  Examinar la pila de llamadas que han desembocado en la situación actual.  Un punto determinado bajo ciertas condiciones mediante un punto de ruptura condicional.FARDATA? 11.CONST y .  Un momento determinado a petición del usuario. DEBUGER Y SIMULADORES DEL 8088: Un Depurador (en inglés. vale 1 para los modelos COMPACT y LARGE (datos FAR) y vale 2 para el modelo HUGE (punteros a matrices FAR).Hardware PC XT 8088-8086 Arquitectura de Computadoras . Éste se ejecuta normalmente hasta que el depurador detiene su ejecución.  @filename: Representa el nombre del archivo fuente (sin la extensión)  @codesize: Vale 0 para los modelos SMALL y COMPACT (código NEAR).DATA.CONST: Sefine un segmento de datos constantes. Al Iniciarse la depuración.  Un momento determinado cuando se cumplan ciertas condiciones. el depurador lanza el programa a depurar. de manera que el programa continúe su ejecución en un punto diferente al punto en el que fue detenido. resultará más difícil y compleja debido a esa falta de información del contexto en el que se ejecuta el programa. En cuanto a la Depuración: para poder aprovechar todas las posibilidades de depuración es necesario que. Mediante el uso del depurador se puede conocer el funcionamiento interno del programa examinado. Dicha información extra consiste básicamente en la correspondencia entre las instrucciones del código ejecutable y las instrucciones del código fuente que las originan. ayudando al proceso de ingeniería inversa o permitiendo desarrollar técnicas para evadir las restricciones impuestas por el programa. El depurador depende de la arquitectura y sistema en el que se ejecute. Un programa que está siendo depurado puede presentar un comportamiento diferente a si se ejecuta en solitario debido a que el depurador cambia ligeramente los tiempos internos del programa. Aún si no se incluye esta información de depuración. Estos cambios en los tiempos de ejecución afectan especialmente a sistemas complejos multihebra o sistemas distribuidos. así como información sobre nombres de variables y funciones. por lo que sus funcionalidades cambian de un sistema a otro. Ejecutar instrucción a instrucción.es/Coleccion-cientificotecnica/Informatica/Galeria/Partes-de-un-PC-IBM-XT-5160 38 . sigue siendo posible monitorizar la ejecución del programa. Ejecutar partes determinadas del código.uma. Un depurador también puede usarse para realizar ingeniería inversa o evitar protecciones de copia.Hardware PC XT 8088-8086 Arquitectura de Computadoras    Cambiar el punto de ejecución. se indique al compilador que debe incluir instrucciones e información extra para la depuración del código. BIBLIOGRAFÍA: http://uciencia. Aquí se han mostrado las más comunes. Sin embargo. o el resto de código antes de salir de una función. Ejemplos de depuradores  GNU Debugger (gdb)  SoftICE  OllyDbg  Trw2000  Ida Pro 12. al compilar el programa a depurar. como el interior de una función. htm http://www.asp http://es.ua.Hardware PC XT 8088-8086 Arquitectura de Computadoras http://members.unicrom.ar/hardware-pc-desktop/Generacionesde-la-computadora.slideshare.net/Kathe804/placa-base-xt 39 .com/cmp_historiaPC1.php http://www.taringa.alu.es/l/lli/articuloIBM/ http://www.com/wingsze_liu/trabajos_A8.informatica-hoy.tripod.net/posts/apuntes-y-monografias/3391636/Evolucionde-los-discos-duros.com.html http://www.
Copyright © 2024 DOKUMEN.SITE Inc.