Microprocesadores. Guía 4 1 Facultad: Ingeniería. Escuela: Electrónica. Asignatura: Microprocesadores. Lugar de ejecución: Microprocesadores (Edificio 3, 2da planta). INSTRUCCIONES ARITMÉTICAS. Objetivos específicos • • • Observar el uso de algunas instrucciones aritméticas y las banderas que son afectadas. Utilizar correctamente los registros del microprocesador al realizar operaciones aritméticas, tanto de 8 bits como de 16 bits. Utilizar el dispositivo virtual Led_Display del EMU8086 para ver mejor los resultados de las operaciones. Materiales y equipo • 1 Computadora con el programa EMU8086. Procedimiento 1) Abra el EMU8086 2) Analice el PRIMER PROGRAMA, note que al inicio se declaran los datos. ¿Con qué datos se realizarán las operaciones y cuáles serán los resultados, tanto en decimal como en hexadecimal? ¿Dónde se almacena el resultado al final de las operaciones? _________________________________________________________________________________ _________________________________________________________________________________ 2 Microprocesadores. Guía 4 PRIMER PROGRAMA .model small .stack .data byte1 equ 125 byte2 equ 150 word1 equ 20A3h word2 equ 5938h .code mov ax,@data mov ds,ax ;---------primer bloque---------------;-------------------------------------------mov dx,199 ;carga la dirección del puerto donde está el display mov ax,0 ; sacamos un 0 por el puerto para limpiarlo out dx,ax mov al, byte1 ;suma de 2 números de 1 byte add al, byte2 mov [011Eh], al ;guarda el resultado out dx,al; saca el resultado por el puerto para verlo en el display ;en formato decimal ;-----Fin del primer bloque---------;-------------------------------------------;------Segundo bloque---------------mov ax, word1 ;suma de 2 numeros de 2 byte add ax, word2 mov [011Fh], ax ; guarda el resultado mov dx,199 ;carga la direccion del puerto donde está el display out dx,ax; saca el resultado por el puerto para verlo en el display ; en formato decimal ;--------Fin del segundo bloque-----------mov ax,4c00H ;termina el programa int 21h End 3) Digite y emule el programa. 4) Ejecute las primeras dos instrucciones. 5) Antes de ejecutar las otras instrucciones tome nota del contenido almacenado en las direcciones 011Eh, 011Fh y 0120h, para ello en la ventana “emulator” presione el botón “aux” y ahí selecciones la opción “memory”, en el espacio de dirección escriba el valor que indica el registro data segment (DS) seguido de dos puntos y la dirección 011Eh anote ese valor en la Tabla 1, haga lo mismo para las otras direcciones que pide la tabla. 6) Anote tambien el estado de las banderas y seleccione del menú “VIRTUAL DEVICES” la opción “LED_DISPLAY.EXE” para ver el valor del display al inicio. Microprocesadores. Guía 4 3 7) Ejecute paso a paso el programa, anotando la información solicitada en la Tabla 1, observando el resultado de las operaciones y el estado de las banderas DIRECCIONES 0720:Desplazamiento 011Eh 011Fh 0120h Display MOMENTO BANDERAS O S Z A P C Inicio Al final del primer bloque Al final del segundo bloque Tabla 1 ¿Concuerdan los resultados con lo que usted esperaba? _______ 8) Cambie los datos con los siguientes valores: byte1 byte2 word1 word2 equ 9Dh equ 83h equ 5938 equ -5938 9) Corra a pasos el programa observando la ejecución de cada instrucción y el estado de las banderas. ¿Cuál fue el resultado de las operaciones?, ¿Cómo reaccionaron las banderas? y ¿por qué así y no de otra manera? ____________________________________________________________________________________ ____________________________________________________________________________________ 10) Analice el SEGUNDO PROGRAMA¿qué registros están involucrados en el proceso? ¿qué datos se van a operar? ¿dónde se almacenará el resultado? (vea el flujograma) 4 Microprocesadores. Guía 4 SEGUNDO PROGRAMA .model small .stack .data .code mov ax,@data mov ds,ax mov ax,0 mov dx,199 out dx,ax mov ah, 0AAh ;multiplica 2 números de 1 byte mov al, 0FFh mov cl, 06 ;dato a modificar mul cl mov [011Eh],ax mov dx,199 out dx,ax mov ax,4c00H ;termina el programa int 21h End 11) Digite y emule el SEGUNDO PROGRAMA 12) Ejecute paso a paso, analizando el proceso. Anote los resultados en la primera fila de la Tabla 3. ¿Coinciden los resultados con lo que esperaba? ____________________________________________________________________________________ Instrucción MUL Dato Multiplicando Multiplicador Producto 06 -06 IMUL 06 -06 Tabla3 13) Modifique el dato de CL colocando -06 y ejecute nuevamente el programa. Anote los resultados en la Tabla 3. 14) Cambien la instrucción MUL por IMUL y el dato -06 por 06. Microprocesadores. Guía 4 5 15) Ejecute el programa y anote los resultados. 16) Cambie el dato por -06, ejecute nuevamente y anote los resultados 17) Analice el TERCER PROGRAMA¿qué registros están involucrados en el proceso? ¿qué datos se van a operar? ¿dónde se almacenará el resultado? (vea el flujograma) 18) Al igual que hizo en el segundo programa vaya cambiando el dato y la operación como se pide en la Tabla 4. TERCER PROGRAMA .model small .stack .data .code mov ax,@data mov ds,ax mov ax,0 mov al,123 ;divide 2 numeros de 1 byte mov cl, 05 ;dato a modificar div cl mov [011Eh],al mov ax,0 mov dx,199 out dx,ax mov al,[011Eh] out dx,al mov ax,4c00H ;termina el programa int 21h End Instrucción DIV Dato Dividendo Divisor Cociente 05 -05 IDIV 05 -05 Tabla 4 19) Cambie el dato por 00h y ejecute el programa ¿qué ocurrió? ______ Residuo 6 Microprocesadores. Guía 4 Análisis de Resultados a) Primer programa 1. Tomando en cuenta los datos particulares de cada operación explique el porqué de la activación o desactivación de las banderas O, S, Z, C y A. 2. Modifique el código fuente sustituyendo las instrucciones ADD por ADC y emule nuevamente el programa, repita los pasos del 3 al 7 y compare con los resultados obtenidos con los obtenidos con ADD ¿Qué resultados se modificaron?, ¿qué parte no?, ¿por qué cree que se dieron esos cambios específicos en los resultados? b) Segundo programa 1. ¿En general cómo se especifica en una instrucción de multiplicación que se desea trabajar con números de un byte? 2. ¿En qué registros se almacenan los datos y el resultado de una multiplicación de un byte? 3. Explique porque los resultados de las operaciones cambiaron al usar IMUL en lugar de MUL. Utilice cálculos para fundamentar su explicación. c) Tercer programa 1. ¿En general cómo se especifica en una instrucción de división que se desea trabajar con números de un byte? 2. ¿En qué registros se almacenan los datos y el resultado de una división de un byte? 3. Explique porque los resultados de las operaciones cambiaron al usar IDIV en lugar de DIV. Utilice cálculos para fundamentar su explicación. 4. ¿Por qué la última modificación del programa generó un error en la ejecución? Microprocesadores. Guía 4 7 Investigación Complementaria • • • • • Investigue las instrucciones para la resta SUB y SBB Compare el funcionamiento de la directiva EQU con DB. Investigue como se puede realizar una multiplicación de dos números de dos bytes cada uno. Investigue como se puede realizar una división de dos números de dos bytes cada uno. Diseñe dos flujogramas que representen el proceso para sumar dos números de 4 bytes cada uno, en el primero se trabajará con registros de 16 bits y en el segundo de 8 bits. 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éxico DF, 1997. Biblioteca UDB 001.6404 B847 1997 • Godfrey, T. Lenguaje Ensamblador para Microcomputadoras IBM : Para Principiantes y Avanzados, Primera edición Prentice Hall, México DF, 1991 Biblioteca UDB 005.136 G577 1991 • 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 8 Microprocesadores. Guía 4 Hoja de cotejo: 4 Guía 4: INSTRUCCIONES ARITMÉTICAS. Puesto No: Alumno: GL: Docente: Fecha: EVALUACION % CONOCIMIENTO 35 APLICACIÓN DEL CONOCIMIENTO 60 ACTITUD 5 TOTAL 100 1-4 Conocimiento deficiente de los siguientes fundamentos teóricos: -Instrucciones para realizar las operaciones de suma, multiplicación y división. -Registros del microprocesador con los que trabajan las instrucciones aritméticas. Cumple sólo con uno o ninguno de los siguientes criterios: -Sabe que banderas se activaran según la instrucción a ejecutarse -Interpreta los resultados de las instrucciones aritméticas. -Utiliza las instrucciones aritméticas tanto para 8 como 16 bits. -Es ordenado pero no hace uso adecuado de los recursos. 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. Nota