Está en la página 1de 6

Guía

2 1

Facultad: Estudios Tecnologicos.


Instrucciones Lógicas y Registro de Escuela: Electrónica
Banderas Asignatura: Microprocesadores

Objetivo General

Analizar la forma en que se ejecutan algunas instrucciones lógicas observando como


éstas afectan al registro de estados.

Objetivos específicos

 Examinar detenidamente la manera en que se ejecutan algunas instrucciones


lógicas
 Analizar la manera en que se modifica el registro de banderas, dependiendo del
tipo de operación y los datos que operen.
 Identificar las características propias de las máscaras que se utilizan junto con
las instrucciones lógicas.

Materiales y equipos

 Guía 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 guía de laboratorio se declararán datos de diferentes maneras, no los


pierda de vista.
Guía
2 2

PRIMER PROGRAMA
NOTA: en este programa se están usando la instrucción con registros de 8 y
16 bits, así como las directivas DB y DW.
#make_COM#
INICIO org 100h
INICIO:

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

DX = dato2 mov cx, dato2 ; segunda parte


BX = mascara2
mov bx, masca2

CX =CX & BX and cx, bx

CX =CX & CX and cx, cx


ret
dato1 db 9Ah
FIN dato2 dw 02CC2h
mascara1 db 0F0h
mascara2 dw 0F0Fh
END

4) Compile y ejecute el programa paso a paso, monitoreando el registro de


estados (FLAGS) luego de cada operación AND. Anote los datos con los que se
opera, los resultados y las banderas que se activan.

__________________________________________________________________

__________________________________________________________________

5) Modifique las líneas que contienen la instrucción AND, sustituyéndola por la


instrucción OR. Repita desde el paso 4.

__________________________________________________________________

__________________________________________________________________

6) Sustituya ahora por la instrucción XOR y repita el paso 4.

__________________________________________________________________

__________________________________________________________________

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.

__________________________________________________________________
Guía
2 3

__________________________________________________________________

SEGUNDO PROGRAMA
#make_COM#
INICIO org 100h
INICIO:

DL = 1Ah
AX = 02CC2h
mov dl, 1Ah ;primer bloque
mov ax, 02CC2h

DL = DL XOR AH xor dl, ah

DL = DL XOR 0FFh
xor dl, 0FFh

DL = 1Ah mov dl, 1Ah ;segundo bloque


AX = 02CC2h mov ax, 2CC2h

DL = DL XOR AH xor dl, ah

DL = NOT DL not dl

ret
FIN
END

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.

__________________________________________________________________

__________________________________________________________________

10) Modifique la tercera y séptima instrucción del programa escribiendo

xor ah, dl
11) Repita los pasos 8 y 9 ¿qué diferencias nota?

__________________________________________________________________

__________________________________________________________________
Guía
2 4

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


activan del resultado de una instrucción. Pero también algunas banderas se
pueden activar o desactivar mediante instrucciones específicas, sin tomar en
cuenta el resultado de alguna operación. Como un ejemplo inserte la siguiente
modificación 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
sti ;Activa la bandera I
xor dl, ah

13) Ejecute paso a paso el programa monitoreando simultáneamente el estado de


las banderas, note como se activan o desactivan.
¿Cuáles son sus conclusiones?

__________________________________________________________________

__________________________________________________________________

__________________________________________________________________

14) Digite el TERCER PROGRAMA:

15) Ejecute solo las primeras dos instrucciones, monitoreando las banderas ¿Cuáles
se activaron?, ¿cuál fue el resultado de la operación? ¿cómo interpreta el
resultado?

__________________________________________________________________

__________________________________________________________________
Guía
2 5

TERCER PROGRAMA
#make_COM#
INICIO
org 100h
INICIO:
AH = 0B9h
mov ah, 0B9h ;En binario 1011_1001

AH = AH AND 40h
and ah, 40h ;Mascara 0100_0000
;Si Z=1 implica que D6=0
AL = AL OR 01
or ah, 01 ;borra las banderas activas

AH = 0B9h
mov ah, 0B9h

AH = AH TEST 40h
test ah, 40h

FIN ret
END

16) Ejecute hasta la instrucción 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, ¿cómo se modificó el resultado del programa? Anote su respuesta.

__________________________________________________________________

__________________________________________________________________

__________________________________________________________________

Análisis de resultados

a) Primer programa.
¿Qué objetivos se buscan al usar la mascara1 (F0h) con las tres diferentes
instrucciones lógicas?
Cuando se ejecuta la primera instrucción AND el bit D7 termina en estado alto y se
activa la bandera S, en la segunda instrucción AND también termina en alto, pero esta
vez no se activa la bandera ¿por qué?
Guía
2 6

Cuando se ejecuta la tercera instrucción lógica, ya sea AND u OR, las banderas
reaccionan de forma similar. Pero cuando se ejecuta con la instrucción XOR no ¿por
qué ocurre eso?
En el programa se declaran datos para hacer las operaciones ¿dónde 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 idénticos, 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 ¿cuáles fueron los cambios específicos que observo?

c) Tercer programa.
¿Cuál es la diferencia fundamental que noto a comparar las instrucciones AND y TEST?
¿Qué relación existe entre los bit que deseamos probar y el valor específico de la
mascara seleccionada?

Tarea complementaria

En el programa se declaran algunos datos que serán operados ¿dónde 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

Bibliografía

Brey, B. B. Los Microprocesadores Intel. 8086 / 8088, 80186, 80286, 80386 y 80486.
Arquitectura, programación e interfaces, Prentice Hall, México DF, 19953
Biblioteca UDB 001.6404 B847 1997

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/a
sm_tutorial_06.html

También podría gustarte