Practica 3 Final

14
UNIVERSIDAD NACIONAL DE SAN AGUSTÍN DE AREQUIPA FACULTAD DE INGENIERÍA DE PRODUCCIÓN Y SERVICIOS ESCUELA PROFESIONAL DE INGENIERÍA DE SISTEMAS CURSO: Arquitectura de Computadoras TRABAJO: Lab 3 Autor: CACERES PACHECO VICTOR ALFONSO

Transcript of Practica 3 Final

Page 1: Practica 3 Final

UNIVERSIDAD NACIONAL DE SAN AGUSTÍN DE AREQUIPA

FACULTAD DE INGENIERÍA DE PRODUCCIÓN Y SERVICIOS

ESCUELA PROFESIONAL DE INGENIERÍA DE SISTEMAS

CURSO: Arquitectura de Computadoras

TRABAJO: Lab 3

Autor:

CACERES PACHECO VICTOR ALFONSO

AREQUIPA - PERU

2012

Page 2: Practica 3 Final

III. ACTIVIDADES

1. Escriba, compile y ejecute el programa paso a paso, observando el registro de estado luego de cada operación AND, anote los datos con los que se operan, el resultado y las banderas que se activan

.model small

.stack

.datadato1 db 94h ; Dato 8 bitsdato2 dw 2BB2h ; Dato 16 bitsmascara1 db 0F0h ; Máscara 8 bitsmascara2 dw 0F0Fh ; Máscara 16 bits.code

movax,@datamovds,axmov dl, dato1 ;primera partemov ah, mascara1and dl, ahmov cx, dato2 ; segunda partemovbx, mascara2and cx, bxand cx, cxmovax, 4c00h ;fin del programaint 21h

EndDATO 1 DATO 2 RESULTADO

1ra AND 0b02 0b02 0b022da AND 0b00 0bf4 0b003ra AND 0001 0100 0000

Flag C P Z A S T I D OAntes de la 1ra AND 0 0 0 0 0 1 1 0 0Después de la 1ra AND 0 1 0 0 1 1 1 0 0Antes de la 2da AND 0 1 0 0 1 1 1 0 0Después de la 2da AND 0 0 0 0 0 1 1 0 0Antes de la 3ra AND 0 1 0 0 1 1 1 0 0Después de la 3ra AND 0 0 0 0 0 1 1 0 0

2. Identifique la función de las máscaras definidas

Page 3: Practica 3 Final

3. Modifique las líneas con la instrucción AND sustituyéndola por la instrucción OR, repita el paso 1.

DATO 1 DATO 2 RESULTADO1ra OR 0094 00F0 00F42da OR 2BB2 0F0F 2FBF3ra OR 2FBF 2FBF 2FBF

Flag C P Z A S T I D OAntes de la 1ra OR 0 0 0 0 0 1 1 0 0Después de la 1ra OR 0 0 0 0 1 1 1 0 0Antes de la 2da OR 0 0 0 0 1 1 1 0 0Después de la 2da OR 0 0 0 0 0 1 1 0 0Antes de la 3ra OR 0 0 0 0 0 1 1 0 0Después de la 3ra OR 0 0 0 0 0 1 1 0 0

4. Sustituya ahora por la instrucción XOR y repita el paso 1.

DATO 1 DATO 2 RESULTADO1ra XOR 00B4 00F0 00642da XOR 2BB2 0F0F 24BC3ra XOR 24BC 24BC 0000

Flag C P Z A S T I D OAntes de la 1ra XOR 0 0 0 0 0 1 1 0 0Después de la 1ra XOR 0 0 0 0 0 1 1 0 0Antes de la 2da XOR 0 0 0 0 0 1 1 0 0Después de la 2da XOR 0 1 1 0 0 1 1 0 0Antes de la 3ra XOR 0 1 0 0 0 1 1 0 0Después de la 3ra XOR 0 1 1 0 0 1 1 0 0

Page 4: Practica 3 Final

5. Digite el segundo programa, ejecute paso a paso el primer bloque, anote los datos con los que se operan, el resultado y las banderas que se activan

