Guia 3

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

UNIVERSIDAD NACIONAL DE INGENIERÍA

FACULTAD DE ELECTROTECNIA Y COMPUTACIÓN


INGENIERÍA ELÈCTRICA

Guia de laboratorio N°3: Programación del Microprocesador.

Asignatura: Microprocesadores.

Docente:
Ing. Eynar López.

Integrantes:
Br. Josué Aguilera.
Br. Jonathan Antonio Castillo López.
Br. Eberth José Guido Laínez.

Carrera: Ingeniería Eléctrica.

Grupo: 5N1-EL

27 de febrero 2023.
Guía 1

Facultad: Estudios Tecnologicos.


Instrucciones Aritméticas Escuela: Electrónica
Asignatura: Microprocesadores

Objetivo General

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


la PILA.

Objetivos Específicos

• Observar el uso de algunas instrucciones aritméticas y las banderas que son


afectadas.
• Identificar las banderas que afecta cada instrucción observada.
• Utilizar correctamente los registros del microprocesador al realizar operaciones
aritméticas, tanto de 8 bits como de 16 bits.
• Analizar detenidamente el proceso de cada operación.

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) Analice el PRIMER PROGRAMA, note que al inicio se declaran los datos.


¿Con qué datos se realizarán las operaciones y cuales serán los resultados? ¿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 de 20A3H


Word1>> con el valor de 5938H

Operaciones suma ADD


Resultado de 125 + 150= 113< pero como es de un bit saldra el resultado como 13.
Resultado de 20A3H + 5938H= 79BD< como es de dos bits este sera el resultado.
Guía
3 2

PRIMER PROGRAMA
#make_COM#
org 100h
INICIO byte1 equ 125
byte2 equ 150
word1 equ 20A3h
word2 equ 5938h

AL = byte1
mov al, byte1 ;suma de 2 números de 1 byte
AL = AL + byte2 add al, byte2
mov [011Eh], al
M[011Eh] = AL

AX = word1 mov ax, word1 ;suma de 2 números de 2 byte


add ax, word2
AX = AX +word2
mov [011Fh], ax
M[011Fh] = AX
ret
FIN END

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

DIRECCIONES BANDERAS
MOMENTO
011Eh 011Fh 0120h O S Z A P C
Inicio 00 00 00 00 00 00 0 0 0 0 0 0
Después del 1ª suma 13 00 00 00 00 00 0 0 0 1 0 1
Antes de la 2ª suma 13 00 00 00 00 00 0 0 0 1 0 1
Después de la 2ª suma 13 00 DB 79 79 00 0 0 0 0 1 0
Después del último MOV 13 00 BD 79 79 00 0 0 0 0 1 0
TABLA 1

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


acarreo.

8) Ejecute paso a paso hasta la primera suma.


¿Cambió el resultado de la operación? __NO___

9) Continúe ejecutando el programa hasta la segunda suma


¿Se dio algún cambio? __NO__
Guía
3
10) Modifique el código fuente sustituyendo las instrucciones ADD por ADC y
emule nuevamente el programa.
11) Repita desde el paso 7 y compare con los resultados previos.

¿Qué resultados se modificaron?, ¿qué parte no?, ¿por qué cree que se dieron esos
cambios específicos en los resultados?

Las banderas hasta la segunda adicion:

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.

14) Analice el SEGUNDO PROGRAMA


SEGUNDO PROGRAMA

#make_COM#
org 100h
byte1 equ 80
byte2 equ 69
word1 equ 26437
word2 equ 325
mov cl, byte1 ;resta de 2 números de 1 byte
sub cl, byte2

mov dx, word1 ;resta de 2 números de 2 byte


sub dx, word2
Guía
3 4

INICIO END ret

CL = byte1

CL = CL + byte2

DX = word1

DX = DX - word2

FIN
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 TABLA 2.
¿Qué diferencias nota entre la ejecución de la instrucción SUB y SBB?

SUB resta el operando Fuente del destino con el proposito de substraer.


