Guia 2

  • Uploaded by: Milagros Vega
  • 0
  • 0
  • March 2021
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Guia 2 as PDF for free.

More details

  • Words: 3,378
  • Pages: 15
Loading documents preview...
Integrantes Flor Gutiérrez Diego Oviedo GUIA 1 a) Primer programa. En el encabezado del programa ¿por qué se incluye la línea “org 100h”? Al introducir datos en los registros del microprocesador se usan diferentes formatos (bases de numeración) ¿cuántos y cuáles son? La sintaxis de la instrucción MOV define tres campos: instrucción, dato1 y dato2. Al moverse los datos ¿cuál es la fuente y cual el destino? Al observar la tabla1 se nota que a la misma instrucción MOV se le asignan diferentes códigos hexadecimales ¿a qué se debe esto? ¿Cuál es la función que cumple el registro IP dentro del PRIMER PROGRAMA? En la columna OFFSET de la tabla1, éstos no se incrementan a una razón constante ¿por qué? b) Segundo programa. Al comparar las dos primeras instrucciones ¿qué diferencias hay al ejecutarlas, siendo que las dos son MOV? En las últimas tres instrucciones se incluyeron corchetes (paréntesis cuadrados) en las instrucciones ¿Qué diferencias observó en su ejecución respecto a las primeras dos instrucciones? ¿Por qué al ejecutar la séptima instrucción los datos se almacenan en CX en ese orden específico? c) Tercer programa. Al ejecutar el programa, a medida que hacía las modificaciones ¿qué efecto concreto logra el cambio en el registro BX? Al modificar CH ¿qué bits específicos se modificaron para lograr cambios en el fondo y color de los caracteres? Esta actividad debe desarrollarse posteriormente a la ejecución de la guía de laboratorio y tiene por objetivo complementar y ampliar la temática desarrollara teniendo en mente las actividades futuras. Investigue: ¿Qué son los modos de direccionamiento? ¿Cuántos y cuáles modos de direccionamiento tiene el microprocesador 8086? ¿Qué modos de direccionamiento posee la instrucción MOV? ¿Qué diferencias hay entre las instrucciones XCHG ya la instrucción MOV? 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. En esta guía de laboratorio se declararán datos de diferentes maneras, no los pierda de vista.

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=9A ah=F0 Respuesta: 90 (dl) BANDERAS: Se activaron las banderas SF y PF. Segundo AND CX=2CC2 BX=0F0F Respuesta: 0C02 (cx) BANDERAS: Se desactivaron las banderas SF y PF. Tercer AND CX=0C02 Respuesta: 0C02 (cx) BANDERAS: No hubo cambios

CX=0C02

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=9A ah=F0 Respuesta: FA (dl) BANDERAS: Se activaron las banderas SF y PF. Segundo OR CX=2CC2 BX=0F0F Respuesta: 2FAF (cx) BANDERAS: Se desactivo la bandera SF. Tercer OR CX=2FAF

CX=2FAF

Respuesta: 2FAF (cx) BANDERAS: No hubo cambios 6) Sustituya ahora por la instrucción XOR y repita el paso 4. Primer XOR dl=9A ah=F0 Respuesta: 6A (dl) BANDERAS: Se activa la bandera PF. Segundo XOR CX=2CC2 BX=0F0F Respuesta: 23CD (cx) BANDERAS: Se desactivo la bandera PF. Tercer XOR CX=23CD CX=23CD Respuesta: 0000(cx) BANDERAS: Se activaron ZF y 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=1A AX=2CC2 Respuesta: 36 (dl) BANDERAS: Se activa la bandera PF. Segundo XOR Dl=36 00FF Respuesta: C9 (cx) BANDERAS: Se activa la bandera SF. 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=1A AX=2CC2 Respuesta: 36 (dl) BANDERAS: Se desactivo la bandera SF. NOT Dl=36 Respuesta: C9 (cx)

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 XOR ax=2CC2 dl=1A Respuesta: 36 (ah) BANDERAS: Se activa la bandera PF. Segundo XOR Dl=1A 00FF Respuesta: E5 (dl) BANDERAS: Se activa la bandera SF y se desactiva la PF. Tercer XOR AX=2CC2 dl=1A Respuesta: 36 (al) BANDERAS: Se desactivo la bandera SF y se activó PF. NOT Dl=1A Respuesta: Se activaron y desactivaron las mismas banderas pero en diferente orden. 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:

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? AND AH=B9 40h RESULTADO =00 Se activaron las banderas PF y ZF. AH almacena un 00, es por eso que la bandera ZF se activó, y también que es un número par por eso PF se activó. 16) Ejecute hasta la instrucción TEST y conteste otra vez las preguntas del punto 15 del procedimiento. OR AH=B9 01 RESULTADO =00 TEST AH=B9 RESULTADO =40

