Sei sulla pagina 1di 8

GUIA 2

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.

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.
Primer AND
dl
00
9A
1
0
ah
F0
00
1
1
Resultado
90
1
0
Se activaron las banderas SF y PF.

0
1
0

Segundo AND
cx
2C
C2
0
0
1
0
1
bx
0F
0F
0
0
0
0
1
Resultad
0C0
0
0
0
0
1
o
2
Se desactivaron las banderas SF y PF.
Tercer AND
cx
0C
02

1
1
1

1
0
0

0
0
0

1
0
0

0
0
0

0
1
0

1
1
1

0
1
0

1
0
0

0
0
0

1
0
0

0
0
0

0
1
0

0
1
0

1
1
1

0
1
0

cx
0C
02
0
0
1
0
1
0
Resultad
0C0
0
0
1
0
1
0
o
2
No se activ ni desactivo ninguna bandera.

1
1

0
0

1
1

0
0

1
1

0
0

0
0

0
0

1
1

0
0

5) Modifique las lneas que contienen la instruccin AND, sustituyndola por la instruccin
OR. Repita desde el paso 4.
Primer OR
dl
00
9A
1
0
ah
F0
00
1
1
Resultado
FA
1
1
Se activaron las banderas SF y PF.
Segundo OR
cx
2C
C2
0
0
1
bx
0F
0F
0
0
0
Resultad
2FAF 0
0
1
o
Se desactiva la bandera SF.

0
0
0

0
1
1

1
1
1

1
1
1

0
1
1

Tercer OR
cx
2F
AF
0
0
1
0
1
1
cx
2F
AF
0
0
1
0
1
1
Resultad
2FAF 0
0
1
0
1
1
o
No se activ ni desactivo ninguna bandera.

1
0
1

0
0
0

1
0
1

0
0
0

1
1
1

0
1
1

1
0
1

0
0
0

1
0
1

0
0
0

0
1
1

0
1
1

1
1
1

0
1
1

1
1
1

1
1
1

1
1
1

0
0
0

1
1
1

0
0
0

1
1
1

1
1
1

1
1
1

1
1
1

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


Primer XOR
dl
00
ah
F0
Resultado
Se activ PF.

9A
00
6A

Segundo XOR
cx
2C
C2
bx
0F
0F
Resultad
23C
o
D
Se desactivo PF.
Tercer XOR
cx
23
CD
cx
23
CD
Resultad
0C0
o
2
Se activaron ZF y

1
1
0

0
1
1

0
1
1

1
1
0

1
0
1

0
0
0

1
0
1

0
0
0

0
0
0

0
0
0

1
0
1

0
0
0

1
1
0

1
1
0

0
1
1

0
1
1

1
0
1

1
0
1

0
0
0

0
0
0

0
1
1

0
1
1

1
1
0

0
1
1

0
0
0

0
0
0

1
1
0

0
0
0

0
0
0

0
0
0

1
1
0

1
1
0

1
1
0

1
1
0

0
0
0

0
0
0

1
1
0

1
1
0

0
0
0

1
1
0

PF.

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.
Primer XOR
dl
00
1A
0
ah
2C
C2
0
Resultado
36
0
Se activ la bandera PF.

0
0
0

0
1
1

1
0
1

1
1
0

0
1
1

1
0
1

0
0
0

Segundo XOR
dl
00
36
0
00
FF
1
Resultado
C9
1
Se activ la bandera SF.

0
1
1

1
1
0

1
1
0

0
1
1

1
1
0

1
1
0

0
1
1

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.
Tercer XOR
dl
00
ah
2C

1A
C2

0
0

0
0

0
1

1
0

1
1

0
1

1
0

0
0

Resultado
36
0
Se desactivo la bandera SF.
NOT
dl
00
Resultado

36
C9

0
1

0
1

1
0

1
0

0
1

1
0

1
0

0
1

10) Modifique la tercera y sptima instruccin del programa escribiendo


xor ah, dl
11) Repita los pasos 8 y 9 qu diferencias nota?
Primer bloque
Primer XOR
ah
2C
C2
0
dl
00
1A
0
Resultado
36
0
Se activ la bandera PF.

0
0
0

1
0
1

Segundo XOR
dl
00
1A
0
0
0
00
FF
1
1
1
Resultado
E5
1
1
1
Se activ la bandera SF y se desactivo PF.

0
1
1

1
1
0

1
0
1

0
1
1

0
0
0

1
1
0

1
1
0

0
1
1

1
1
0

0
1
1

0
1
1

1
1
0

1
0
1

0
1
1

0
0
0

1
0

1
0

0
1

1
0

0
1

