View
132
Download
3
Category
Preview:
Citation preview
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.
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
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
¿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?
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
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?
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
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
TABLA 4
30) Cambie el dato por 00h y ejecute el programa ¿qué ocurrió? Error en la división entre 0
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.
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
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
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
Recommended