40h

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. 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. AND AH=B9 08h RESULTADO =00 OR

AH=B9 RESULTADO =00 TEST AH=B9 RESULTADO =40

01

08h

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.

Análisis de resultados a) Primer programa. ¿Qué objetivos se buscan al usar la mascara1 (F0h) con las tres diferentes instrucciones lógicas? -Hacer notar la notable diferencia que tiene los tres tipos de puertas 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é? -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 la 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 registro, también la bandera respectiva se activa o desactiva. -TEST realiza la operación lógica "AND" de dos operando, 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 máscara seleccionada? -La máscara 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? -Estos datos son almacenados en segmentos de memoria. Investigue que son las directivas DB y DW -DB, DW se usan para asignar espacio a las variables en memoria. DB tamaño byte, DW tamaño WORD. 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.

GUIA 3

1) Ejecute el programa emulador de microprocesadores EMU8086, haciendo doble clic en el icono del escritorio. 2) Cree un nuevo documento tipo COM 3) Analice el PRIMER PROGRAMA, note que al inicio se declaran los datos. ¿Con qué datos se realizarán las operaciones y cuáles serán los resultados? ¿Dónde se almacena el resultado al final de las operaciones? Los datos serán byte1 byte2 word1 word2 los cuales se guardaran en el espacio de memoria [011Eh] [011Fh]

4) Digite y emule el programa 5) Antes de ejecutar el programa tome nota del contenido almacenado en las direcciones 011Eh, 011Fh y 0120h en la TABLA 1, también del estado de las banderas. 6) Ejecute paso a paso el programa, anotando la información solicitada en la TABLA 1, observando el resultado de las operaciones y el estado de las banderas ¿Concuerda el resultado lo que usted esperaba? _______ MOMENTO Inicio Después de 1ª suma Antes de la 2ª suma Después de la 2ª suma Después del último MOV

011Eh 90 90 13 13 13

DIRECCIONES 011Fh 0120h 90 90 90 90 90 90 90 90 DB 79

O 0 0 0 0 0

S 0 0 0 0 0

BANDERAS Z A P 0 0 0 0 1 0 0 1 0 0 0 1 0 0 1

7) Cargue nuevamente el programa e invierta manualmente el estado del acarreo.

Z = Zero flag: El resultado es cero.

C 0 1 1 0 0

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. MOMENTO Inicio Después de 1ª suma Antes de la 2ª suma Después de la 2ª suma Después del último MOV

011Eh 90 90 13 13 13

DIRECCIONES 011Fh 0120h 90 90 90 90 90 90 90 90 DB 79

O 0 0 0 0 0

S 0 0 0 0 0

BANDERAS Z A P 0 0 0 0 1 0 0 1 0 0 0 1 0 0 1

C 1 1 1 0 0

8) Ejecute paso a paso hasta la primera suma. ¿Cambió el resultado de la operación? SIN CAMBIOS 9) Continúe ejecutando el programa hasta la segunda suma ¿Se dio algún cambio? SIN CAMBIOS

10) Modifique el código fuente sustituyendo las instrucciones ADD por ADC y emule nuevamente el programa. MOMENTO DIRECCIONES BANDERAS 011Eh 011Fh 0120h O S Z A P C Inicio 90 90 90 0 0 0 0 0 0 Después de 1ª suma 90 90 90 0 0 0 1 0 1 Antes de la 2ª suma 13 90 90 0 0 0 1 0 1 Después de la 2ª suma 13 90 90 0 0 0 0 0 0 Después del último MOV 13 DB 79 0 0 0 0 0 0 11) Repita desde el paso 7 y compare con los resultados previos MOMENTO DIRECCIONES 011Eh 011Fh 0120h O Inicio 90 90 90 0 Después de 1ª suma 90 90 90 0 Antes de la 2ª suma 14 90 90 0 Después de la 2ª suma 14 90 90 0 Después del último MOV 14 DC 79 0

