Lab 3

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 11

UNIVERSIDAD NACIONAL DE INGENIERÍA

FACULTAD DE ELECTROTECNIA Y COMPUTACIÓN


INGENIERÍA ELÈCTRICA
TERCER LABORATORIO DE MICROPROCESADORES

Asignatura:
Microprocesadores
Laboratorio numero #3
Docente:
Ing. Eynar López

Integrantes:
Br. Julio José López Ortiz
Br. Keyla Junieth Villatoro Muñoz
Br. José Boanerges Ruiz Blandón
Br. Moisés Enrique Vega Marenco

Carrera: Ingeniería eléctrica

Grupo: Curso verano-nocturno

17 de febrero de 2023
OBJETIVOS GENERALES

Analizar la forma en que se ejecutan algunas instrucciones aritméticas y de manejo de la PILA

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?

¿Dónde se almacena el resultado al final de las operaciones?


DATOS: byte1 >> con el valor de 125
byte2 >> con el valor de 150
word1 >> con el valor 20A3h
word2 >> con el valor 5938h
OPERACIONES SUMA “ADD”
RESULTADO1 125 + 150 = 113 < pero como solo es de 1 bit saldrá “13” como
respuesta. RESULTADO2 20A3 + 5938 = 79BD < saldrá todo el resultado por ser
de 2 bits.
8) Digite y emule el programa
9) 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.
10) 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?
En este caso concuerdo con el resultado esperado

Momento Direcciones Banderas


011EH 011FH O S Z A P C
Inicio 0000 0000 0 0 0 0 0 0
Después de 1ra suma 1300 0000 0 0 0 1 0 1
Antes de la 2da suma 1300 0000 0 0 0 1 0 1
Después de la 2da suma 1300 DB79 0 0 0 0 1 0
Después del último Mov 1300 BD79 0 0 0 0 1 0

Cargue nuevamente el programa e invierta manualmente el


estado del acarreo.

Ejecute paso a paso hasta la primera suma. ¿Cambió el resultado de la


operación?

Continúe ejecutando el programa hasta la segunda suma ¿Se dio algún


cambio?

NO hubo cambios.

Modifique el código fuente sustituyendo las instrucciones ADD por ADC y


emule nuevamente el programa.

Repita desde el paso 7 y compare con los resultados previos.


Ejecute paso a paso hasta la primera suma. ¿Cambió el resultado de la
operación?
NO hubo cambios.
Continúe ejecutando el programa hasta la segunda suma ¿Se dio algún
cambio?
SI se dieron cambios.
¿Qué resultados se modificaron?, ¿qué parte no?, ¿por qué cree que se dieron
esos cambios específicos en los resultados?

Banderas (flags), hasta la parte de la segunda adición,

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

Corra a pasos el programa observando la ejecución de cada instrucción y el estado de las


banderas.
¿Cuál fue el resultado de las operaciones?, ¿Cómo reaccionaron las
banderas? y ¿por quéasí y no de otra manera?
Analice el SE G UN D O P R OG R A M A, ¿dónde se almacena el resultadode las
operaciones? ¿cuál es el resultado de las mismas?

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.

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.

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.
Repita los pasos 16 y 17, pero esta vez active manualmente el acarreo antes de
cada
resta ¿observa cambios en las operaciones?

Cambie el programa para que funcione como al principio.

Sustituya las instrucciones SUB por SBB y repita los pasos anteriores. Complete la
TABLA 2.

¿Qué diferencias notas entre la ejecución de la instrucción SUB y SBB?

Instrucción Prueba Minuen Sustrae Diferencia O S Z A P C


do ndo
1ra 50H 45H 0BH 0 0 0 1 0 0
Sub 6745 145 6600 0 0 0 0 1 0
2da 45H 50H 5FH 0 1 0 0 1 1
145 6745 9A00 0 1 0 0 1 1
3ra 50 45 0B 0 0 0 1 0 0
Sbb 6745 145 6600 0 0 0 0 1 0
4ta 45 50 5F 0 1 0 0 1 1
145 6745 9A00 0 1 0 1 1 1

Analice el T E R C E R P R OG R A M A ¿qué registros están involucrados en el


proceso? ¿qué datos se van a operar? ¿dónde se almacenará el resultado?
LOS REGISTROS SIGUIENTES: AH,

AL, CL

