Introducción a las Computadoras Digitales Año 2008 Práctica de Problemas No 6 Lenguaje Ensamblador para el Microprocesador 8086 Ejercicio 1 Explique los siguientes términos: a) segmento; b) desplazamiento (offset); c) lı́mite de dirección. Ejercicio 2 ¿Cuáles son: a) las clases de segmentos que se encuentran en el microprocesador 8086; b) su tamaño máximo? Ejercicio 3 Señale el objetivo de cada uno de los registros de segmentos presentes en el microprocesador 8086. Ejercicio 4 El DOS realiza ciertas operaciones cuando carga un programa .EXE para su ejecución. ¿Qué valores inicializa el DOS en los registros CS e IP? ¿en los registros SS e SP? ¿en los registros DS y ES? Ejercicio 5 a)¿Cuál es el objetivo de la pila? b) ¿De qué forma se define la pila para un programa .COM y para uno .EXE? c) ¿Cuál es el tamaño de cada entrada de la pila? d) ¿Dónde se encuentra inicialmente el tope de la pila y como es direccionado? Ejercicio 6 ¿Cuál es el propósito de la instrucción INT? Ejercicio 7 a) ¿Cuál es el objetivo de un procedimiento? b) ¿Cómo se define el inicio y finalización de un procedimiento? c) ¿Cuándo definirı́a un procedimiento como FAR y cuándo como NEAR? Ejercicio 8 Explique qué enunciados END particulares tratan la finalización de a) un programa; b) un procedimiento; c) un segmento. Ejercicio 9 Dé los nombre STKSEG, DATSEG y CDSEG a los segmentos de la pila, de los datos y del código, respectivamente. Codifique el ASSUME necesario. 1 Laboratorio de Sistemas Digitales Introducción a las Computadoras Digitales Año 2008 Ejercicio 10 Para una instrucción con dos operandos, ¿cuál es el fuente y cuál el destino? Ejercicio 11 ¿De qué manera significativa difieren las siguientes instrucciones en su ejecución? MOV AX, 325AH MOV AX, [325AH] Ejercicio 12 a) ¿De qué manera significativa difieren las siguientes instrucciones en su ejecución? MOV BX, 0 MOV [BX], 0 b) Para el segundo MOV, ¿qué tipo de direccionamiento está involucrado con el primer operando? Ejercicio 12 Explique la operación de la instrucción MOV CX, [BX+SI+4] Ejercicio 13 En la siguiente instrucción hay un error. Encuéntrelo y corrı́jalo. MOV [BX], [SI] Ejercicio 14 Dada la siguiente definición de datos, encuentre los errores en los enunciados y codifique las instrucciones necesarias para corregirlos. BYTE1 DB ? BYTE2 DB ? WORD1 DW ? a) MOV BYTE1, BYTE2 b) MOV AL, WORD1 ; el operando 1 es correcto c) MOV BL, 034AH ; el operando 2 es correcto Ejercicio 15 a) ¿Cómo afecta la instrucción INT a la pila? b) ¿Cómo afecta la instrucción IRET a la pila? Ejercicio 16 a) ¿Cuál es el tamaño máximo de un programa .COM? b) Para un programa fuente que será convertido a formato .COM, ¿qué segmentos puede definir? c) ¿Por qué debe codificar ORG 100H al inicio de un programa que será convertido a formato .COM? d) ¿Cómo maneja el sistema el hecho de que usted no define una pila para un programa .COM? 2 Laboratorio de Sistemas Digitales Introducción a las Computadoras Digitales Año 2008 Ejercicio 17 Explique estos términos: a) dirección corta; b) dirección cercana; c) dirección lejana. Ejercicio 18 ¿Cuál es número máximo de bytes que una instrucción JMP cercana, un LOOP y un salto condicional pueden saltar? Ejercicio 19 Codifique una rutina usando LOOP que calcule la sucesión de Fibonacci: 1, 1, 2, 3, 5, 8, 13, ... (Excepto los dos primeros términos, cada número es la suma de los dos anteriores). Establezca el lı́mite en 12 vueltas. Ejercicio 20 Suponga que AX y BX contienen datos con signo y que CX y DX contienen datos sin signo. Determine las instrucciones CMP y de salto condicional necesarias para lo siguiente: a) ¿El valor de DX excede el de CX? b) ¿El valor de BX excede al de AX? c) ¿El CX es igual a cero? d) ¿Existe un desbordamiento? e) ¿El BX es igual o menor que el AX? f ) ¿El DX es igual o menor que el CX? Ejercicio 21 a) ¿Cuál es la diferencia entre la codificación de procedimiento PROC con FAR y con NEAR? b) ¿Cuáles son las formas en que un programa puede iniciar la ejecución de procedimiento? Ejercicio 22 Las operaciones con cadenas de caracteres suponen que los operandos están relacionados con los registros DI o SI. Identifique estos registros para lo siguiente: a) MOVS (operandos 1 y 2); b) CMPS (operandos 1 y 2); c) SCAS (operando 1). Ejercicio 23 Para operaciones con cadenas usando REP, a) ¿cómo define el número de repeticiones que ocurren? b) ¿cómo establece el procesamiento de derecha a izquierda? Ejercicio 24 Utilice la definición de datos del Cuadro 1 y codifique operaciones con cadenas de caracteres. DATASG SEGMENT PARA CONAME DB ’SPACE LAUNCHES, LAUNCHES, INC’ PRLINE DB 20 DUP(’’) Cuadro 1: Ejercicio 24 a) Mover CONAME a PRLINE, de izquierda a derecha. b) Mover CONAME a PRLINE, de derecha a izquierda. c) Cargar el tercer y cuarto byte de CONAME en el AX. d) Rastrear CONAME por un caracter blanco y, si se encuentra uno, moverlo a BH. 3 Laboratorio de Sistemas Digitales Introducción a las Computadoras Digitales Año 2008 Ejercicio 25 Defina una tabla llamada TABLEX con 50 palabras, inicialı́cela con blancos. Ejercicio 26 Se necesita un programa que proporcione un cifrado sencillo de información. Defina un área de datos de 80 bytes llamada CRYPTEXT con cualesquiera datos ASCII. Arregle una tabla de traducción para convertir los datos de manera un poco aleatoria, por ejemplo, A a X, B a E, C a R, etc. Proporcione todos los posibles valores de byte. Arregle una segunda tabla de traducción que invierta (descifre) la información. El programa debe realizar las acciones siguientes: 1) Desplegar el contenido original de CRYPTEXT en una lı́nea. 2) Cifrar CRYPTEXT y desplegar la información cifrada en una segunda lı́nea. 3) Descifrar CRYPTEXT y desplegar la información descifrada en una tercer lı́nea. (Debe mostrar la misma información que la primer lı́nea.) 4 Laboratorio de Sistemas Digitales