S 0 0 0 0 0

BANDERAS Z A P 0 0 0 0 1 1 0 1 1 0 0 0 0 0 0

C 1 1 1 0 0

¿Qué resultados se modificaron?, ¿qué parte no?, ¿por qué cree que se dieron esos cambios específicos en los resultados? Cambia el resultado de 011E ya que activamos la bandera de acarreo llevando un 1 de más. También se activa media ejecución la bandera P

12) Modifique el programa para que funcione como al inicio, pero cambie los datos con los siguientes valores: byte1 equ 9Dh byte2 equ 83h word1 equ 5938 word2 equ -5938 13) Corra a pasos el programa observando la ejecución de cada instrucción y el estado de las banderas. MOMENTO DIRECCIONES BANDERAS 011Eh 011Fh 0120h O S Z A P C Inicio 90 90 90 0 0 0 0 0 0 Después de 1ª suma 90 90 90 1 0 0 1 0 1 Antes de la 2ª suma 20 90 90 1 0 0 1 0 1 Después de la 2ª suma 29 90 90 0 0 1 1 1 1 Después del último MOV 20 00 00 0 0 1 1 1 1 ¿Cuál fue el resultado de las operaciones?, ¿Cómo reaccionaron las banderas? y ¿por qué así y no de otra manera? El espacio [011Eh] esta con 20 Los espacios [011Fh] [0120h] se encuentras vacíos (NULL) Luego de la segunda ADD se activa la bandera Z lo cual significa que el resultado es cero.

14) Analice el SEGUNDO PROGRAMA, ¿dónde se almacena el resultado de las operaciones? ¿cuál es el resultado de las mismas? El resultado se almacena en CL y DX , en CL se guardara una resta de bytes mientras que en DX una resta de words

15) Digite y emule el programa tomando nota del valor de los minuendos y sustraendos (en formato hexadecimal) con que se realizarán las operaciones en la TABLA 2.

16) Ejecute paso a paso el programa, observando los resultados de las operaciones y el estado de las banderas. Anote estos valores en la TABLA 2. 17) Modifique el programa para que se invierta el orden de la operación, de forma que el minuendo pasa a ser sustraendo y viceversa. Repita el paso anterior tomando nota en la segunda fila de la TABLA 2. 18) Repita los pasos 16 y 17, pero esta vez active manualmente el acarreo antes de cada resta ¿observa cambios en las operaciones? 19) Cambie el programa para que funcione como al principio. 20) Sustituya las instrucciones SUB por SBB y repita los pasos anteriores. Complete la TABLA2 ¿Qué diferencias nota entre la ejecución de la instrucción SUB y SBB? Cuando se cambia acarreo con sbb cambio el resultado. SBB cambia con el acarreo Instrucción Prueba Minuendo Sustraendo Diferencia O S Z A P 50 45 0B 0 0 0 1 0 1º 45 50 F5 0 1 0 0 1 SUB 50 45 0B 0 0 0 1 0 2º 45 50 F5 0 1 0 0 1 50 45 0B 0 0 0 1 0 3º 45 50 F5 0 1 0 1 1 SBB 50 45 0A 0 0 0 0 1 4º 45 50 F4 0 1 0 0 0 Instrucción

Prueba 1º

SUB 2º 3º SBB 4º

Minuendo 6745 0145 6745 0145 6745 0145 6745 0145

Sustraendo 0145 6745 0145 6745 0145 6745 0145 6745

Diferencia 6600 9A00 6600 9A00 6600 99FF 65FF 9A00

O 0 0 0 0 0 0 0 0

S 0 1 0 1 0 1 0 1

Z 0 0 0 0 0 0 0 0

A 0 0 0 0 0 1 1 0

P 1 1 1 1 1 1 1 1

21) Analice el TERCER PROGRAMA ¿qué registros están involucrados en el proceso? ¿qué datos se van a operar? ¿dónde se almacenará el resultado?

