Anda di halaman 1dari 20

2013

Integrantes:
Samara Betancourt Erwin Molina

Grupo 4T1-CO Profesor: Ing. Carlos Ortega

DESARROLLO O PROCEDIMIENTO:

1. Inicializa el Emu 8086 2. Corre los siguientes programas.

Actividades
1. Analice el PRIMER PROGRAMA, note que al inicio se declaran los datos.

Con qu datos se realizarn las operaciones aritmticas y cules sern los resultados, tanto en decimal como en hexadecimal? Dnde se almacena el resultado al final de las operaciones?

En el primer bloque la operacin aritmtica es una suma (add) con los datos sus datos correspondientes:

Al=125(7Dh) y con byte2=150(98h) por tanto el resultado: Resultado decimal = 275 Resultado en hexadecimal: 113h

El resultado final se almacena en AL. En el segundo bloque la operacin aritmtica es una suma (add) con los datos sus datos correspondientes:

AL= word1= 20A3 y Word2= 5938 Resultado en decimal= 31195 Resultado en Hexadecimal = 79DB

El resultado final se almacena en AX

2. 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 y seleccione del men VIRTUAL DEVICES la opcin LED_DISPLAY.EXE

3. 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
Direcciones 0720:Desplazamiento Banderas 011Eh 011Fh 0120h Display O S Z A P Inicio 00 00 00 00000 0 0 0 0 0 Al final del Primer 13 00 00 00019 0 0 0 1 0

Momento

Bloque Al final del Segundo Bloque

C 0 1 0

13

DB

79 Tabla 1.

31195

4. Cambie los datos con los siguientes valores: byte1 equ 9Dh byte2 equ 83h word1 equ 5938 word2 equ -5938

5. Corra a pasos el programa observando la ejecucin de cada instruccin y el estado de las banderas.
Al momento de realizar la ejecucin paso a paso del programa observamos que: En la primera instruccin aritmtica fue suma (add) , la cual activo las banderas: CF: indicando que se produjo un desbordamiento en la instruccin. OF: indicando un desbordamiento de signo. AF: indicando que hubo que llevar un nibble(4 bit).

En la segunda instruccin aritmtica fue suma (add) , la cual activo las banderas: CF: indicando que se produjo un desbordamiento en la instruccin. ZF: indicando un desbordamiento de signo. OF: indica que no existe un sobre flujo aritmtico esta bandera se desactivo. PF: indicando que existe una paridad par

Cambio de las banderas en la primer operacin

Cambio de las banderas en la segunda operacin

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

El resultado de la primera operacin fue 120h, las banderas afectadas fueron CF,OF,AF lo que indicaron la activacin y reaccin puesto que hubo una paridad, tambin un overflow y como la operacin es una suma , en la parte binaria se realizo algn acarreo. El resultado de la segunda operacin fue 0000, las banderas afectadas fueron CF,ZF,PF,AF lo que activaron y reaccionaron puesto que la operacin fue una ADD se presento una paridad y hubo acarreo y como el resultado fue cero hubo la activacin de la bandera ZF.

Segundo Programa

Actividades

Ejecute paso a paso, analizando el proceso. Anote los resultados en la primera fila de la Tabla 2.
Instruccin MUL IMUL Dato 06 -06 06 -06 Multiplicando FF FF FF FF Multiplicador 06 -06 06 -06 Producto 05FA F906 FFFA 0006

RESULTADO

RESULTADO

RESULTADO

RESULTADO

Tercer Programa

Actividades

Realice el mismo procedimiento del SEGUNDO PROGRAMA, pero ahora el dato que ser cambiado es 05 y la operacin DIV por IDIV. Anote sus resultados en la Tabla 3.

Div con 05

Div con -05

IDiv con 05

IDiv con- 05

Instruccin DIV IDIV

Dato 05 -05 05 -05

Dividendo FF FF FF FF

Divisor 05 FB 05 FB

Cociente Error AE Error Error

Residuo Error 65 Error Error

Podemos afirmar que en las instrucciones DIV y IDIV el resultado fue una interrupcin porque el divisor que lo extrae del registro CX, y el dividendo lo extrae del registro AL, luego el resultado excede la capacidad de 8 bits donde se guarda el cociente (registro AL). Si observamos el registro SP en afectado, porque cuando se meten valores de 16 bits en registros de 8 bits, estos val al apuntador de pila para preservarlos y utilizarlos despus.