SBB esta operacion resta los operando y resta 1 al resultado cunado CF esta activada. Con el proposito de
substracion de acarreo
Instrucción Prueba Minuendo Sustraendo Diferencia O S Z A P C
1º 50 45 0B 0 0 0 1 0 0
SUB 6745 145 6600 0 0 0 1 0
2º 45 50 5F 1 0 0 1 1
145 6745 9A00 1 0 0 1 1
3º 50 45 0B 0 0 1 0 0
SBB 6745 145 6600 0 0 0 1 0
4º 45 50 5F 1 0 0 1 1
145 6745 9A00 1 0 1 1 1
TABLA 2

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?

Los registros siguentes AH, AL, CL

Los datos que se operan AL=0FFH(Factor) CL=06(Factor)

Se almacena en AX. (0.5:FA)


Guía
3 5

__________________________________________________________________

TERCER PROGRAMA
INICIO #make_COM#
org 100h
INICIO:
AH = AAh mov ah, 0AAh ;multiplica 2 números de 1 byte

AL = 0FFh mov al, 0FFh

CL = 06h
mov cl, 06

AX = (AL) X (CL) mul cl

FIN END ret

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
¿Coinciden los resultados con lo que esperaba?No en IMUL y si en MUL

__________________________________________________________________

Instrucción Dato Multiplicando Multiplicador Producto

06 FF 06 05:FA
MUL
-06 FF -06 F9:06

06 FF 06 FF:FA
IMUL
-06 FF -06 00:06
TABLA 3
Guía
3 6

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

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?

__________________________________________________________________

__________________________________________________________________

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.

CUARTO PROGRAMA
INICIO #make_COM#
org 100h
INICIO:
AX = 123 mov ax, 123 ;multiplica 2 números de 1 byte

CL = 05 mov cl, 05 ;Dato

AH(res),AL(cos) = (AL) ÷ (CL) div cl

ret
FIN
END

Instrucción Dato Dividendo Divisor Cociente Residuo

05 7B 05 18 3
DIV
-05 7B FB 00 7B

05 7B 05 18 3
IDIV
-05 7B FB E8 3
TABLA 4

30) Cambie el dato por 00h y ejecute el programa ¿qué ocurrió? Error en la division donde el
denominador es 0.
Guía
3 7

Análisis de resultados

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 tiene como proposito la adicion con acarreo


Lleva a cabo la suma de dos operando y suma 1 al resultado en caso de que la
bandera CF este activada, esto en caso de que exista acarreo y el resultado se
guarda en el operando destino.
ADD tiene el proposito de la adiccion de los operando, suma los dos operanod y
guarda los dos resultados 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 el porque 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 resta el operando Fuente del destino con el proposito de substraer.
SBB esta operacion resta los operando y resta 1 al resultado cunado CF esta
activada. Con el proposito de substracion de acarreo del destino

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

MUL es la multiplicacion sin signo, el lenguaje assume e¿que el multiplicando


sera del mismo tamaño que el que esta multiplicando por lo tanto multiplica
el valor almacenado en el registro que se le da en el operando por lo que se
encuentre contenido AH si el multiplicador es de 8 bits o por AX si el
multiplicador es de 16 bits.

IMUL tiene como proposito la multiplicacion de dos numeros enteros con signo
Este commando hace lo mismo que el anterior solo que toma en cuenta los
signos de los numeros que se multiplican
Estos signos se guardan en los mismo registros que en la instruccion EMUL.

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 es la division sin signo el divisor puede ser un byte o la palabra y es el
operando que se le da a la instruccion
IDIV es la division con signo consiste basicamente en lo mismo que la
instruccion DIV solo que es esta toma en cuenta el signo y para los resultados
utiliza los mismos registros igualmente.

¿Por qué la última modificación del programa generó un error en la ejecución? Porque se dividia
entre 0

Bibliografía

Brey, B. B. Los Microprocesadores Intel. 8086 / 8088, 80186, 80286, 80386 y 80486.
Arquitectura, programación e interfaces, Prentice Hall, México DF, 19953
Biblioteca UDB 001.6404 B847 1997

También podría gustarte