guia5MCP_2

December 22, 2017 | Author: Yury Limachi Cartolin | Category: Computer Program, Computer Engineering, Technology, Computing, Computer Hardware
Share Embed Donate


Short Description

Download guia5MCP_2...

Description

Microprocesadores. Guía 5

1

Facultad: Ingeniería. Escuela: Electrónica. Asignatura: Microprocesadores. Lugar de ejecución: Microprocesadores (Edificio 3, 2da planta).

INSTRUCCIONES DE CONTROL DE FLUJO Y USOS DE LA PILA. Objetivos específicos • • • • •

Analizar el uso de algunas instrucciones de control de flujo, haciendo énfasis en las condiciones (estado de las banderas) que se necesitan para realizar o no el salto. Aplicar algunas instrucciones de control de flujo en la resolución de problemas simples como la realización de un lazo repetitivo y la comparación entre dos datos. Mostrar la manera de guardar y extraer información de la PILA. Usar la PILA como un dispositivo de almacenamiento temporal de datos. Analizar la relación que hay entre la PILA y el registro puntero de pila SP.

Materiales y equipo •

1 Computadora con el programa EMU8086.

Procedimiento 1) Ejecute el programa EMU8086. 2) Analice el PRIMER PROGRAMA, ayudado del flujo-grama y los comentarios que explican su funcionamiento. 3) Digite y emule el programa. Antes de ejecutarlo copie, línea a línea, el programa desensamblado en la columna respectiva así como se muestra en el ejemplo. ¿Cuáles son las direcciones de las etiquetas INICIO y BUCLE? ____________________________________________________________________________________

2

Microprocesadores. Guía 5

PRIMER PROGRAMA Código Fuente

.model small .stack .data mem db 10 DUP ('x') ;Inicializa 10 ;espacios de ;memoria con ;caracter 78h .code inicio: mov ax, @DATA mov ds, ax mov al,0FFh ;Dato mov bx,000Ah;Contador bucle:

Programa desensamblado

. . . . . . . . MOV AX,00720H MOV DS,AX MOV AL,0FFH

mov mem[bx],al ;copia dato ;en mem dec bx ;Decrementa BX jnz BUCLE ;Repite si la ;bandera Z= 0 mov ax,4C00h int 21h end 4) Localice la ubicación (direcciones) de la cadena “mem”. Anote las direcciones y su contenido en la Tabla 1. 5) Ejecute paso a paso monitoreando los cambios que se dan en “mem”. Al final anote el contenido final en Tabla 1. Momento Dirección Antes Después

DIRECCIONES de mem

Tabla 1

Microprocesadores. Guía 5

3

6) Ejecute nuevamente el programa, contando las veces que se ejecuta la instrucción mov mem[bx], al y monitoreando el registro de banderas, sobre todo antes y después de la operación de decremento ¿Cuántas veces se realizó la instrucción MOV? ______ ¿Qué causó el rompimiento del lazo de repetición? _______________________ 7) Modifique el código de manera que los cambios solo afecten a los elementos de la cadena “mem”. Cuando lo logre notifíquelo a su docente de laboratorio. 8) Emule el SEGUNDO PROGRAMAtomando nota del contenido inicial de las cadenas “fuente” y “destino” y el intervalo de direcciones donde están almacenadas. ____________________________________________________________________________________ ____________________________________________________________________________________ 9) Ejecute paso a paso observando las modificaciones en las cadenas y las banderas. No pierda de vista el registro contador CX. 10) Anote el contenido final de la cadena “destino”. ____________________________________________________________________________________ ____________________________________________________________________________________ 11) Ejecute nuevamente el programa y cuente las veces que se almacenan datos en la cadena “destino” _______ ¿Cuál es la instrucción que hace el salto condicional? _________ ¿Qué causó el rompimiento del lazo de repetición? _______________________ SEGUNDO PROGRAMA Código Fuente .model small .stack .data fuente db 48,49,50,51,52,53,54,55,56,57 destino db 10 DUP (4Dh) ;destino 4Dh = 'M' .code inicio: mov ax, @DATA mov ds, ax mov cx,10 ;Contador

4

Microprocesadores. Guía 5

INICIO CX = 0010 SI = SI XOR SI

xor si,si ;Índice BUCLE: mov al,fuente[si]

;Lee

mov [destino+si],al

;Escribe

inc si AL = Fuente[SI]

Destino[SI] = AL

SI = SI + 1 CX = CX - 1

NO

loop BUCLE ;Repite si CX no es 00h ;El decremento de CX esta ;implícito en la instrucción FIN: mov ax,4C00H int 21h end

CX = 00h

SI

FIN 12) Ahora analice el TERCER PROGRAMA, note que emplea instrucciones que cargan y extraen datos de la PILA. 13) Digite y guarde su programa. 14) Cierre el emulador. 15) Active nuevamente el emulador. Esto se hizo para borrar la memoria del emulador y que no interfieran los resultados anteriores con el nuevo programa. 16) Cargue el tercer programa y proceda a emularlo. 17) Visualice el contenido de la PILA (STACK) dando clic en el botón “stack” , le aparecerá una ventana como la mostrada en la Figura 5.1 (el simbolo “>” indica cual es exactamente la localidad que se esta apuntando) ¿Coincide la dirección indicada en la PILA con la combinación Segmento-Desplazamiento de SS:SP? ______

Microprocesadores. Guía 5

5