1. Cambie el dato por 00h y ejecute el programa qu ocurri? El programa menda un mensaje de error. Adems porque toda divisin entre cero es un resultado indefinido.

Actividades extra de la hora de laboratorio a) Primer programa

1. Tomando en cuenta los datos particulares de cada operacin explique el porqu de la activacin o desactivacin de las banderas O, S, Z, C y A.
La bandera OF no se activa porque al efectuar la operacin aritmtica XOR en los acarreos de AF Y CF el resultado que da es cero. La bandera SF permanece desactivada por que el bit mas significativo permanece en bajo (0). Cuando se nos presenta la primera suma 125(7D) y 150(98h) se activan las bandera CF y AF porque al operar la instruccin se genera acarreos en los dos casos.

2. Modifique el cdigo fuente sustituyendo las instrucciones ADD por ADC y emule nuevamente el programa, repita el paso 4 y 5 y compare con los resultados obtenidos con los obtenidos con ADD Qu resultados se modificaron?, qu parte no?, Por qu cree que se dieron esos cambios especficos en los resultados?

Comparacin:

Momento ADD
Inicio

Direcciones 0720:Desplazamiento

Al final del Bloque Al final del Segundo Bloque

011Eh 011Fh 00 00 Primer 20 00 20 00

0120h 00 00 00

Banderas Display O S Z A P 00 0 0 0 0 0 00032 1 0 0 1 0 00000 0 0 1 1 1

C 0 1 1

Momento ACC
Inicio

Direcciones 0720:Desplazamiento

Banderas Z 0 0 0 A 0 1 1 P 0 0 0 C 0 1 1

Al final del Bloque Al final del Segundo Bloque

011Eh 011Fh 00 00 Primer 20 00 20 01

0120h 00 00 00

Display O S 00 0 0 00032 1 0 00001 0 0

En la primera operacin el resultado de ADC es igual al resultado de la primera operacin de ADD. En la operacin ADC la activacin de banderas CF, AF, IF es igual a las activaciones anteriores de la operacin ADD. Esto debe porque se presenta un desbordamiento de carreo en la operacin, dems una paridad par. por consiguiente el comportamiento de las banderas fue igual.

En la segunda operacin el resultado de ADC es diferente al resultado que se da en la operacin de ADD esto se da porque se suma al resultado final el valor almacenado en la bandera de acarreo CF . Despus que se suma regresa a su estado inactivo. El resultado de esta suma es diferente de cero y no se activa la bandera ZF , pero tambin se mantiene inactiva la bandera OF . la bandera SF es igual a cero porque el bit mas significativo del resultado es igual a 0 .

b) Segundo programa

1. Cmo se especifica en una instruccin de multiplicacin que se desea trabajar con nmeros de un byte?
R: Para multiplicar dos nmeros de un byte, el multiplicando est en el registro AL y el multiplicador es un byte en memoria o en otro registro. Para la instruccin MUL, la operacin multiplica el contenido del AL por el contenido del CL. El producto generado est en el registro AX. mov al, 0FFh mov cl, 06 ;dato a modificar mul cl EL operando es de 8 bits (1 byte)

2. En qu registros se almacenan los datos y el resultado de una multiplicacin de un byte? R: En el caso del programa, ensamblador asume que el multiplicando ser del mismo tamao
que del multiplicador, el multiplicando se encuentra en el registro AL, por lo tanto multiplica el valor almacenado en este registro con el multiplicador u operando que este caso es CL el cual es de 8 bits almacenando el producto generado en el registro AX. La operacin ignora y borra cualquier informacin que pueda estar en AH.

3. Explique porque los resultados de las operaciones cambiaron al usar IMUL en lugar de MUL. Utilice clculos para fundamentar su explicacin. R: Como sabemos los datos cambian por como opera el microprocesador para obtener los
productos. Cuando utilizamos la instruccin Mul el microprocesador asume que esta trabajando con cantidades sin ningn signo, y cuando utilizamos la instruccin IMUL el microprocesador toma en cuanta el digno de ambos factores. Mul multiplica operando sin signo, al realizar esta operacin de dos nmeros de un byte, el multiplicando est en el registro AL y el multiplicador es un byte en memoria o en otro registro. La operacin multiplica el contenido del AL por el contenido del CL. El producto generado est en el registro AX.

