Guia 3

13
3 Guía 1 Instrucciones Aritméticas Facultad: Estudios Tecnologicos. 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 PR I M E R P R OGR A M A , 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? 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.

Transcript of Guia 3

Page 1: Guia 3

3Guía1

Instrucciones Aritméticas

Facultad: Estudios Tecnologicos.

Escuela: Electrónica

Asignatura: Microprocesadores

Objetivo General

Analizar la forma en que se ejecutan algunas instrucciones aritméticas y de manejo dela 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 PR I M E R P R OGR A M A , note que al inicio se declaran los datos.¿Con qué datos se realizarán las operaciones y cuáles serán los resultados? ¿Dóndese almacena el resultado al final de las operaciones?

DATOS:

byte1 >> con el valor de 125byte2 >> con el valor de 150word1 >> con el valor 20A3hword2 >> 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.

Page 2: Guia 3

PRIMER PROGRAMA

INICIO

AL = byte1

AL = AL + byte2

M[011Eh] = AL

AX = word1

AX = AX +word2

M[011Fh] = AX

FIN

#make_COM#org 100hbyte1byte2word1word2

END

equ 125equ 150equ 20A3hequ 5938h

mov al, byte1 ;suma de 2 números de 1 byteadd al, byte2mov [011Eh], al

mov ax, word1 ;suma de 2 números de 2 byteadd ax, word2mov [011Fh], ax

ret

4) Digite y emule el programa

5) Antes de ejecutar el programa tome nota del contenido almacenado en lasdirecciones 011Eh, 011Fh y 0120h en la TABLA 1, también del estado de lasbanderas.

6) Ejecute paso a paso el programa, anotando la información solicitada en laTABLA 1, observando el resultado de las operaciones y el estado de lasbanderas

¿Concuerda el resultado lo que usted esperaba? SI

MOMENTODIRECCIONES BANDERAS

011Eh 011Fh 0120h O S Z A P CInicio 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 1Antes 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 0Despué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

Page 3: Guia 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.

Ejecute paso a paso hasta la primera suma. ¿Cambió el resultado de la operación? NO

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

SI

Page 4: Guia 3

¿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,

6ta Rum.

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 elestado de las banderas.

¿Cuál fue el resultado de las operaciones?, ¿Cómo reaccionaron las banderas? y ¿porqué así y no de otra manera?

Page 5: Guia 3

14) Analice el SE G UN D O P R OG R A M A , ¿dónde se almacena el resultado de las operaciones? ¿cuál es el resultado de las mismas?

SEGUNDO PROGRAMA#make_COM#org 100hbyte1byte2word1word2

equ 80equ 69equ 26437equ 325mov cl, byte1 ;resta de 2 números de 1 bytesub cl, byte2

mov dx, word1 ;resta de 2 números de 2 bytesub dx, word2

Page 6: Guia 3

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 ysustraendos (en formato hexadecimal) con que se realizarán las operacionesen la TABLA 2.

16) Ejecute paso a paso el programa, observando los resultados de lasoperaciones 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, deforma que el minuendo pasa a ser sustraendo y viceversa. Repita el pasoanterior tomando nota en la segunda fila de la TABLA 2.

18) Repita los pasos 16 y 17, pero esta vez active manualmente el acarreoantes 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.Propósito: Substracción

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

Instrucción Prueba Minuendo Sustraendo Diferencia O S Z A P C

SUB1º

50 45 0B 0 0 0 1 0 06745 145 6600 0 0 0 0 1 0

2º45 50 5F 0 1 0 0 1 1145 6745 9A00 0 1 0 0 1 1

SBB3º

50 45 0B 0 0 0 1 0 06745 145 6600 0 0 0 0 1 0

4º45 50 5F 0 1 0 0 1 1145 6745 9A00 0 1 0 1 1 1

TABLA 2

21) 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?

Page 7: Guia 3

LOS REGISTROS SIGUIENTES:

AH, AL, CL

LOS DATOS QUE SE OPERAN

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

SE ALMACENA EN AX. (05: FA)

TERCER PROGRAMAINICIO

AH = AAh

AL = 0FFh

CL = 06h

AX = (AL) X (CL)

FIN

#make_COM#org 100hINICIO:

END

mov ah, 0AAh ;multiplica 2 números de 1 byte

mov al, 0FFh

mov cl, 06

mul cl

ret

22) Digite y emule el T ER C ER PR OGR A MA

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? SI en MUL y NO en IMUL

Instrucción Dato Multiplicando Multiplicador Producto

MUL

06 FF 06 05: FA

-06 FF -06 F9: 06

IMUL

06 FF 06 FF: FA

-06 FF -06 00: 06

TABLA 3

Page 8: Guia 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

28) 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?

29) Realice el mismo procedimiento del TRECER PROGRAMA, pero ahora el datoque será cambiado es 05 y la operación DIV por IDIV. Anote sus resultadosen la TABLA 4.

CUARTO PROGRAMAINICIO

AX = 123

CL = 05

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

FIN

#make_COM#org 100hINICIO:

END

mov ax, 123 ;multiplica 2 números de 1 byte

mov cl, 05 ;Dato

div cl

ret

Instrucción Dato Dividendo Divisor Cociente Residuo

DIV

05 7B 05 18 3

-05 7B FB 00 7B

IDIV

05 7B 05 18 3

-05 7B FB E8 3

Page 9: Guia 3

TABLA 4

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

Page 10: Guia 3

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 deADD. 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 programaAl ejecutar una resta las banderas C y A reaccionan diferente si el minuendo es mayoro 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.

SUBPropósito: Substracción

Resta el operando fuente del destino.

SBBPropó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 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 deMUL. Utilice cálculos para fundamentar su explicación.

Page 11: Guia 3

MUL

Propósito: Multiplicación sin signo

El ensamblador asume que el multiplicando sera del mismo tamaño que el delmultiplicador, 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 deDIV. 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 tomara como dividendo el registro par DX:AX, tomando como palabra alta DX y como baja AX.

Si el divisor fué 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 basicamente en lo mismo que la instrucción DIV, solo que esta últimarealiza 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

Page 12: Guia 3

Compare el funcionamiento de la directiva EQU con 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 de8 bits.

Bibliografía

Brey, B. B. L o s M i c r o p r o cesad o r e s I nt e l . 8 0 86 / 8 0 8 8 , 8 0 1 8 6, 80 2 8 6 , 8 0 3 8 6 y 8 0 4 8 6. A r qu i t e ct u r a, p r o g r a m a ci ó n e i nte r fa c e s , Prentice Hall, México DF, 19953

Biblioteca UDB 001.6404 B847 1997

Page 13: Guia 3

Godfrey, T. L e n g u a j e E n s a m b l a d or p a r a M i cr o c o m p u t a d oras I B M : P ara P r i n ci p i a nt e s y Av an zad os , Prentice Hall, México DF, 19911

Biblioteca UDB 005.136 G577 1991

Puede consultar el material en línea del EMU8086 sobre los temas de esta actividad. Serecomiendan:

“Arithmetic and logic instructions ”, http:// www. e m u 8 0 8 6 . c o m / as s e m b l y_ l a ngu a g e _ tut or i a l _ a s se m b l er _ r e f e r e n c e / asm_tutorial_06.html