Curso 2011 ARQUITECTURA Y ORGANIZACIÓN DE COMPUTADORAS Práctica Para el Laboratorio – Introducción Objetivos de la Práctica Que el alumno: • Se familiarice con el simulador MSX88.• Reconozca las instrucciones básicas del lenguaje ensamblador• Reconozca el funcionamiento de las estructuras básicas en assembler.Bibliografía: • Apunte N° 4, “Lenguaje Assembly”. • Manual del simulador MSX88. • Set de Instrucciones de MSX88. • Apuntes de la Cátedra. Para cada programa propuesto, deberá editar el archivo fuente con extensión asm (ej: ejer1.asm), luego ensamblarlo usando asm88.exe (comando: asm88 ejer1.asm) y enlazarlo con link88.exe (comando: link88 ejer1.o). Cada archivo obtenido con extensión eje (ej: ejer1.eje) deberá ser cargado y ejecutado en el simulador MSX88.Para ejecutar un archivo en el simulador, debe estar guardado en la misma carpeta del MSX88, para cargarlo en la memoria se ha de ejecutar el siguiente comando dentro del área de comandos del simulador (ojo, no es un comando de DOS): L prueba <Enter> Por último, para ejecutar el programa, se utiliza el comando G <Enter> Podremos observar en la pantalla como se obtienen instrucciones, se las decodifican, como se producen movimientos de datos, operaciones aritméticas, etc. Si se desea volver a ejecutar el programa, se deberá modificar el registro IP para que apunte a la dirección de comienzo del programa con el comando R IP 2000 <Enter> que coloca en el registro IP (dirección de la próxima instrucción) la dirección de la celda donde está la primer instrucción del programa (por defecto, 2000h en el simulador). Éstos y otros comandos más se encuentran detallados en el manual del simulador. Curso 2011 ARQUITECTURA Y ORGANIZACIÓN DE COMPUTADORAS 1 2 3 5 7 11 12 4 10 9 6 8 13 Dada la pantalla principal del Simulador MSX88: Describa brevemente cada uno de sus componente (los cuales se encuentran numerados). 1. Definición de variables a. Defina una variable tipo Byte llamada variable1 con un valor inicial numérico decimal 50, b. luego defina la variable anterior con un valor en hexadecimal. c. Defina una variable tipo Word llamada variable 2 con un valor inicial no especificado. d. Defina un valor constante. e. Defina una tabla de 10 posiciones llamada tabla1 que contenga los valores numéricos del 0 al 9. 2. Cual es la directiva del ensamblador que permite cambiar la dirección a partir de la cual se asignarán a las variables e instrucciones? Ejemplifique. 3. Cual es la instrucción que permite realizar movimientos de datos, entre registros o de un registro a la memoria? Ejemplifique. 4. Deseo sumar dos valores decimales 45 + 98: a. que instrucción de assembler debo utilizar para realizar la mencionada operación? b. Ejemplifique. (para ello primero debe definir variables que contengan los valores a sumar) c. En cual de las variables se guarda el resultado? d. Ejemplifique la suma de dos valores en el lenguaje de programación pascal. 5. Deseo restar dos valores decimales 98 – 45: a. que instrucción de assembler debo utilizar para realizar la mencionada operación? Curso 2011 ARQUITECTURA Y ORGANIZACIÓN DE COMPUTADORAS b. Ejemplifique. (para ello primero debe definir variables que contengan los valores a sumar) c. En cual de las variables se guarda el resultado? 6. Incremento, decremento a. Se desea incrementar la variable VAR1 del tipo byte definida con el valor 0, ejemplifique en lenguaje ensamblador. b. Ejemplifique el punto a en lenguaje Pascal. c. Se desea decrementar la variable VAR2 del tipo byte definida con el valor 100, ejemplifique en lenguaje ensamblador. d. Ejemplifique el punto c en lenguaje Pascal 7. Describa que realiza el siguiente código ORG 2000h MOV AX, 20 Lazo: ... ; ... ; <Instrucciones a repetir> ... ; DEC AX JNZ Lazo Fin: JMP Fin END a. Cual sería la instrucción análoga en lenguaje Pascal? b. Al pasar a la etiqueta Fin que se produce y porque se realiza de dicha manera? Como se podría subsanar este inconveniente? c. Que tipo de salto es JNZ? 8. Cual es la diferencia entre BX y [BX]? 9. Estructuras de control en Assembler (Decisión): a. Dado el siguiente código: b. Analice y describa que realiza el mismo c. Ejemplifique el código en su análogo en lenguaje Pascal d. Que tipo de salto es JZ? CMP AH, 4 JZ Then JMP Fin_IF Then: MOV BH, 2 INC BX Fin_IF: HLT e. f. g. h. Dado el siguiente código: Analice y describa que realiza el mismo Ejemplifique el código en su análogo en lenguaje Pascal Que tipo de salto es JMP? CMP AL, 4 JZ Then JMP Else Then: MOV BL, 1 INC CL JMP Fin_IF Else: MOV BL, 2 DEC CL Fin_IF: HLT Curso 2011 ARQUITECTURA Y ORGANIZACIÓN DE COMPUTADORAS 10. Estructuras de control en Assembler (Iteración a. Dado el siguiente código en lenguaje pascal: escriba su análogo en assembler. AL := 0; FOR CL := 1 TO 10 DO AL := AL + AL; b. Analice y explique que realiza el siguiente código MOV AL, 0 MOV CL, 10 Iterar: CMP CL, 1 JZ Fin ADD AL, AL DEC CL JMP Iterar Fin: HLT c. Ejemplifique de que manera implementaría un While en assembler (escribir su análogo en pascal) d. Ejemplifique de que manera implementaría un Repeat-Until en assembler (escribir su análogo en pascal) e. Cual es la diferencia entre ambas estructuras? 11. Arreglos y tablas: Dada la siguiente tabla, describa que hacen ambos códigos y marque las instrucciones análogas. const tabla: array[1..10] of Word = {5, 2, 10, 4, 5, 0, 4, 8, 1, 9}; var max: Word; begin max := 0; for i := 1 to 10 do if tabla[i] > max then max := tabla[i]; end. ORG 1000h tabla dw 5, 2, 10, 4, 5, 0, 4, 8, 1, 9 max dw 0 ORG 2000h MOV BX, OFFSET tabla MOV CL, 1 MOV AX, max Loop: CMP [BX], AX JC Menor MOV AX, [BX] Menor: ADD BX, 2 INC CL CMP CL, 10 JNZ Loop MOV max, AX HLT END INFORME: Considere los siguientes ITEMS en el desarrollo de su informe de laboratorio. 1. Presente un informe escrito donde consigne el procedimiento, resultados, análisis e interpretación de los resultados.2. Consigne en forma clara los programas implementados, junto con una breve descripción funcional. La explicación no debe limitarse a comentar cada una de las líneas de código. Esto es al análisis de resultados.3. Recuerde incluir en el informe: resultados obtenidos, observaciones, conclusiones y bibliografía.-