C 0 1 0 1 0 1 0 1 C 0 1 0 1 0 1 0 1

22) Digite y emule el TERCER PROGRAMA 23) Ejecute paso a paso, analizando el proceso. Anote los resultados en la primera fila de la TABLA 3 24) Modifique el dato de CL colocando -06 y ejecute nuevamente el programa. Anote los resultados en la TABLA 3. 25) Cambien la instrucción MUL por IMUL y el dato -06 por 06. 26) Ejecute el programa y anote los resultados. 27) Cambie el dato por -06, ejecute nuevamente y anote los resultados

Instrucción

Dato

Multiplicando

Multiplicador

Producto

06

FF

06

05 FA

-06

FF

FA

F9 06

06

FF

06

FF FA

-06

FF

FA

00 06

MUL

IMUL

28) Analice el CUARTO PROGRAMA ¿qué registros están involucrados en el proceso? ¿qué datos se van a operar? ¿dónde se almacenará el resultado? AX Y CL, se opera el dato cl=05 y se almacenara en CL 29) Realice el mismo procedimiento del TRECER PROGRAMA, pero ahora el dato que será cambiado es 05 y la operación DIV por IDIV. Anote sus resultados en la TABLA 4.

Instrucción

Dato

Dividendo

Divisor

Cociente

Residuo

05

7B

05

18

03

-05

7B

FB

00

7B

05

7B

05

18

03

-05

7B

FB

E8

03

DIV

IDIV

30) Cambie el dato por 00h y ejecute el programa ¿qué ocurrió? ERROR DE OVERFLOW división entre cero

Análisis de resultados a) Primer programa Tomando en cuenta los datos particulares de cada operación explique el porqué de la activación o desactivación de las banderas O, S, Z, C y A. 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. Explique porque los resultados de las operaciones cambiaron al usar ADC en lugar de ADD. Utilice cálculos para fundamentar su explicación. En el primer problema al usar ADC generamos que se acumule un acarreo de 1 desde un inicio . Siendo puesto en la primera ADC ADD=125+150=13 ADC=125+150=13+1=14 b) Segundo programa Al ejecutar una resta las banderas C y A reaccionan diferente si el minuendo es mayor o menor al sustraendo, explique por qué basándose en el concepto de préstamo. C se activa cuando se usa el acarreo y A Siguiendo el concepto de préstamo de la sustracción si al restar el minuendo unides o decimales o centenas, se puede prestar un 1 al siguiente unidaddecimal, decimal centena. Explique porque los resultados de las operaciones cambiaron al usar SBB en lugar de SUB. Utilice cálculos para fundamentar su explicación. SBB SUB c) Tercer programa ¿Cómo se especifica en una instrucción de multiplicación que se desea trabajar con números de un byte?

En qué registros se almacenan los datos y el resultado de una multiplicación de un byte? Se guarda en nuestro caso en AX Explique porque los resultados de las operaciones cambiaron al usar IMUL en lugar de MUL. Utilice cálculos para fundamentar su explicación. IMUL MUL d) Cuarto programa ¿Cómo se especifica en una instrucción de división que se desea trabajar con números de un byte? En qué registros se almacenan los datos y el resultado de una división de un byte? Explique porque los resultados de las operaciones cambiaron al usar IDIV en lugar de DIV. Utilice cálculos para fundamentar su explicación. ¿Por qué la última modificación del programa generó un error en la ejecución? Porque fue una división entre 0

Investigación complementaria Compare el funcionamiento de la directiva EQU con DB. EQU DB Investigue como se puede realizar una multiplicación de dos números de dos bytes cada uno. Investigue como se puede realizar una división de dos números de dos bytes cada uno. Diseñe dos flujo-gramas que representen el proceso para sumar dos números de 4 bytes cada uno, en el primero se trabajará con registros de 16 bits y en el segundo de 8 bits.

Related Documents

Guia 2
March 2021 0
Guia # 2 Corregida
March 2021 0
Guia Fisica 4 (2)
March 2021 0
Desarrollo Guia 2.docx
March 2021 0

More Documents from "viviana Rodriguez"

Guia 2
March 2021 0
Big
January 2021 6
February 2021 0
3.discalculia
January 2021 0
Pd-cap-5
January 2021 2