Sei sulla pagina 1di 8

Microprocesadores.

Gua 5 1

INSTRUCCIONES DE CONTROL DE FLUJO Y USOS DE LA


PILA.

Objetivos especficos

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 resolucin de problemas simples como la
realizacin de un lazo repetitivo y la comparacin entre dos datos.
Mostrar la manera de guardar y extraer informacin de la PILA.
Usar la PILA como un dispositivo de almacenamiento temporal de datos.
Analizar la relacin 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, lnea a lnea, el programa desensamblado en
la columna respectiva as como se muestra en el ejemplo.
Cules son las direcciones de las etiquetas INICIO y BUCLE?

____________________________________________________________________________________
2 Microprocesadores. Gua 5

PRIMER PROGRAMA

Programa
Cdigo Fuente
desensamblado

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

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 ubicacin (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 DIRECCIONES de mem


Direccin
Antes
Despus
Tabla 1
Microprocesadores. Gua 5 3

6) Ejecute nuevamente el programa, contando las veces que se ejecuta la instruccin mov mem[bx],
al y monitoreando el registro de banderas, sobre todo antes y despus de la operacin de
decremento
Cuntas veces se realiz la instruccin MOV? ______
Qu caus el rompimiento del lazo de repeticin? _______________________

7) Modifique el cdigo de manera que los cambios solo afecten a los elementos de la cadena mem.
Cuando lo logre notifquelo 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 estn 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
_______
Cul es la instruccin que hace el salto condicional? _________
Qu caus el rompimiento del lazo de repeticin? _______________________

SEGUNDO PROGRAMA

Cdigo 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. Gua 5

xor si,si ;ndice


INICIO
BUCLE:
mov al,fuente[si] ;Lee
CX = 0010

mov [destino+si],al ;Escribe


SI = SI XOR SI

inc si

AL = Fuente[SI] loop BUCLE ;Repite si CX no es 00h


;El decremento de CX esta
Destino[SI] = AL ;implcito en la instruccin
FIN:
mov ax,4C00H
SI = SI + 1
int 21h

CX = CX - 1
end

NO
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 botn 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 direccin indicada en la PILA con la combinacin Segmento-Desplazamiento de


SS:SP? ______
Microprocesadores. Gua 5 5

Figura 5.1

18) vea tambin el estado de las banderas.

19) Ejecute las primeras cuatro instrucciones.

20) Ejecute la quinta instruccin qu cambios observ en los registros y la PILA?

____________________________________________________________________________________

21) Ejecute la sexta instruccin qu cambios observ?

____________________________________________________________________________________

22) Las tres instrucciones siguientes realizarn una operacin aritmtica

Cul ser el resultado de la operacin? ______________


Cul ser el estado de las banderas al ejecutarse la operacin? ____________
En qu direccin se almacena el resultado? ________

23) Ejecute la siguiente instruccin (pushf)


Qu dato se almacen en la PILA?_______
Cambi SP? ______

24) Ejecute hasta antes de hacer la comparacin


Cul ser el estado de las banderas? __________________________

25) Verifique su hiptesis realizando la instruccin.


6 Microprocesadores. Gua 5

TERCER PROGRAMA

Cdigo 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. Gua 5 7

27) Verifique su hiptesis realizando la instruccin.


Se almacenaron datos en la PILA al ejecutar el salto? _______

28) Ahora se repetir el bloque aritmtico. Responda nuevamente a las preguntas del punto 22, para la
situacin actual

____________________________________________________________________________________

____________________________________________________________________________________

29) Compruebe su prediccin.

30) Ejecute la instruccin PUSHF qu dato envo a la PILA? _________

31) El siguiente bloque involucra al salto condicional otra vez saltar de nuevo? Por qu?
____________________________________________________________________________________

____________________________________________________________________________________

32) Comprubelo.

33) Contine el proceso hasta el final


Cul es el resultado de la operacin? ________________

Qu proceso realiza el programa? _____________________

Anlisis de Resultados

a) Primer programa.

1. Cuntos datos contiene la cadena Mem?


2. Qu indica la directiva DUP?
3. Dnde se defini el nmero de veces que se ejecutara el lazo?
4. Si en el cdigo inicial se cambia la segunda instruccin (mov bx,000Ah) para cargar un 0000h
se ejecutar el salto o no?
5. Presente la modificacin al programa que se le pedia en el paso 7.

b) Segundo programa.

1. Cul es la condicin que se evala para realizar el salto o no?


2. Si se cambia el dato inicial de CX por 00h qu ocurrira?

c) Tercer programa.
1. Qu funcin cumple la instruccin CLC?
8 Microprocesadores. Gua 5

2. Qu informacin se gurda en la PILA al ejecutar PUSHF?


3. Qu relacin hay entre los datos que se al maceran en la PILA y el estado de las banderas,
durante la ejecucin del programa?
4. Por qu es importante para el proceso del programa almacenar datos en la PILA?
5. Qu relacin entre el dato en SP y las instrucciones PUSHF y POPF?
6. Qu ocurrira si las instrucciones PUSHF y POPF del programa se cambian por PUSH y POP
respectivamente?
7. Cmo 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 informacin de la PILA?

Investigacin 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 funcin del
tercer programa, pero sin saltos.

Bibliografa

Brey, B. B. Los Microprocesadores Intel. 8086 / 8088, 80186, 80286, 80386 y 80486.
Arquitectura, programacin e interfaces, tercera edicin Prentice Hall, Mxico DF, 1997.
Biblioteca UDB 001.6404 B847 1997

Puede consultar el material en lnea 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

Potrebbero piacerti anche