Vous êtes sur la page 1sur 8

Gua

3 1

Facultad: Estudios Tecnologicos.


Instrucciones Aritmticas Escuela: Electrnica
Asignatura: Microprocesadores

Objetivo General

Analizar la forma en que se ejecutan algunas instrucciones aritmticas y de manejo de


la PILA.

Objetivos Especficos

Observar el uso de algunas instrucciones aritmticas y las banderas que son


afectadas.
Identificar las banderas que afecta cada instruccin observada.
Utilizar correctamente los registros del microprocesador al realizar operaciones
aritmticas, tanto de 8 bits como de 16 bits.
Analizar detenidamente el proceso de cada operacin.

Materiales y equipos

Gua 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 realizarn las operaciones y cuales sern los resultados? Dnde
se almacena el resultado al final de las operaciones?

__________________________________________________________________

__________________________________________________________________
Gua
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 nmeros de 1 byte
AL = AL + byte2 add al, byte2
mov [011Eh], al
M[011Eh] = AL

AX = word1 mov ax, word1 ;suma de 2 nmeros 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, tambin del estado de las
banderas.

6) Ejecute paso a paso el programa, anotando la informacin 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
Despus del 1 suma
Antes de la 2 suma
Despus de la 2 suma
Despus del ltimo MOV
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 operacin? _____

9) Contine ejecutando el programa hasta la segunda suma


Se dio algn cambio? ______
Gua
3 3

10) Modifique el cdigo 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 especficos en los resultados?

__________________________________________________________________

__________________________________________________________________

__________________________________________________________________

__________________________________________________________________

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 ejecucin de cada instruccin y el


estado de las banderas.
Cul fue el resultado de las operaciones?, Cmo reaccionaron las banderas? y por
qu as y no de otra manera?

__________________________________________________________________

__________________________________________________________________

14) Analice el SEGUNDO PROGRAMA, dnde se almacena el resultado de las


operaciones? cul es el resultado de las mismas?

__________________________________________________________________

__________________________________________________________________

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

mov dx, word1 ;resta de 2 nmeros de 2 byte


sub dx, word2
Gua
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 realizarn 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 operacin, 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 ejecucin de la instruccin SUB y SBB?

__________________________________________________________________

__________________________________________________________________

Instruccin Prueba Minuendo Sustraendo Diferencia O S Z A P C


1
SUB
2

3
SBB
4
TABLA 2

21) Analice el TERCER PROGRAMA qu registros estn involucrados en el


proceso? qu datos se van a operar? dnde se almacenar el resultado?

__________________________________________________________________

__________________________________________________________________
Gua
3 5

__________________________________________________________________

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

AL = 0FFh mov al, 0FFh

CL = 06h
mov cl, 06

AX = (AL) X (CL) mul cl

ret
FIN END

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?

__________________________________________________________________

Instruccin Dato Multiplicando Multiplicador Producto

06
MUL
-06

06
IMUL
-06

TABLA 3
Gua
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 instruccin 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 estn involucrados en el


proceso? qu datos se van a operar? dnde se almacenar el resultado?

__________________________________________________________________

__________________________________________________________________
29) Realice el mismo procedimiento del TRECER PROGRAMA, pero ahora el dato
que ser cambiado es 05 y la operacin 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 nmeros de 1 byte

CL = 05 mov cl, 05 ;Dato

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

ret
FIN
END

Instruccin Dato Dividendo Divisor Cociente Residuo

05
DIV
-05

05
IDIV
-05

TABLA 4

30) Cambie el dato por 00h y ejecute el programa qu ocurri? ______


Gua
3 7

Anlisis de resultados

a) Primer programa

Tomando en cuenta los datos particulares de cada operacin explique el porque de la


activacin o desactivacin 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 clculos para fundamentar su explicacin.

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 basndose en el concepto de prstamo.
Explique porque los resultados de las operaciones cambiaron al usar SBB en lugar de
SUB. Utilice clculos para fundamentar su explicacin.

c) Tercer programa
Cmo se especifica en una instruccin de multiplicacin que se desea trabajar con
nmeros de un byte?
En qu registros se almacenan los datos y el resultado de una multiplicacin de un
byte?
Explique porque los resultados de las operaciones cambiaron al usar IMUL en lugar de
MUL. Utilice clculos para fundamentar su explicacin.

d) Cuarto programa
Cmo se especifica en una instruccin de divisin que se desea trabajar con nmeros
de un byte?
En qu registros se almacenan los datos y el resultado de una divisin de un byte?
Explique porque los resultados de las operaciones cambiaron al usar IDIV en lugar de
DIV. Utilice clculos para fundamentar su explicacin.
Por qu la ltima modificacin del programa gener un error en la ejecucin?

Investigacin complementaria

Compare el funcionamiento de la directiva EQU con DB.


Investigue como se puede realizar una multiplicacin de dos nmeros de dos bytes
cada uno.
Investigue como se puede realizar una divisin de dos nmeros de dos bytes cada uno.
Disee dos flujo-gramas que representen el proceso para sumar dos nmeros de 4
bytes cada uno, en el primero se trabajar con registros de 16 bits y en el segundo de
8 bits.

Bibliografa

Brey, B. B. Los Microprocesadores Intel. 8086 / 8088, 80186, 80286, 80386 y 80486.
Arquitectura, programacin e interfaces, Prentice Hall, Mxico DF, 19953
Biblioteca UDB 001.6404 B847 1997
Gua
3 8

Godfrey, T. Lenguaje Ensamblador para Microcomputadoras IBM : Para Principiantes y


Avanzados, Prentice Hall, Mxico DF, 19911
Biblioteca UDB 005.136 G577 1991

Puede consultar el material en lnea del EMU8086 sobre los temas de esta actividad. Se
recomiendan:

Arithmetic and logic instructions ,


http://www.emu8086.com/assembly_language_tutorial_assembler_reference/a
sm_tutorial_06.html