En el segundo programa el multiplicando es 0ff (-1) y el multiplicador es 06 (6) el resultado se guarda en AX Si el resultado guardado en AX es distinto de 0 activa los indicadores CF y OF. La bandera Cf se activa cuando se produce acarreo multiplicacin, entre nmeros sin signo. La bandera of se utiliza en la aritmtica de enteros con signo cuando un nmero sobrepasa la capacidad de representacin del registro. IMUL multiplica operando con signo las banderas cf y of no hay cambios debido a que no existe un desbordamiento y acarreo en la operacin el resultado se ajusta al operando imul. c) Tercer programa

1. Cmo se especifica en una instruccin de divisin que se desea trabajar con nmeros de un byte?
R: SE especifica por medio de la variable o por medio del tamao del registro que usamos como divisor en la instruccin Div o IDIV. A travs del operando. Este debe de ser de 8 bits para que el procesador sepa que que la operacin ser de 1 byte.

2. En qu registros se almacenan los datos y el resultado de una divisin de un byte? R:


AX = Dividendo, AL = Cociente ,AH = Residuo El divisor puede ser cualquier registro de propsito general de 8 bits. El dividendo se almacena en AX.El divisor en cualquier registro de un byte. Luego cuando se ejecuta la divisin el cociente se almacena en AL y el residuo en AH. El resultado se devuelve en AL, y el resto en AH. Si por ejemplo AX valiese 501d y cl valiese 2, al hacer el DIV CL, en AL quedara 255 y en AH quedara 1.

3. Explique porque los resultados de las operaciones cambiaron al usar IDIV en lugar de DIV. Utilice clculos para fundamentar su explicacin.
Los resultados de estas operaciones cambian por que la funcin de la operacin DIV hace una divisin sin tomar en cuenta el signo de los operandos, y la instruccin IDIV si los toma en cuenta(los signos de los operandos). Cabe mencionar que, todo nmero con signo negativo, es transformado a su complemento a 2 antes de ser guardado en un registro; es por eso que al hacer las operaciones con -05 el registro CL = FBh.

Como -05h es de signo negativo, entonces hay que hacer su complemento a 2, esto se hace en su forma binaria:00000101b-----Foma binaria Si cambiamos los 1s por 0s y los 0s por 1s, obtenemos el complemento a 1, entonces nos queda:11111010b-----Complemento a 1 de 00000101b Sumamos 1 al complemento a 1 y asi de esa manera obtendremos el complemento a 2 11111010 + 1 = 11111011-------complemento a 2 de 00000101b Pasando el complemento a 2 a hexadecimal tenemos:1111 1011b = F Bh IDIV hace la operacin divisin dejando a un lado el signo de los operadores por un momento, para luego incorporarlo al final, en el resultado. Por tanto, no hace la operacin con el complemento a 2 de los nmeros con signo, sino que solo toma la magnitud de los nmeros y realiza la operacin; Veamos:

Ejemplo de como funciona IDIV para 0Ah/(-05h) Ah = 10d = 000001010b ----- el bit mas significativo es el bit de signo. -05 = -5d = 100000101b ----- el bit mas significativo es el bit de signo. Entonces, quitando el bit de signo y realizando la operacin IDIV: 00001010 IDIV 00000101 = 00000010b Complementando a 2 el resultado, tenemos: 00000010b ------- resultado en binario 11111101b ------- complemento a 1 11111101 + 1 = 11111110b ------ complemento a 2 del resultado Pasndolo a hexadecimal: 1111 1110b = F Eh Que es el resultado que nos mostrara en AL.

4. Por qu la ltima modificacin del programa gener un error en la ejecucin? R: Porque el operando guardado en CL = 00h. Y esto da como resultado una divisin entre cero,
lo cual es indeterminado. A medida que el divisor se acerca a cero, el resultado de la operacin de divisin se hace cada vez ms grande y requerira de mucho espacio en los registros.

Anda mungkin juga menyukai