Anda di halaman 1dari 20

Guía

2 1

Instrucciones Lógicas y
Facultad: Estudios Tecnologicos.
Registro de Banderas Escuela: Electrónica
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 datos de diferentes maneras, no los pierda de vista.


laboratorio se declararán
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 = mov dl, dato1 ;primera parte
mascara1 mov ah, masca1

DL =DL & AH and dl, ah

mov cx, dato2 ; segunda parte


DX = dato2
BX = mov bx, masca2
mascara2
and cx, bx
CX =CX & BX
and cx, cx
CX =CX & CX
ret
dato1 db 9Ah
dato2 dw 02CC2h
FIN 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.

and dl, ah:


and cx, bx:

and cx, cx:


5) Modifique las líneas que contienen la instrucción AND,
sustituyéndola por la instrucción OR. Repita desde el paso
4.
or dl, ah:

or cx, bx:

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

and dl, ah:

and cx, bx:

and cx, cx:


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

11xor ah, dl
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

11) Repita los pasos 8 y 9 ¿qué diferencias nota?:


 Nos podemos dar cuenta que en el primer bloque se activo la bandera F y mediante las operaciones XOR se
activaron las banderas PF y IF y en las de instrucciones de movimiento se activaron las banderas PF IF con las
instrucciones xor la activación de las banderas depende del resultado fina de la operación
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.
 Nos podemos dar cuenta que en el primer bloque se activo la bandera F y
mediante las operaciones XOR se activaron las banderas PF y IF y en las de
instrucciones de movimiento se activaron las banderas PF IF con las
instrucciones xor la activación de las banderas depende del resultado fina de la
operación
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?

16)Ejecute hasta la instrucción TEST y conteste otra vez las preguntas del
punto 15 del procedimiento.

 En la segunda instrucción se mantiene activa IF.


 Esta vez solo se activa la bandera IF ya que solo se ejecutó las primeras dos
instrucciones, ya que al usar instrucciones MOV o AND no se producen variaciones
en las banderas.
 En la tercera instrucción (OR), se activan las banderas PF y ZF.

 En la cuarta instrucción (MOV), se desactivan ZF y PF.

 En TEST AH, se mantiene activa IF.

 Como se pudo ver al ejecutar la instrucción OR se activan 3 banderas las cuales


son: ZF, PF y IF, sin embargo al ejecutar nuevamente la instrucción MOV se
desactivan ZF y PF, por lo que solo que activa la bandera IF.
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.
 En la instrucción TEST, se mantienen activas PF y IF es decir que mantienen 1.
 Notamos que, al igual que en el anterior caso se mantiene activa solo la bandera IF hasta
la 3era instrucción y en la 2 instrucción MOV se activa la bandera PF, y eso se percibe ya
que el 1 está presente en aquella bandera
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é?

 Porque las operaciones lógicas que se van realizando, hacen que cambien los flags Al
modificar el programa, tanto los resultados como las banderas terminaron en distintos
estados y los valores de las operaciones se almacenan al registro que les corresponde.

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?

 AND realiza una comparación la cual modifica y almacena el resultado en un registro,


también la bandera respectiva se activa o desactiva. TEST realiza la operación lógica
"AND" de dos operandos, pero NO afecta a ninguno de ellos, SÓLO afecta al registro de estado.
Afecta a todos los bits del registro de estado, de la misma manera que la instrucción
AND.

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 máscara seleccionada?

 La máscara hace posible que cambiemos muchas instrucciones, sin embargo el


bit se asigna por cada instrucción.

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.
3
Arquitectura, programación e interfaces, Prentice Hall, México DF, 1995
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

Anda mungkin juga menyukai