Anda di halaman 1dari 29

Gua

2 1

Facultad: Estudios Tecnologicos.


Instrucciones Lgicas y Registro de Escuela: Electrnica
Banderas Asignatura: Microprocesadores

Objetivo General

Analizar la forma en que se ejecutan algunas instrucciones lgicas observando como


stas afectan al registro de estados.

Objetivos especficos

Examinar detenidamente la manera en que se ejecutan algunas instrucciones


lgicas
Analizar la manera en que se modifica el registro de banderas, dependiendo del
tipo de operacin y los datos que operen.
Identificar las caractersticas propias de las mscaras que se utilizan junto con
las instrucciones lgicas.

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) Digite el PRIMER PROGRAMA, recuerde que el encabezado es necesario para


crear un archivo COM.

En esta gua de laboratorio se declararn datos de diferentes maneras, no los


pierda de vista.
PRIMER PROGRAMA
NOTA: en este programa se estn usando la instruccin con registros de 8 y
16 bits, as como las directivas DB y DW.
#make_COM#
INICIO org 100h
INICIO:

DL = dato1
AH =
mov dl, dato1 ;primera
mascara1 parte mov ah, masca1

DL =DL &
and dl, ah
AH

mov cx, dato2 ; segunda parte


DX = mov bx, masca2
dato2 BX =
mascara2
and cx, bx

CX =CX & and cx,


BX
cx ret
dato1 db 9Ah
CX =CX &
CX dato2 dw 02CC2h
mascara db 0F0h
1 dw 0F0Fh
FIN mascara
4) Compile y ejecute el programa paso a paso, monitoreando el registro
de estados (FLAGS) luego de cada operacin AND. Anote los datos con
los que se opera, los resultados y las banderas que se activan.

observamos el comportamiento de los flags como el flag IF tiene una valor lgico de 1

podemos observar en los flags que posterior al primer AND en los flags se activan con 1 logico los
siguientes flags: SF, PF, IF
podemos analizar el siguiente AND y el comportamiento de los flags mantiene el mismo que el estado
anterior

En
el

siguiente AND observamos un cambio en los flags activando los siguientes: IF


Finalmente tenemos el comando RET posterior al ltimo And donde el flag no
vara a la instruccin anterior

5) Modifique las lneas que contienen la instruccin AND, sustituyndola


por la instruccin OR. Repita desde el paso 4.

Reemplazo de las instrucciones AND por instrucciones OR


Analizando el primer OR observamos que la activacin del nico flag es IF

En
la

instruccin siguiente al primer OR observamos la activacin de los siguientes flags: SF, PF,
IF.

En el segundo OR podemos observar como los flags se mantienen como en el estado


posterior al primer OR
Para la ejecucin del segundo OR observamos unos cambios en la activacin de los
siguientes flags, activndose los siguientes: PF, IF

En
la

instruccin posterior al ultimo OR no observamos cambio alguno en los flags

6) Sustituya ahora por la instruccin XOR y repita el paso 4.


Sustituyendo las instrucciones OR por instrucciones XOR

Analizando el primer XOR solo se activa el flag IF


En
la

instruccin posterior al primer XOR observamos un cambio en la activacin de los flags los cuales
pasan a estar activos los siguientes: PF, IF
En
el

segundo XOR observamos que los flags no presentan cambios respecto a las instrucciones anteriores
En
el

ultimo XOR observamos como varia la activacin de los flags a pasar a solamente activarse el flag IF

En
la

instruccin posterior al ultimo XOR observamos un cambio de activacin en los flags los cuales
estarn activos nicamente los siguientes: ZF, PF, IF
7) Digite el SEGUNDO PROGRAMA, que est dividido en dos partes.

8) 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.
Primera instruccin del primer bloque con solamente el flag IF activado

Segunda instruccin del primer bloque manteniendo los mismos flags activados

Activacion del primer XOR del primer bloque

Ultima instruccin del primer bloque donde tambin podemos observar la variacin de los flags
activados en esta instruccin

9) 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.
Primera instruccin del segundo bloque activando los flag SF, PF, IF

Segunda instruccin del bloque manteniendo los mismos flags activos


Primer XOR de la segunda parte del programa

Ejecucin de la instruccin NOT y cambio de activacin de los flags PF, IF

Ultima instruccin ejecutada en el segundo bloque del programa, manteniendo los mismos flags que
la instruccin ejecutada anteriormente

10) Modifique la tercera y sptima instruccin del programa escribiendo

xor ah, dl
Programa con el cambio de la instruccin indicada

11) Repita los pasos 8 y 9 qu diferencias notas?

Primer bloque
Primera instruccin del primer bloque solo activando el flag IF

