guia2

December 22, 2017 | Author: TacoMedinaOscar | Category: Bit, Arithmetic, Electronic Engineering, Computer Data, Digital Electronics
Share Embed Donate


Short Description

Descripción: guia2 MICROPROCESADORES...

Description

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 operación 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

0

0

1

0

1

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

0

1

0

1

0

1

0

0

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 líneas que contienen la instrucción AND, sustituyéndola por la instrucción 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 instrucción 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

1

0

0 1

1 0

1 0

0 1

1 0

1 0

0 1

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

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? 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 ¿Cuáles se activaron?, ¿cuál fue el resultado de la operación? ¿cómo 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 también que es un numero par por eso PF se activó. 16) Ejecute hasta la instrucción TEST y conteste otra vez las preguntas del punto 15 del procedimiento. Se desactivaron ZF y PF luego de ejecutar la instrucción OR, y cuando se ejecutó la instrucción 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, ¿cómo 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 instrucción 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 número de bits que puede manejar la ALU. P = Parity flag: Paridad del número de 1 en los datos. I = Interrupt flag: Se ha producido una interrupción. C = Carry flag: Acarreo de la operación realizada. ANALISIS DE RESULTADOS

a) Primer programa. ¿Qué objetivos se buscan al usar la mascara1 (F0h) con las tres diferentes instrucciones lógicas? Denotar la notable diferencia que tiene los tres tipos de puertas logicas. 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é? Esto se debe a que ya se encuentra activada anteriormente y es por eso que se conserva. 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? Porque XOR realiza una comparación de similitud. En el programa se declaran datos para hacer las operaciones ¿dónde 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 idénticos, pero el estado de las banderas no lo es ¿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 ¿cuáles fueron los cambios específicos que observo? Los valores de las operaciones se almacenan en el registro que se le ha indicado. c) Tercer programa. ¿Cuál es la diferencia fundamental que noto a comparar las instrucciones AND y TEST? AND realiza una comparación la cual modifica y almacena el resultado en un resgistro, 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. ¿Qué relación existe entre los bit que deseamos probar y el valor específico de la mascara seleccionada? La mascara nos permite cambiar varias instrucciones; en cambio el bit lo asignamos por cada instrucción. TAREA COMPLEMENTARIA

En el programa se declaran algunos datos que serán operados ¿dónde se almacenan estos datos? DB, DW y DD se usan para asignar espacio a las variables en memoria. DB tamaño byte, DW tamaño WORD y DD tamaño 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.

View more...

Comments

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF