Laboratorio . Estructura de Computadores Universidad Tecnica Federico Santa Maria - Campus Rancagua EXPERIENCIA NO.2 Título: Arquitectura de un computador con microprocesador INTEL 80x86 modo real . Objetivo: Identificar los elementos que conforman la arquitectura del computador.. Aplicar “ Debug “ del computador para escribir programas en assembler y generar programas *. Com . Procedimiento: PARTE 1: DEBUG 1. Acceda a la consola DOS e inicie el comando DEBUG. 2. Realice un vaciado de memoria, sin parámetros, con la opción "d" de DEBUG. Anote a a partir desde que dirección de memoria se realiza este despliegue de localizaciones y cuanto es el numero de bytes desplegados. Observe la nomenclatura que utiliza DEBUG para mostrar las direcciones. Esta escritura responde a la nomenclatura Registro_Segmento: Offset. El termino OFFSET corresponde a la position de memoria dentro del segmento y es manejado por el registro IP (INSTRUCTION POINTER). 3. Realice un vaciado con modo RANGO. Vea los ejemplos a continuación: -D 100 130; -D110 15F. Observe la presentación en pantalla. 4. Realice un vaciado con longitud. Vea ejemplo a continuación: -D 105 L A. 5. Modifique valores de memoria primaria principal, usando el comando "e": -E 105 Observe la presentación en pantalla. Coloque tres valores AA, BB, CC en las tres primeras localizaciones de memoria desplegadas (la barra espaciadora permite el avance hacia nuevas localizaciones). Realice el mismo vaciado del punto 5 y tome nota. 6. Ingrese un valor STRING o cadena en memoria usando el comando "e". Previo haga el mandato d 120 para mirar el sector de memoria que usted modificará con un STRING, enseguida ingrese la cadena con el comando "e": -E 120 "ESTE ES UN EJEMPLO". Observe resultado. 7. Realice un llenado (FILL) de localizaciones de memoria con el comando “f”, por ejemplo: -F 100 LF AA BB CC DD EE. Observe resultado. 8. Ejecute el mandato "h" que realiza la suma y resta de dos números hexadecimales. Por ejemplo: -H 19F 10 A. Observe y verifique resultado. 9. Ejecute el comando de comparación de celdas de memoria. Por ejemplo: -C 100 L10 300. Si usted observa lo desplegado en pantalla, verá que se comparan los valores almacenados a partir de DS:0100 por un lado con los valores a partir de DS:0300 por el otro, en un rango de 10H bytes. Cuando dos direcciones son idénticas, ¿qué se muestra (o no se muestra) en pantalla?. 10. Pruebe cambiar los valores de los registros de la CPU en modo de comando, desde DEBUG con las órdenes pertinentes. Ejecute la orden a continuación y cambie el valor del registro AX a 1C1C. 1/3 Laboratorio . Estructura de Computadores Universidad Tecnica Federico Santa Maria - Campus Rancagua 11. Ejecute a continuación: cambie el valor del registro BX a AAAA; cambie el valor del registro CX a BBBB; cambie el valor del registro DX a 3333. 12. Ejecute a continuación: cambie el valor del registro SI a 1111; cambie el valor del registro DI a 2222; cambie el valor del registro BP a 4444; cambie el valor del registro SP a FF21. 13. Cambie el valor del registro CS a 1212. Enseguida vuelva al valor original del registro CS. Se reitera volver al valor original de CS!! 14. Cambie los valores de los registros DS a 1414; ES a 3131; SS a 4040.PARTE 2: arquitectura 80x86 Dentro de DEBUG ejecute el comando "r" e identifique los registros que componen la arquitectura del PC: AX= SP= BX= BP= CX= SI= DX= DI= DS= ES= SS= CS= IP= 0= D= I= S= Z= P= C= Flags: A= Nota: Para los flags considerar: O --> overflow: OV (1); NV (0) D -->Direction: DN (1); UP (0) Indicador de dirección de strings o cadenas I -->interrupt: EI (1); DI (0) S --> Signo: NG (1); PL (0) Z --> Zero: ZR (1); NZ (0) A-->Carry Auxiliar (BCD): AC (1); : NA (0) P-->Parity: PE par(1); PO impar(0) C-->Carry: CY(1); NC(0) T-->Trap b15 b14 b13 bl2 b11 b10 b9 b8 b7 b6 b5 b4 b3 b2 b1 bo X X A X P X C X X X O D --Modo NT 0IPL Nested (nivel de solamente Task privilegio) I T S Z protegido 1. Construya un programa que cargue en los registros AX, BX, CX y DX los valores 10,20, 30 y 40 respectivamente. La instrucción de fin de programa puede ser INT 20. 2. Construya un programa que cargue en los registros SP, BP, SI, DI, los valores FF00, 100, 200 y 300 respectivamente. Fin de programa con INT 20. 2/3 Laboratorio . Estructura de Computadores Universidad Tecnica Federico Santa Maria - Campus Rancagua Nota: si ensaya mas de una vez un programa, es decir, escribe prototipos en otros valores offset, recuerde de reponer el registro IP. 3. Construya un programa que realice lo siguiente: RAX 0001 RBX RAX Rcx 0002 RDX RCX 4. Determine como cambiar por programa los valores de los registros de segmentos. 5. Realice un vaciado (dump) de memoria con referencia al registro DS de los F primeros bytes de memoria. 6. Introduzca en DS:0000 y 0001 los valores AA y BB respectivamente. 7. Con los bytes modificados en el punto anterior construya un programa que mueva al registro AX los dos primeros bytes del segmento DS, usando direccionamiento directo. 8. Limpie el registro BX y realice la operación indicada en el punto anterior pero ahora usando direccionamiento de registro indirecto. Se sugiere modificar el contenido de los dos primeros bytes de DS:0000 y 0001 a CC y DD respectivamente para diferenciar del caso anterior. 9. Use direccionamiento base relativo(relativo a BX) para cargar el registro AX con el contenido de DS:0003. 10. Use direccionamiento indexado directo (relativo a DI) para cargar el byte 6 y 7 de DS:0000 en el registro AX. 11. Use direccionamiento base indexado con un offset de 2 para cargar los bytes 8 y 9 de DS:0000. 12. Cargue el registro AX por programa con AABB (16 bits). El valor del registro AX cárguelo ahora en las direcciones DS:0000 a 0004. 13. Cargue el registro AL con 00. Mueva éste contenido a las direcciones DS:0000 a 0002 14. Construya un programa que lea los valores A1.A2, A3 y A4 desde DS: 0000 (previamente cargados desde DEBUG) y los escriba en las direcciones DS:0004 y consecutivas respectivamente en orden inverso. 15. Construya un programa que haga uso de la sentencia de lazo (LOOP) para repetir una o varias sentencias. Use comando t de DEBUG para ejecutar step-by-step (:paso-a-paso) y hágalo con un pequeño número de repeticiones. Estudio. Explique cual de los registros es usado para los siguientes propósitos: (a) direccionamiento de segmentos; (b)dirección offset de una instrucción a ejecutar; (c) suma y resta; (d) conteo para lazos; (e) indicación de un resultado cero Indique cuales son los tipos de direccionamientos habilitados en el procesador INTEL 80x86 en modo real. Ilustre con ejemplos haciendo uso de la instrucción MOV Construya un pequeño programa *.COM con DEBUG y proceda a su almacenamiento en disco Evaluación Se realizará en el certamen fijado en la fecha indicada. El aprendizaje relacionado con esta experiencia está de acuerdo al trabajo realizado en el procedimiento de laboratorio. Debe preparar conocimiento complementario que complete lo cubierto en laboratorio. 3/3