Guia 4 PDF

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 7

Gua

4 1

Instrucciones de Control de Flujo y Usos Facultad: Estudios Tecnologicos.


de la Pila Escuela: Electrnica
Asignatura: Microprocesadores
Objetivos Generales

Analizar la forma en que se ejecutan algunas instrucciones de flujo de control y


como se relacionan con las instrucciones de comparacin.
Aplicar la seccin de memoria llamada PILA como un contenedor temporal de
informacin.

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 equipos

Gua de laboratorio
Computadora PC con el programa EMU8086

Procedimiento

1) Ejecute el programa emulador de microprocesadores EMU8086, haciendo doble


clic en el icono del escritorio.

2) Cree un nuevo documento tipo COM

3) Analice el PRIMER PROGRAMA, que se le presente y ayudado del flujo-grama y


los comentarios que explican su funcionamiento.

4) 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?

_____________________________________________________________________

5) Localice la ubicacin (direcciones) de la cadena Mem. Anote las direcciones y su


contenido en la TABLA 1.
Gua
4 2

6) Ejecute paso a paso monitoreando los cambios que se dan en Mem. Al final
anote el contenido final en TABLA 1.

Momento DIRECCIONES

Inicio
Fin
TABLA 1

7) 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? _______________________

8) Modifique el cdigo de manera que los cambios solo afecten a los elementos de
la cadena. Cuando lo logre notifquelo a su instructor.

PRIMER PROGRAMA
#make_COM# Programa
INICIO
org 100h desensamblado
INICIO:
mov al,0FFh ;Dato MOV AL, 0FFH
AL = 0FFh
BX = 000Ah mov bx,000Ah ;Contador
BUCLE:

Mem[BX] = AL
mov mem[bx],al
;copia dato
;en men
BX = BX - 1
dec bx ;Decrementa BX

NO
BX = 00h jnz Bucle
;Repite si la
SI mem ;bandera Z= 0
ret
FIN
db 10 DUP ('x') ;Inicializa 10
;espacios de
;memoria con
;carcter 78h

END Inicio

9) Emule el SEGUNDO PROGRAMA tomando nota del contenido inicial de las


cadenas Fuente y Destino y el intervalo de direcciones donde estn
almacenadas.

__________________________________________________________________

__________________________________________________________________
Gua
4 3

10) Ejecute paso a paso observando las modificaciones en las cadenas y las
banderas. No pierda de vista el registro contador CX.
11) Anote el contenido final de la cadena Destino.

__________________________________________________________________

__________________________________________________________________

12) 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
#make_COM#
org 100h
INICIO INICIO:
mov cx,10 ;Contador
CX = 0010

SI = SI XOR SI xor si,si ;ndice

BUCLE:
AL = Fuente[SI]
mov al,fuente[si] ;Lee

Destino[SI] = AL mov destin[si],al ;Escribe

SI = SI + 1 inc si

CX = CX - 1
loop BUCLE ;Repite si CX no es 00h
;El decremento de CX esta
NO ;implcito en la instruccin
CX = 00h

FIN: ret
SI

FIN fuente db 48,49,50,51,52,53,54,55,56,57 ;datos

destino db 10 DUP (4Dh) ;Destino 4Dh = M

END

13) Ahora analice el TERCER PROGRAMA, note que emplea instrucciones que
cargan y extraen datos de la PILA.

14) Digite y guarde su programa.

15) Cierre el emulador.


Gua
4 4

16) Active nuevamente el emulador. Esto se hizo para borrar la memoria del
emulador y que no interfieran los resultados anteriores con el nuevo programa.

17) Cargue el tercer programa y proceda a emularlo.

18) Visualice el contenido de la PILA (STACK) y el estado de las banderas.


Coincide la direccin indicada en la PILA con la combinacin Segmento-
Desplazamiento de SS:SP? ______

19) Ejecute las primeras dos instrucciones.

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

__________________________________________________________________
TERCER PROGRAMA
#make_COM#
INICIO
org 100h

SI = SI XOR SI
INICIO: xor si,si ;Inicializa registro

clc ;C = 0 ;Inicializa banderas


C=0

pushf ;guarda banderas en la PILA


PILA = Banderas

BUCLE:
Banderas = PILA
popf ;saca banderas de la PILA

AL = dato1[SI] mov al,dato1[si] ;carga dato en AL

AL = AL + dato2[SI] + C adc al,dato2[si] ;suma al mas dato2

resul[SI] = AL mov resul[si],al ;guarda en resultado

PILA = Banderas pushf

SI = SI + 1 inc si ;incrementa SI

cmp si, 02
SI
jc BUCLE ;salte si C = 1
C=1

NO
popf ;saca banderas de la PILA
Banderas = PILA

mov al,0 ;Borra AL


AL = 00h

AL = AL + ooh + C adc al,0 ;Carga el acarreo en AL

resul[SI] = AL mov Resul[si],al ;ltimo byte del resultado

FIN ret
numby dw 0002
Gua
4 5

dato1 db 0FFh, 0FFh


dato2 dB 0FFh, 0FFh
resul db 00, 00, 00
END

21) Ejecute la cuarta instruccin instrucciones qu cambios observ?

__________________________________________________________________

22) El bloque de instrucciones siguiente realizar 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


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.

26) Antes de ejecutar JC Se dar el salto o no? __________

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? ______________________


Gua
4 6

34) Modifique el programa para que opere los siguientes datos y verifique su
funcionamiento.

a) 1050h + 3020h
b) EDCB + 2010h
c) 2590h + F550h

Anlisis de resultados

a) Primer programa.

Por qu la Instruccin mov Mem[bx], al es desensamblada como la instruccin


MOV [BX] + 0010D, AL?
Cuntos datos contiene la cadena Mem?
Qu indica la directiva DUP?
Dnde se defini el nmero de veces que se ejecutara el lazo?
Si en el cdigo inicial se cambia la segunda instruccin (mov bx,000Ah) para cargar
un 0000h el salto se ejecutara inmediatamente?

b) Segundo programa.

Cul es la bandera que se evala para realizar el salto?


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

c) Tercer programa.

Qu funcin cumple la instruccin CLC?


Qu informacin se gurda en la PILA al ejecutar PUSHF?
Qu relacin hay entre los datos que se al maceran en la PILA y el estado de las
banderas, durante la ejecucin del programa?
Por qu es importante para el proceso del programa almacenar datos en la PILA?
Qu relacin entre el dato en SP y las instrucciones PUSHF y POPF?
Qu ocurrira si las instrucciones PUSHF y POPF del programa se cambian por PUSH y
POP respectivamente?
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.
Al realizar un salto se almacena o extrae informacin de la PILA?
Gua
4 7

Investigacin complementaria

Analice el siguiente cdigo y a continuacin compare con el PRIMER PROGRAMA


Qu conclusiones obtiene de la comparacin?

#make_COM#
INICIO org 100h
Inicio:

AL = 0FFh mov al,0FFh


BX = 000Ah
mov bx,000Ah ;Contador

bucle: jz fin ;Salta si Z = 1


Z=0

M[BX - 1] = AL mov Mem[bx-1],al

dec bx
BX = BX - 1
jmp bucle

FIN fin: ret

Mem db 10 DUP ('x') ;Zona de memoria

END Inicio

Modifique el segundo programa para que maneje las bocales en mayscula.


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, Prentice Hall, Mxico DF, 19953
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/a
sm_tutorial_07.html

También podría gustarte