Microprocesadores. Guía 3 1 Facultad: Ingeniería. Escuela: Electrónica. Asignatura: Microprocesadores. Lugar de ejecución: Microprocesadores (Edificio 3, 2da planta). INSTRUCCIONES LÓGICAS Y EL REGISTRO DE BANDERAS. Objetivos específicos • • • Examinar detenidamente la manera en que se ejecutan algunas instrucciones lógicas Analizar la manera en que se modifica el registro de banderas, dependiendo del tipo de operación y los datos que operen. Identificar las características propias de las máscaras que se utilizan junto con las instrucciones lógicas. Materiales y equipo • 1 Computadora con el programa EMU8086. Procedimiento 1) Abra el EMU 8086 y digite el PRIMER PROGRAMA PRIMER PROGRAMA .model small .stack .data dato1 db 9Ah ; Dato 8 bits dato2 dw 2CC2h ; Dato 16 bits mascara1 db 0F0h ; Máscara 8 bits mascara2 dw 0FF0h ; Máscara 16 bits .code mov ax,@data mov ds,ax dl, dato1 ;primera parte mov ah, mascara1 and dl, ah mov cx, dato2 ; segunda parte mov bx, mascara2 2 Microprocesadores. Guía 3 and cx, bx and cx, cx mov ax, 4c00h ;fin del programa int 21h END 2) Compile y ejecute el programa paso a paso, monitoreando el registro de banderas (FLAGS) luego de cada operación AND. Anote los datos con los que se opera, los resultados y las banderas que se activan. ____________________________________________________________________________________ ____________________________________________________________________________________ 3) Modifique las líneas que contienen la instrucción AND, sustituyéndola por la instrucción OR. Repita desde el paso 2. ____________________________________________________________________________________ ____________________________________________________________________________________ 4) Sustituya ahora por la instrucción XOR y repita el paso 2. ____________________________________________________________________________________ ____________________________________________________________________________________ 5) Digite el SEGUNDO PROGRAMA, que está dividido en dos partes. 6) Ejecute paso a paso el primer bloque. Anote los datos con los que se realizan las operaciones y los resultados de las mismas, los registros que intervienen en el proceso y el estado de las banderas en cada paso del proceso. ____________________________________________________________________________________ ____________________________________________________________________________________ Microprocesadores. Guía 3 3 SEGUNDO PROGRAMA .model small .stack .data .code mov ax,@data mov ds,ax mov dl, 1Ah mov ax, 2CC2h xor dl, ah xor dl, 0FFh mov dl, 1Ah mov ax, 2CC2h xor dl, ah ;primer bloque ;segundo bloque not dl mov ax, 4c00h ;fin del programa int 21h End 7) Ejecute ahora el segundo bloque y anote los datos con los que se opera, los resultados y las banderas que se activan durante el proceso. ____________________________________________________________________________________ ____________________________________________________________________________________ 8) Como se ha visto en los programas anteriores, algunas de las banderas se activan del resultado de una instrucción. Pero también algunas banderas se pueden activar o desactivar mediante instrucciones específicas, sin tomar en cuenta el resultado de alguna operación. Como un ejemplo inserte la siguiente modificación en el SEGUNDO PROGRAMA. 4 Microprocesadores. Guía 3 mov dl, 1Ah mov ax, 2CC2h xor dl, ah xor dl, 0FFh stc ;Activa la bandera C std ;Activa la bandera D cli ;Desactiva la bandera I mov dl, 1Ah mov ax, 2CC2h clc ;Desactiva la bandera C cld ;Desactiva la bandera D sti ;Activa la bandera I xor dl, ah 9) Ejecute paso a paso el programa monitoreando simultáneamente el estado de las banderas, note como se activan o desactivan. ¿Cuáles son sus conclusiones? ____________________________________________________________________________________ ____________________________________________________________________________________ ____________________________________________________________________________________ 10) Digite el TERCER PROGRAMA. 11) Ejecute solo las primeras cuatro instrucciones, monitoreando las banderas ¿Cuáles se activaron?, ¿cuál fue el resultado de la operación? ¿cómo interpreta el resultado? ____________________________________________________________________________________ ____________________________________________________________________________________ 12) Ejecute hasta la instrucción TEST y conteste otra vez las preguntas del punto 11 del procedimiento. ____________________________________________________________________________________ ____________________________________________________________________________________ Microprocesadores. Guía 3 5 TERCER PROGRAMA .model small .stack .data .code mov ax,@data mov ds,ax mov ah, 0B9h ;En binario 1011_1001 and ah, 40h ;Mascara 0100_0000 ;Si Z=1 implica que D6=0 or ah, 01 ;borra las banderas activas mov ah, 0B9h test ah, 40h mov ax, 4c00h ;fin del programa int 21h End Análisis de Resultados a) Primer programa. ¿Qué objetivos se buscan al usar la mascara1 (F0h) con las tres diferentes instrucciones lógicas? Cuando se ejecuta la primera instrucción AND el bit 7 del resultado termina en estado alto y se activa la bandera S, en la segunda instrucción AND también termina en alto, pero esta vez no se activa la bandera ¿por qué? Cuando se ejecuta la tercera instrucción lógica, ya sea AND u OR, las banderas reaccionan de forma similar. Pero cuando se ejecuta con la instrucción XOR no ¿por qué ocurre eso? En el programa se declaran datos para hacer las operaciones ¿dónde se guardan estos datos? b) Segundo programa. Cuando se ejecutan el primer bloque del programa el resultado se almacena en DL, lo mismo ocurre con el segundo bloque; los dos resultados son idénticos, pero el estado de las banderas no lo es ¿por qué? Al modificar el programa, tanto los resultados como las banderas terminaron en distintos estados ¿cuáles fueron los cambios específicos que observo? 6 Microprocesadores. Guía 3 c) Tercer programa. ¿Cuál es la diferencia fundamental que noto a comparar las instrucciones AND y TEST? ¿Qué relación existe entre los bit que deseamos probar y el valor específico de la máscara seleccionada? Investigación Complementaria • En el programa se declaran algunos datos que serán operados ¿dónde se almacenan estos datos? • Escriba un programa que dado un dato almacenado en AX invierta el estado de los bits impares desde el D5 hasta el D1, borre los bits pares desde el D6 hasta el D2 y coloque en 1 los bits D7 y D0 Bibliografía • Brey, B. B. Los Microprocesadores Intel. 8086 / 8088, 80186, 80286, 80386 y 80486. Arquitectura, programación e interfaces, tercera edición Prentice Hall, MéxicoDF,1997 Biblioteca UDB 001.6404 B847 1997. • Puede consultar el material en línea del EMU8086 sobre los temas de esta actividad. Se recomiendan: “Arithmetic and logic instructions ”: http://www.emu8086.com/assembly_language_tutorial_assembler_reference/asm_tutorial_06.html 7 Microprocesadores. Guía 3 Hoja de cotejo: 3 Guía 3: INSTRUCCIONES LÓGICAS Y EL REGISTRO DE BANDERAS. Puesto No: Alumno: GL: Docente: Fecha: EVALUACION % CONOCIMIENTO 35 1-4 Conocimiento deficiente de los siguientes fundamentos teóricos: -Función de las instrucciones AND, OR y XOR. 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. -Condiciones que activan las banderas (C,S,Z,D e I). APLICACIÓN DEL CONOCIMIENTO 60 Cumple sólo con uno de los siguientes criterios: -Predice los resultados de las operaciones lógicas AND, OR y XOR. -Predice la activación o no de las banderas. -Identifica la función de las instrucciones especiales para modificar banderas. 5 ACTITUD TOTAL 100 -Es ordenado pero no hace uso adecuado de los recursos. Nota