LOS DATOS QUE SE OPERAN

AL = 0FFh (FACTOR) CL = 06 (FACTOR)

SE ALMACENA EN AX. (05: FA)


Digite y emule el TERCER PROGRAMA

Ejecute paso a paso, analizando el proceso. Anote los resultados en la primera fila de la TABLA 3

¿Coinciden los resultados con lo que esperaba?

SI en MUL y NO en IMUL
Instrucción Dato Multiplicando Multiplicador Producto

06 F 06 05: FA
MU F
L
-06 F -06 F9: 06
F

06 F 06 FF: FA
IM F
UL
-06 F -06 00: 06
F

Modifique el dato de CL colocando -06 y ejecute nuevamente el programa. Anote los resultados en
la TABLA 3.

Cambien la instrucción MUL por IMUL y el dato -06 por 06.

Ejecute el programa y anote los resultados.

Cambie el dato por -06, ejecute nuevamente y anote los resultados

ºAnalice el C U A R TO P R OG R A M A ¿qué registros están involucrados en el proceso? ¿qué


datos se van a operar? ¿dónde se almacenará el resultado?

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.


Cambie el dato por 00h y ejecute el programa ¿qué ocurrió?
Error en la división entre 0

a) Primer programa
Tomando en cuenta los datos particulares de cada operación explique el porque de la
activación o
desactivación de las banderas O, S, Z, C y A.
Explique porque los resultados de las operaciones cambiaron al usar ADC en lugar de
ADD. Utilice
cálculos para fundamentar su explicación.
ADC
Propósito: Adición con acarreo.
Lleva a cabo la suma de dos operandos y suma uno al resultado en caso de que la
bandera CF esté
activada, esto es, en caso de que exista acarreo.
El resultado se guarda en el operando destino. ADD
Propósito: Adición de los operandos.
Suma los dos operandos y guarda el resultado en el operando destino.

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. Explique porque los
resultados de las operaciones cambiaron al usar SBB en lugar de SUB. Utilice cálculos
para
fundamentar su explicación.

SUB Propósito:
Substracción

Resta el operando fuente del destino.


SBB Propósito: Substracción con acarreo
Esta instrucción resta los operandos y resta uno al resultado si CF está activada. El
operando fuente siempre se resta del destino.

c) Tercer programa
¿Cómo se especifica en una instrucción de multiplicación que se desea trabajar con
números deun byte?
¿En qué registros se almacenan los datos y el resultado de una multiplicación de un byte?
Explique
porque los resultados de las operaciones cambiaron al usar IMUL en lugar de MUL. Utilice
cálculos para fundamentar su explicación.
MUL
Propósito: Multiplicación sin signo
El ensamblador asume que el multiplicando será del mismo tamaño que el del
multiplicador, por lo
tanto multiplica el valor almacenado en el registro que se le da como operando por el que
se encuentre
contenido en AH si el multiplicador es de 8 bits o por AX si el multiplicador es de 16 bits.
Cuando se realiza una multiplicación con valores de 8 bits el resultado se almacena en el
registro AX y
cuando la multiplicación es con valores de 16 bits el resultado se almacena en el registro
par DX:AX.
IMUL
Propósito: Multiplicación de dos enteros con signo.
Este comando hace lo mismo que el anterior, solo que si toma en cuenta los signos de las
cantidades que
se multiplican.
Los resultados se guardan en los mismos registros que en la instrucción 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.
DIV
Propósito: División sin signo
El divisor puede ser un byte o palabra y es el operando que se le da a la instrucción.
Si el divisor es de 8 bits se toma como dividendo el registro de 16 bits AX y si el divisor es
de 16 bits se
tomará como dividendo el registro par DX:AX, tomando como palabra alta DX y como baja
AX.
Si el divisor fue un byte el cociente se almacena en el registro AL y el residuo en AH, si fué
una palabra el
cociente se guarda en AX y el residuo en DX.
IDIV
Propósito: División con signo
Consiste básicamente en lo mismo que la instrucción DIV, solo que esta última realiza la
operación con
signo.
Para sus resultados utiliza los mismos registros que la instrucción DIV.
¿Por qué la última modificación del programa generó un error en la ejecución?
Por haberse divido entre “0”.
Investigación complementaria
Compare el funcionamiento de la directiva EQU con DB.

También podría gustarte