Segunda instruccin del primer bloque manteniendo los mismos flags activos que la instruccin
anteriormente ejecutada
Primero XOR ejecutado del primer bloque manteniendo los mismos flags activos

Ultima instruccin ejecutada en el primer bloque, a su vez activa otros flags como son PF, IF

Segundo Bloque
Primera instruccin del segundo bloque activando los siguientes flags: SF, PF, IF

Segunda instruccin manteniendo los mismos flags activos


Ejecucin de la instruccin XOR sin presentar cambios en el flag

Instruccin NOT la cual hizo presentar un cambio en los flags desactivando el flag SF

Como podemos observar la diferencia bsica es que el cambio de flags se hace mediante
instrucciones predeterminadas en cada bloque analizado del programa

12) Como se ha visto en los programas anteriores, algunas de las banderas


se activan del resultado de una instruccin. Pero tambin algunas
banderas se pueden activar o desactivar mediante instrucciones
especficas, sin tomar en cuenta el resultado de alguna operacin.
Como un ejemplo inserte la siguiente modificacin en el SEGUNDO
PROGRAMA:
mov dl, 1Ah
mov ax,
02CC2h 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,
2CC2
clc ;Desactiva la bandera C
cld ;Desactiva la bandera D

13)Ejecute paso a paso el programa monitoreando simultneamente el estado de


las banderas, note como se activan o desactivan.
Cules son sus conclusiones?

primera instruccin ejecutada


segunda instruccin ejecutada sin presentar ningn cambio en los flags

tercera instruccin ejecutada sin cambio en los flags

Cambio de flag con la presente ejecucin de la instruccin


Activacin del flag SF con la instruccin

Activacin del flag CF como se indico en la descripcin de la instruccin

Activacin del flag DF como indica la descripcin de la instruccin ejecutada

Desactivacin del flag IF con la instruccin CLI


Desactivacin del flag CF con la instruccin CLC

Desactivacin del flag DF con la instruccin CLD

Activacin del flag IF con la instruccin STI


14)Digite el TERCER PROGRAMA:

15)Ejecute solo las primeras dos instrucciones, monitoreando las banderas Cules
se activaron?, cul fue el resultado de la operacin? cmo interpreta el
resultado?
TERCER PROGRAMA
#make_COM#
INICIO org 100h
INICIO
AH = 0B9h :
mov ah, 0B9h;En binario

AH = AH AND
40h 1011_1001 and ah, 40h ;Mascara

AL = AL OR 01 0100_0000
;Si Z=1 implica que

AH = 0B9h D6=0 or ah, 01 ;borra las

banderas activas
AH = AH TEST
40h

mov ah, 0B9h

FIN
16)Ejecute hasta la instruccin TEST y conteste otra vez las preguntas del punto 15
del procedimiento.
17)En las instrucciones 2 y 5 cambie los dos datos 40h por 08h y repita los pasos
del 14 al 16, cmo se modific el resultado del programa? Anote su respuesta.

En la presente instruccin vemos solamente un flag activo el cual es IF


De manera similar mantenemos en los mismos estados los flags

La instruccin OR nos permitio la activacin del flag PF

Mantenemos el estado de los flags por la instruccin ejecutada

Activacin del flag ZF mediante TEST

Anlisis de resultados

a) Primer programa.
Qu objetivos se buscan al usar la mascara1 (F0h) con las tres diferentes
instrucciones lgicas?
Cuando se ejecuta la primera instruccin AND el bit D7 termina en estado alto y se
activa la bandera S, en la segunda instruccin AND tambin termina en alto, pero esta
vez no se activa la bandera por qu?

Cuando se ejecuta la tercera instruccin lgica, ya sea AND u OR, las banderas
reaccionan de forma similar. Pero cuando se ejecuta con la instruccin XOR no por
qu ocurre eso?
En el programa se declaran datos para hacer las operaciones dnde se guardan estos
datos?

b) Segundo programa.
Cuando se ejecutan el primer bloque del programa el resultado se almacena en DL, lo
mismo curre con el segundo bloque; los dos resultados son idnticos, 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 cules fueron los cambios especficos que observo?

c) Tercer programa.
Cul es la diferencia fundamental que noto a comparar las instrucciones AND y TEST?
Qu relacin existe entre los bit que deseamos probar y el valor especfico de la
mascara seleccionada?

Tarea complementaria

En el programa se declaran algunos datos que sern operados dnde se almacenan


estos datos?
Investigue que son las directivas DB y DW
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

Bibliografa

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

Puede consultar el material en lnea del EMU8086 sobre los temas de esta actividad.
Se recomiendan:

Arithmetic and logic instructions ,


http://www.emu8086.com/assembly_language_tutorial_assembler_reference/a
sm_tutorial_06.html

Anda mungkin juga menyukai