Figura 5.1 18) vea también el estado de las banderas. 19) Ejecute las primeras cuatro instrucciones. 20) Ejecute la quinta instrucción ¿qué cambios observó en los registros y la PILA? ____________________________________________________________________________________ 21) Ejecute la sexta instrucción ¿qué cambios observó? ____________________________________________________________________________________ 22) Las tres instrucciones siguientes realizarán una operación aritmética ¿Cuál será el resultado de la operación? ______________ ¿Cuál será el estado de las banderas al ejecutarse la operación? ____________ ¿En qué dirección se almacena el resultado? ________ 23) Ejecute la siguiente instrucción (pushf) ¿Qué dato se almacenó en la PILA?_______ ¿Cambió SP? ______ 24) Ejecute hasta antes de hacer la comparación ¿Cuál será el estado de las banderas? __________________________ 25) Verifique su hipótesis realizando la instrucción.

6

Microprocesadores. Guía 5

TERCER PROGRAMA

Código Fuente .model small .stack .data dato1 db 0FFh, 0FFh dato2 dB 0FFh, 0FFh resul db 00, 00, 00 .code inicio: mov ax, @DATA mov ds, ax xor si,si ;Inicializa registro clc ;C = 0 ;Inicializa banderas pushf ;guarda banderas en la PILA BUCLE: popf ;saca banderas de la PILA mov al,dato1[si] ;carga dato en AL adc al,dato2[si] ;suma al mas dato2 mov resul[si],al ;guarda en resultado pushf inc si ;incrementa SI cmp si, 02 jc BUCLE ;salte si C = 1 popf ;saca banderas de la PILA mov al,0 ;Borra AL adc al,0 ;Carga el acarreo en AL mov resul[si],al ;Último byte del resultado mov ax,4C00h int 21h end 26) Antes de ejecutar JC ¿Se dará el salto o no? __________

Microprocesadores. Guía 5

7

27) Verifique su hipótesis realizando la instrucción. ¿Se almacenaron datos en la PILA al ejecutar el salto? _______ 28) Ahora se repetirá el bloque aritmético. Responda nuevamente a las preguntas del punto 22, para la situación actual ____________________________________________________________________________________ ____________________________________________________________________________________ 29) Compruebe su predicción. 30) Ejecute la instrucción PUSHF ¿qué dato envío a la PILA? _________ 31) El siguiente bloque involucra al salto condicional otra vez ¿saltará de nuevo? ¿Por qué? ____________________________________________________________________________________ ____________________________________________________________________________________ 32) Compruébelo. 33) Continúe el proceso hasta el final ¿Cuál es el resultado de la operación? ________________ ¿Qué proceso realiza el programa? _____________________

Análisis de Resultados a) Primer programa. 1. 2. 3. 4.

¿Cuántos datos contiene la cadena Mem? ¿Qué indica la directiva DUP? ¿Dónde se definió el número de veces que se ejecutaría el lazo? Si en el código inicial se cambia la segunda instrucción (mov bx,000Ah) para cargar un 0000h ¿se ejecutará el salto o no?

b) Segundo programa. 1. ¿Cuál es la condición que se evalúa para realizar el salto o no? 2. Si se cambia el dato inicial de CX por 00h ¿qué ocurriría? c) Tercer programa. 1. ¿Qué función cumple la instrucción CLC? 2. ¿Qué información se gurda en la PILA al ejecutar PUSHF?

8

Microprocesadores. Guía 5

3. ¿Qué relación hay entre los datos que se al maceran en la PILA y el estado de las banderas, durante la ejecución del programa? 4. ¿Por qué es importante para el proceso del programa almacenar datos en la PILA? 5. ¿Qué relación entre el dato en SP y las instrucciones PUSHF y POPF? 6. ¿Qué ocurriría si las instrucciones PUSHF y POPF del programa se cambian por PUSH y POP respectivamente? 7. ¿Cómo se relacionan los datos que se almacenan en la PILA y el estado de las banderas? Explique por lo menos un ejemplo que observo en su programa. 8. Al realizar un salto ¿se almacena o extrae información de la PILA?

Investigación Complementaria • •

Modifique el tercer programa para funcionar con LOOP en lugar de JC Usando las capacidades del 8086 escriba un programa que realice la misma función del tercer programa, pero sin saltos.

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



Puede consultar el material en línea del EMU8086 sobre los temas de esta actividad. Se recomiendan:“Program flow control” http://www.emu8086.com/assembly_language_tutorial_assembler_reference/asm_tutorial_07.html

9

Microprocesadores. Guía 5 Hoja de cotejo:

5

Guía 5: INSTRUCCIONES DE CONTROL DE FLUJO Y USOS DE LA PILA. Puesto No:

Alumno:

GL:

Docente:

Fecha:

EVALUACION % CONOCIMIENTO

35

1-4 Conocimiento deficiente de los siguientes fundamentos teóricos: -Banderas que provocan los saltos de las instrucciones de control de flujo y uso de la pila.

5-7 Conocimiento y explicación incompleta de los fundamentos teóricos.

8-10 Conocimiento completo y explicación clara de los fundamentos teóricos.

-Relación que hay entre la pila y el registro SP. APLICACIÓN DEL CONOCIMIENTO

60

Cumple sólo con uno o ninguno de los siguientes criterios: -Predice si el programa ejecutará o no un salto según las condición de las banderas e instrucciones. -Aplica las instrucciones de control de flujo en la resolución de problemas simples.

Cumple sólo con dos de los criterios.

Cumple con los tres criterios.

Aplica las instrucciones de uso de la pila en la resolución de problemas simples. 5

ACTITUD

TOTAL

100

-Es ordenado pero no hace uso adecuado de los recursos.

-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

View more...

Comments

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF