Microprocesadores. Guía 8 1 Facultad: Ingeniería. Escuela: Electrónica. Asignatura: Microprocesadores. Lugar de ejecución: Microprocesadores (Edificio 3, 2da planta). DEBUG Y USO DE CADENAS. Objetivos específicos • • • • Analizar paso a paso el funcionamiento de un código EXE, empleando el DEBUG. Aplicar las instrucciones básicas del manejo de cadenas. Aplicar la opción 0Ah de la INT 21h a los programas en lenguaje ensamblador. Aplicar los conocimientos adquiridos en el período anterior al utilizar una nueva herramienta. Materiales y equipo • • 1 Computadora con utilidades MASM.exe y LINK.exe. Programas desarrollados en la guía 6. Procedimiento 1) Abra una ventana de DOS y ubique los archivos con que trabajó en la práctica 6. 2) Si los archivos no se encuentran en la carpeta MASM50 trasládelos ahí. 3) En las prácticas en que se usaba el EMU8086, usted tenía la posibilidad de ejecutar paso a paso los programas, así como monitorear los datos almacenados en los registros o la PILA. En esta práctica se hará uso del comando DEBUG para hacer lo mismo para los programas creados en el MacroEnsamblador. 4) Para estudiar el primer programa de la práctica 6 escriba el comando DEBUG seguido del nombre de su programa CON LA EXTENSIÓN .EXE ejemplo: C:\MASM50>DEBUG BB05555.EXE 5) Observará una imagen similar a la que se le presenta en la Figura 1. 2 Microprocesadores. Guía 8 Figura 1. 6) Para observar el segmento de código del programa que ha cargado en memoria escriba el siguiente comando: 7) Ubique la dirección de inicio y de fin del segmento Note que el último código hexadecimal es CD 21, que corresponde a la instrucción INT 21 8) Ejecute el programa con el comando “G”. 9) Observe que funcionó como en la práctica pasada y que se ha desplegado un mensaje El programa ha terminado de forma normal 10) Salga del DEBUG con el comando Q. 11) Cargue el segundo programa de la práctica 6, tomado ejemplo del paso #4 12) Observe el segmento de código del programa como lo hizo en el paso número 6 de esta práctica. 13) Copie la información en la Tabla 1 Microprocesadores. Guía 8 DIRECCIONES SEGM(CS) OFFSET 0000 DEBUG MOV DL, 41 3 LENGUAJE ENSAMBLADOR mov dl, 41h mov cx, 001Ah LAZO: mov ah, 02 int 21h inc dl loop LAZO mov ax, 4C00h int 21h Tabla 1 14) Compare el código fuente del ensamblador con lo que le muestra el comando del DEBUG. ¿Qué le ha pasado a la etiqueta “LAZO” a la que hace alusión la instrucción LOOP? _______________________________________________________________________________________ _______________________________________________________________________________________ 15) Observe el contenido de los registros usando el comando “R” 16) Interprete la información que le presenta. Copie la información. _______________________________________________________________________________________ _______________________________________________________________________________________ _______________________________________________________________________________________ 17) Note que en la última línea que observa se muestra la próxima instrucción que se ejecutará; en este caso es la primera del programa. 18) Ejecute una vez el comando “T” que sirve para ejecutar paso a paso y vea que ocurre. Noteque al usar el comando “T”, el DEBUG realiza la instrucción y actualiza el contenido de los registro. Analice los cambios que ocurrieron. ¿Son congruentes los datos en los registros con lo que usted esperaba que ocurriera? _______________________________________________________________________________________ _______________________________________________________________________________________ 19) Continúe la ejecución paso a paso hasta antes de la instrucción INT 21. Ahora se llamará a una interrupción. No use el comando “T”, porque con esto saltará al programa de atención de la interrupción, para salir de él tendrá que ejecutar muchas veces el mando “T” (si es rápido digitando, tardará unos 3 minutos para correr toda la interrupción), así que en lugar del comando “T” se utilizará el comando “P”, que ejecutará todo el proceso de la interrupción y retornará al programa principal. 4 Microprocesadores. Guía 8 20) Analice los resultados y comparándolos con lo que usted esperaría que sucediera. 21) Como notará se imprimió en la pantalla la letra A, que corresponde al ASCII 41h. 22) Continúe el proceso usando adecuadamente los comandos T y P hasta ejecutar la instrucción LOOP. Observe la ejecución del lazo. 23) Continúe el proceso hasta ver que se impriman dos caracteres más. ¿Cuándo dejará de repetirse el proceso? _______________________________________________________________________________________ 24) Corra totalmente el programa con el comando “G” ¿Cuántos caracteres se imprimieron? ______________________ ¿Qué relación hay entre los caracteres impresos y el contenido de CX? _______________________________________________________________________________________ 25) Cargue el programa del análisis de resultados de la guía 6 en el DEBUG. 26) Use el comando “U” para ver el segmento de código. 27) Copie en la Tabla 2 la información que observa DIRECCIONES SEGM(CS) OFFSET 0000 DEBUG LENGUAJE ENSAMBLADOR mov ax, @DATA mov ds, ax mov dx, offset texto mov ah, 09 int 21h mov ax, 4C00h int 21h Tabla 2 28) Compare los dos códigos. ¿Dónde presentan diferencias? _______________________________________________________________________________________ 29) Para observar el contenido de la memoria donde está almacenado el programa use el comando “D”. Debe observa información similar a la que se presenta en la Tabla 3. Microprocesadores. Guía 8 5 Tabla 3 30) Note que observa tres bloque de información: Las direcciones en formato segmento:desplazamiento, Los datos en formato hexadecimal y los mismos datos en formato ASCII. 31) Identifique las direcciones donde comienzan y terminan los segmentos de código y datos, tanto en formato segmento:desplazamiento como EN FORMATO absoluto. SEGMENTO INICIO CODIGO FIN INICIO DATOS FIN DIREC SEG:OFFSET DIRECCION ABSOLUTA 32) Observe el contenido de los registros. 33) Ejecute las primera dos instrucciones. ¿Qué función cumplen estas instrucciones? __________________________________________________________________________________________ __________________________________________________________________________________________ 34) Ejecute las próximas dos instrucciones. ¿Qué función cumplen estas instrucciones? __________________________________________________________________________________________ __________________________________________________________________________________________ 35) Tomando en cuenta la información de primera y tercera instrucción. ¿A partir de qué dirección está ubicado el segmento de datos? __________________________________________________________________________________________ __________________________________________________________________________________________ 6 Microprocesadores. Guía 8 36) Ejecute la interrupción. ¿Cómo sabe el programa donde termina la cadena? __________________________________________________________________________________________ 37) Observe el siguiente código ASM, analizando su estructura. 38) Digite y convierta en archivo ejecutable el siguiente programa: .model small .code mov ax, @data mov ds, ax push ds pop es lea dx, text_1 call prinstr lea dx, text_2 call prinstr mov ah, 0Ah lea dx, mayuscula int 21h xor ch, ch lea si, mayuscula inc si inc si mov cl,mayuscula[1] lea di, minuscula inc di inc di cld ETIQ_1: lodsb add al, 20h stosb loop ETIQ_1 push si pop di mov al, 24h stosb lea dx, text_3 call prinstr lea dx, mayuscula inc dx inc dx call prinstr lea dx, text_4 call prinstr lea dx, minuscula inc dx inc dx call prinstr FIN: mov ax, 4C00h int 21h ;---------PROCEDIMIENTO-----------------------prinstr PROC NEAR mov ah, 09 int 21h ret prinstr ENDP .data mayuscula DB 16,0,16 dup ('$') minuscula DB 16,0,16 dup ('$') text_1 DB 13,10,'Bienvenidos al programa de cadenas',13,10,'$' text_2 DB 'Digite su primer nombre MAYUSCULA',13,10,'(max 15 caracteres): $' text_3 DB 13,10,'Usted digito: $' text_4 DB 13,10,'Cadena resultante: $' .stack end 39) Ejecute el programa siguiendo las instrucciones que se le proporcionaron hasta terminar. 40) Ejecute nuevamente el programa escribiendo los siguientes datos: en Microprocesadores. Guía 8 7 a. Su primer nombre y apellido en mayúsculas, separados por un espacio. b. Su nombre completo en mayúscula. La idea es escribir un texto de más de 15 caracteres. c. Su primer nombre en minúscula Describa sus observaciones para cada caso __________________________________________________________________________________________ ____________________________________________________________________________________ __________________________________________________________________________________________ Análisis de Resultados a) Primer programa. 1. ¿Cuál es la dirección segmento:desplazamiento de la primera instrucción en el segmento de código?, ¿cuál es la dirección absoluta? b) Segundo programa. 1. ¿Qué relación hay entre las direcciones y la etiqueta LAZO? 2. Cuando ejecutó el programa paso a paso ¿Qué relación hay entre el contenido de IP y las instrucciones que se ejecutan? c) Tercer programa. 1. ¿Cómo procesa los espacios en blanco? 2. ¿Cómo reacciona el programa si se intenta escribir una cadena mayor que la indicada en el texto? 3. Si se llenara completamente la cadena “mayúscula” ¿cuántos caracteres contendría? Investigación Complementaria 1. Usando los mismos procedimientos de la práctica, estudie detenidamente el último programa, analizando los procesos que se suceden al manipular las cadenas, como se toman del teclado y como se logran las impresiones. 2. Investigue como se puede escribir un archivo tipo COM, directamente desde el DEBUG. Bibliografía • Rojas A. Ensamblador Básico, primera Edición Computec, México, 1993 Biblioteca UDB: 001.6404 R471 1993 8 Microprocesadores. Guía 8 Hoja de cotejo: 8 Guía 8: DEBUG Y USO DE CADENAS. Puesto No: Alumno: GL: Docente: Fecha: EVALUACION % CONOCIMIENTO 35 1-4 Conocimiento deficiente de los siguientes fundamentos teóricos: -Función 0A de la int 21h -Comandos básicos del DEBUG. 5-7 8-10 Conocimiento y explicación incompleta de los fundamentos teóricos. Conocimiento completo y explicación clara de los fundamentos teóricos. Cumple sólo con dos de los criterios. Cumple con los tres criterios. -Hace uso adecuado de los recursos de manera segura, pero es desordenado. -Hace un manejo responsable y adecuado de los recursos de acuerdo a pautas de seguridad e higiene. -Instrucciones básicas del manejo de cadenas. APLICACIÓN DEL CONOCIMIENTO 60 Cumple sólo con uno o ninguno de los siguientes criterios: -Sabe interpretar la información del DEBUG. -Aplica las instrucciones básicas del manejo de cadenas. -Aplica la opción 0Ah de la INT 21h. 5 ACTITUD TOTAL 100 -Es ordenado pero no hace uso adecuado de los recursos. Nota