.model small

.stack

.data

.codemov ax,@datamov ds,axmov dl, 1Ah ;primer bloquemov ax, 2CC2hxor dl, ahxor dl, 0FFhmov dl, 1Ah ;segundo bloquemov ax, 2CC2hxor dl, ahnot dlmov ax, 4c00h ;fin del programaint 21h

End

BIT F E D C B A 9 8 7 6 5 4 3 2 1 0DI1AH 0 0 1 0 1 1 0 0 0 0 0 1 1 0 1 0AH2cc2h 0 0 0 0 1 1 1 1 0 0 1 0 1 1 0 0Primer bloqueDL XOR AH 0 0 1 0 0 0 1 1 0 0 1 1 0 1 1 0DL XOR 0FFH 0 0 0 0 0 1 1 1 1 0 0 1 0 0 1 1

BANDERAS

FLAG OF DF IF TF SF ZF 0 AF 0 PF 1 CFPrimer bloqueDL XOR AH 0 0 1 0 0 0 0 0 0 1 1 0DL XOR 0FFH 0 0 1 0 1 0 0 0 0 1 1 0

6. Ejecute paso a paso el segundo bloque, anote los datos con los que se operan, el resultado y las banderas que se activan

Page 5: Practica 3 Final

BIT F E D C B A 9 8 7 6 5 4 3 2 1 0DI1AH 0 0 1 0 1 1 0 0 0 0 0 1 1 0 1 0AH2cc2h 0 0 0 0 1 1 1 1 0 0 1 0 1 1 0 0Segundo bloqueDL XOR AH 0 0 1 0 0 0 1 1 0 0 1 1 0 1 1 0DL XOR 0FFH 0 0 0 0 0 1 1 1 1 0 0 1 0 0 1 1

BANDERAS

FLAG OF DF IF TF SF ZF 0 AF 0 PF 1 CFSegundo bloqueDL XOR AH 0 0 1 0 0 0 0 0 0 1 1 0DL XOR 0FFH 0 0 1 0 0 0 0 0 0 1 1 0

7. Algunas banderas se pueden activar o desactivar mediante instrucciones específicas, sin tomar en cuenta el resultado de alguna operación. Como un ejemplo inserte la siguiente modificación en el segundo programa, complete los comentarios donde se solicitan. Ejecute paso a paso el programa monitoreando simultáneamente el estado de las banderas, anote como se activan o desactivan.

mov dl, 1Ahmov ax, 2CC2hxor dl, ahxor dl, 0FFhstc ;std ;cli ;mov dl, 1Ahmov ax, 2CC2hclc ;cld ;sti ;xor dl, ah

CF ZF SF OF PF AF IF DFinicio 0 0 0 0 0 0 1 0MOV DL , 1Ah 0 0 0 0 0 0 1 0MOV AX , 2CC2h 0 0 0 0 0 0 1 0xor dl, ah 0 0 0 0 1 0 1 0

Page 6: Practica 3 Final

xor dl, 0FFh 0 0 1 0 1 0 1 0

stc 1 0 1 0 1 0 1 0std 1 0 1 0 1 1 1 1cli 1 0 1 0 1 0 0 1mov dl, 1Ah 1 0 1 0 1 0 0 1

mov ax, 2CC2h 1 0 1 0 1 0 0 1

clc 0 0 1 0 1 0 0 1cld 0 0 1 0 1 0 0 0sti 0 0 1 0 1 0 0 1xor dl, ah 0 0 1 0 1 0 0 0

8. Digite el tercer programa: Ejecute solo las primeras dos instrucciones, monitoreando las banderas ¿Cuáles se activaron?, ¿cuál fue el resultado de la operación? ¿cómo interpreta el resultado?

FLAG OF DF IF TF SF ZF 0 AF 0 PF 1 CF

mov dl, 1Ah 0 0 1 0 0 0 0 0 0 1 1 0mov ax, 2CC2h 0 0 1 0 0 0 0 0 0 1 1 0

9. Ejecute hasta la instrucción TEST y conteste otra vez las preguntas del punto 8.

.model small

.stack

.data

.codemov ax,@datamov ds,axmov ah, 0B9h ;En binario 1011_1001and ah, 40h ;Mascara 0100_0000

;Si Z=1 implica que D6=0or ah, 01 ;borra las banderas activas

Page 7: Practica 3 Final

mov ah, 0B9htest ah, 40hmov ax, 4c00h ;fin del programaint 21h

End

FLAG OF DF IF TF SF ZF 0 AF 0 PF 1 CF

mov ax,@data 0 0 1 0 0 0 0 0 0 0 1 0mov ds,ax 0 1 1 0 0 0 0 1 0 1 1 0

1. 10. Escriba un programa que sume el registro AX con el valor F0DEH con el flag de acarreo. Ejecute el mismo con el flag de acarreo en cero, anote los operandos de entrada a la ALU, el resultado obtenido y el valor de los flags antes y después de la ejecución del programa.

FLAG OF DF IF TF SF ZF 0 AF 0 PF 1 CF

mov ax,@data 0 0 1 0 0 1 0 0 0 0 1 0mov ds,ax 0 1 1 0 0 0 0 1 0 1 1 0

11. Vuelva a correr el programa anterior con el flag de acarreo en uno, anote los operandos de entrada a la ALU, el resultado obtenido y el valor de los flags antes y después de la ejecución del programa.

C P Z A S T I D O0 0 0 0 0 1 1 0 0

Page 8: Practica 3 Final

IV. CUESTIONARIO

1. ¿Qué objetivos tiene usar la mascara1 (F0h) con las tres diferentes instrucciones lógicas?

Los objetivos que tiene que usar son:AND: Hace “0” todos los bits menos significativos.OR: Hace “1” todos los bits más significativos.XOR: Invierte todos los bits

2. Cuando se ejecuta la primera instrucción AND el bit D7 termina en estado alto y se activa la bandera S, en la segunda instrucción AND también termina en alto, pero esta vez no se activa la bandera ¿por qué?

Porque después de la primera instrucción AND hace “0” los menos significativos, y la b a n d e r a “ s ” d e c o m p a r a c i ó n n e g a t i v a s e a c t i v a . E n l a s e g u n d a i n s t r u c c i ó n A N D s e invierte el proceso y se desactiva la bandera de resultado negativo.

3. Cuando se ejecuta la tercera instrucción lógica, ya sea AND u OR, las banderas reaccionan de forma similar. Pero cuando se ejecuta con la instrucción XOR no ¿por qué ocurre eso?

Porque la instrucción XOR invierte todos los bits.

4. En el programa se declaran datos para hacer las operaciones ¿dónde se guardan estos datos?

Se guardan en las localidades de memoria seleccionadas.

5. En el segundo programa, cuando se ejecutan el primer bloque del programa el resultado se almacena en DL, lo mismo curre con el segundo bloque; los dos resultados son idénticos, pero el estado de las banderas no lo es ¿por qué?

P o r l a i n s t r u c c i ó n X O R q u e i n v i e r t e e l d a t o y d e j a d e s e r n e g a t i v o , p o r l o t a n t o s e desactiva la bandera “S”

6. ¿Cuál es la diferencia fundamental que notó al comparar las instrucciones AND y TEST?

AND: Devuelve un resultado de comparaciónTEST: Solo modifica las banderas

Page 9: Practica 3 Final

7. ¿Qué relación existe entre los bit que deseamos probar y el valor específico de la máscara seleccionada?

Los 2 de los 4 últimos bits que se desean probar son similares a 2 de los 4 bits de lamáscara.

V. CONCLUSIONES

Consigne al menos cinco conclusiones a las que ha arribado en el desarrollo de la práctica

1. En las instrucciones lógicas AND, OR y XOR el OF siempre tiende a ser 0 y SF y ZF pueden cambiar dependiendo del valor asignado

2. Existen otras instrucciones similares a TEST que te permiten desarrollar operaciones sin que afecten el operando destino

3. Cuando se opera y hay acarreo en el último bit sobre el que se ha operado, el flag de acarreo se pone a uno, cuando ese número se ha desbordado.

4. se desea activar o desactivar esto se hace siguiendo algunas instrucciones especificas por ejemplo: si desea activar es ST + bandera y si se desea desactivar es CL + bandera

5. El flag de paridad se utiliza especialmente en la transmisión de datos para la comprobación de errores, ya que comprueba si el resultado de la última operación

aritmética o lógica realizada tiene un número par o impar de bits puestos a uno.

Muestre un segmento de programa en assembler que ilustre el uso de las banderas del procesador

.MODEL TINY.DATAcad1 db 'Las cantidades son iguales...', 13, 10,'$'cad2 db 'Las cantidades no son iguales...', 13, 10,'$'.CODEINICIO: ;Punto de entrada al programaMov ax, 10; AX=10Mov bx, 10; BX=10Cmp ax,bx ;Es AX=BX?Je igual ;S¡ entonces saltar a la etiqueta igualLea dx,cad2 ;No, entonces imprimir Cad2Mov ah,09h ;Int 21h ;Jmp salir ;saltar a la etiqueta salir igual:Lea dx,cad1 ;imprimir el mensaje en cad1Mov ah,09h ;Int 21h ;salir:Mov ax,4c00h ;Salir Int 21h ;END INICIOEND

Page 10: Practica 3 Final

IV. CUESTIONARIO

1. Tomando en cuenta los datos particulares de cada operación explique el porqué de la activación o desactivación de las banderas O, S, Z, C y A en el primer programa

No estan activadas por que aun no s e ejecuto ninguna instrucción del programa, ninguna operación logica u aritmetica.DESPUES DE LA PRIMERA SUMA:Al momento de sumar sin acarreo los datos 7D y 96 se activan las banderas C y A pues aloperar los b i t s se generan acar reos en ambos casos . La bandera Z no se ac t i va pues e l resu l tado es d is t in to de cero . La bandera O no se ac t i va pues a l e fec tuar la operac ión aritmética XOR entre los dos acarreos (C y A) el resultado es cero. Al final la bandera S permanece desactivada pues el bit más significativo permanece en bajo

ANTES DE LA SEGUNDA SUMA:El estado de las banderas se mantiene pues no se ha realizado ninguna operación aritmética o lógica donde estas puedan verse afectadas.DESPUES DE LA SEGUNDA SUMA:El estado de las banderas de acarreo C y A se coloca en bajo pues al efectuar esta operación no se generan acarreos. La bandera P se activa pues los ocho bits menos significativos poseen un número par de bits en alto. La bandera Z permanece desactivada porque el resultado es diferente de cero. La bandera O permanece inactiva pues al efectuar la operación XOR con los valores de las banderas de acarreo C y A el resultado es cero. La bandera S permanece desactivada porque el bit más significativo resulta en bajo

2. ¿Cómo se especifica en una instrucción de multiplicación que se desea trabajar con números de un byte?Se espec i f i ca por med io de l tamaño de l reg is t ro o var iab le que es tamos usando como multiplicador en la misma instrucción MUL o IMUL

3. En qué registros se almacenan los datos y el resultado de una multiplicación de un byte?E l mu l t ip l i cando se a lmacena en e l reg is t ro AL , e l mu l t ip l i cador es cua lqu ie r reg is t ro o variable de tamaño de un byte. El producto se almacena en el registro AX ya que el resultado es un número de doble ancho.

Page 11: Practica 3 Final

4. Explique porque los resultados de las operaciones cambiaron al usar IMUL en lugar de MUL.Los da tos cambian por la fo rma en que e l m ic roprocesador opera los fac to res para ob tener e l producto

5. ¿Cómo se implementa la división?Supongo que invirtiendo la multiplicacion.

6. ¿Qué es una dirección de puerto?Es un soket un lugar virtual para la coneccion entre usuarios por la red.