GUIA DE Laboratorio 3 lenguaje ensamblador maquinas y computadoras 1 PDF

Title GUIA DE Laboratorio 3 lenguaje ensamblador maquinas y computadoras 1
Author Gerald Aburto
Course Arquitectura De Máquina
Institution Universidad Nacional de Ingeniería Nicaragua
Pages 14
File Size 576.5 KB
File Type PDF
Total Downloads 51
Total Views 145

Summary

laboratorios de lenguaje ensablador, en ellos se relata sobre las diferentes instruciones basicas de este lenguaje, incluye algunos ejemplos e imagenes del simulador emu 8086 para visualizar mejor los procedimientos de cada instruccion...


Description

UNIVERSIDAD NACIONAL DE INGENIERÍA UNI RECINTO UNIVERSITARIO SIMÓN BOLÍVAR R.U.S.B FACULTAD DE ELECTROTECNIA Y COMPUTACIÓN MAQUINAS UNO

Elaborado por: Ronald Joaquín Bellorín Cordonero. Números de carnet: 2017 – 1039U. Carrera: Ingeniería Electrónica. Actividad: Realizar las preguntas mencionadas. Docente: Ing. Cedrick Dallas Torrez.

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.

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

4) 5) 6) 7)

¿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 Inicio Después de 1ra suma Antes de la 2da suma Después de la 2da suma Después del último Mov

Direcciones 011EH 011FH 0000 0000 1300 0000 1300 0000 1300 DB79 1300 BD79

O 0 0 0 0 0

S 0 0 0 0 0

Banderas Z A 0 0 0 1 0 1 0 0 0 0

P 0 0 0 1 1

C 0 1 1 0 0

TABLA 1 11) Cargue nuevamente el programa e invierta manualmente el estado del

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

operación? 13) Continúe ejecutando el programa hasta la segunda suma ¿Se dio algún

cambio? NO 14) Modifique el código fuente sustituyendo las instrucciones ADD por ADC y emule nuevamente el programa. 15) 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,

16) Modifique el programa para que funcione como al inicio, pero cambie los

byte1 byte2 word1 word2

datos con los siguientes valores: equ 9Dh equ 83h equ 5938 equ -5938

17) 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? 18) 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 100h equ 80 byte equ 69 1 equ 26437 byte equ 325 2 mov cl, byte1 ;resta de 2 números de 1 byte sub wor cl, byte2 d1 wor d2 mov dx, word1 ;resta de 2 números de 2 byte sub dx, word2

IN ICI O

END

t

r

CL = byte1 CL = CL + byte2

DX = word1 DX = DX word2 F I N 19) 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. 20) 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. 21) 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. 22) Repita los pasos 16 y 17, pero esta vez active manualmente el acarreo antes de cada resta ¿observa cambios en las operaciones? 23) Cambie el programa para que funcione como al principio. 24) 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? 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 1ra

Sub 2da 3ra Sbb 4ta

Minuen do 50H 6745 45H 145 50 6745 45 145

Sustrae ndo 45H 145 50H 6745 45 145 50 6745

Diferencia

O

S

Z

A

P

C

0BH 6600 5FH 9A00 0B 6600 5F 9A00

0 0 0 0 0 0 0 0

0 0 1 1 0 0 1 1

0 0 0 0 0 0 0 0

1 0 0 0 1 0 0 1

0 1 1 1 0 1 1 1

0 0 1 1 0 0 1 1

TABLA 2

25) 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 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 mul cl ret

AX = (AL) X (CL)

FIN

END

26) Digite y emule el TERCER PROGRAMA 27) 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

06

F F

06

05: FA

-06

F F

-06

F9: 06

06

F F

06

FF: FA

MU L

IM UL

Producto

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

29) Cambien la instrucción MUL por IMUL y el dato -06 por 06. 30) Ejecute el programa y anote los resultados. 31) Cambie el dato por -06, ejecute nuevamente y anote los resultados

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

33) 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.

TABLA 4 34) 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 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 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 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 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

Propósito: Multiplicación sin signo El ensamblador asume que el multiplicando sera 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 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 ú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.

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 de 8 bits. Bibliografía M i c r o p r o cesad o r e s I nt e l . 8 0 86 Brey, B. B. L o s y 6 , 80 2 8 6 , 8 0 3 8 6 8 0 4 8 6 . A r qu i t e c t u r a , p r o g r a m a c i ó n e Prentice Hall, México DF, 19953 Biblioteca UDB 001.6404 B847 1997

/ 80 8 8 , 8 0 18 i nte r fa c e s ,

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 c i p i a n t e s y Avan zados, 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. Se recomiendan: “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 ng u a g e _ tut or i a l _ a s se m b l er _ r e f e r e n c e / a sm_tutorial_06.html...


Similar Free PDFs