Segundo bloque
Tercer XOR
ah
2C
C2
0
0
1
dl
00
1A
0
0
0
Resultado
36
0
0
1
Se desactivo la bandera SF y se activ PF.
NOT
dl
00
Resultado

1A
E5

0
1

0
1

0
1

Se activaron y desactivaron las mismas banderas pero en diferente orden.


13) 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:

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


banderas, note como se activan o desactivan.
Cules son sus conclusiones?
Que se pueden modificar las banderas manualmente con el ingreso de algunos
comandos, como: stc, std, cli, clc, cld, sti, etc. Donde cl se usa para desactivar y st
para activar.
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?
Se activaron las banderas PF y ZF.
AND
ah

B9

00
40

1
0

0
1

1
0

1
0

1
0

0
0

0
0

1
0

Resultado
00
0
0
0
0
0
0
0
0
ah almacena un 00, es por eso que la bandera ZF se activ, y tambin que es un numero
par por eso PF se activ.
16) Ejecute hasta la instruccin TEST y conteste otra vez las preguntas del punto 15 del
procedimiento.
Se desactivaron ZF y PF luego de ejecutar la instruccin OR, y cuando se ejecut la
instruccin TEST se activaron nuevamente, pero con TEST no cambiaron los valores
de ah.
OR
ah
B9
00
0
0
0
0
0
0
0
0
01
01
0
0
0
0
0
0
0
1
Resultado
00
0
0
0
0
0
0
0
1
TEST
ah
B9
40h
Resultado

00
40
40

1
0
0

0
1
1

1
0
0

1
0
0

1
0
0

0
0
0

0
0
0

1
0
0

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. .
Luego de AND no se activa ninguna bandera, luego de OR se activa la bandera PF, y por ultimo
cuando se ejecuta la instruccin TEST se desactiva la bandera PF.
AND
ah
B9
08h
Resultado

00
08
00

1
0
0

0
0
0

1
0
0

1
0
0

1
1
1

0
0
0

0
0
0

1
0
0

OR
ah
B9
01
Resultado

00
01
00

0
0
0

0
0
0

0
0
0

0
0
0

1
0
1

0
0
0

0
0
0

0
1
1

TEST
ah
B9
08
Resultado

00
08
40

1
0
1

0
0
0

1
0
1

1
0
1

1
1
1

0
0
0

0
0
0

1
0
1

Z = Zero flag: El resultado es cero.


N = Negative flag: El resultado es negativo.
V = Overflow flag: El resultado supera el nmero de bits que puede manejar la ALU.
P = Parity flag: Paridad del nmero de 1 en los datos.
I = Interrupt flag: Se ha producido una interrupcin.
C = Carry flag: Acarreo de la operacin realizada.
ANALISIS DE RESULTADOS

a) Primer programa.
Qu objetivos se buscan al usar la mascara1 (F0h) con las tres diferentes instrucciones
lgicas?
Denotar la notable diferencia que tiene los tres tipos de puertas logicas.
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?
Esto se debe a que ya se encuentra activada anteriormente y es por eso que se
conserva.
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?
Porque XOR realiza una comparacin de similitud.
En el programa se declaran datos para hacer las operaciones dnde se guardan estos
datos?
Estos datos se almacenan en memoria principal.
b) Segundo programa.
Cuando se ejecutan el primer bloque del programa el resultado se almacena en DL, lo
mismo ocurre con el segundo bloque; los dos resultados son idnticos, pero el estado de
las banderas no lo es por qu?
Porque las operaciones lgicas que se van realizando, hacen que cambien los flags
Al modificar el programa, tanto los resultados como las banderas terminaron en distintos
estados cules fueron los cambios especficos que observo?
Los valores de las operaciones se almacenan en el registro que se le ha indicado.
c) Tercer programa.
Cul es la diferencia fundamental que noto a comparar las instrucciones AND y TEST?
AND realiza una comparacin la cual modifica y almacena el resultado en un
resgistro, tambin la bandera respectiva se activa o desactiva.
TEST realiza la operacin lgica "AND" de dos operandos, pero NO afecta a ninguno
de ellos, SLO afecta al registro de estado.
Afecta a todos los bits del registro de estado, de la misma manera que la instruccin
AND.
Qu relacin existe entre los bit que deseamos probar y el valor especfico de la mascara
seleccionada?
La mascara nos permite cambiar varias instrucciones; en cambio el bit lo asignamos
por cada instruccin.
TAREA COMPLEMENTARIA

En el programa se declaran algunos datos que sern operados dnde se almacenan estos
datos?
DB, DW y DD se usan para asignar espacio a las variables en memoria. DB tamao
byte, DW tamao WORD y DD tamao DWORD.
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.

Potrebbero piacerti anche