You are on page 1of 9

U.N.S.A F.I.P.S ESCUELA PROFESIONAL DE INGENIERA DE SISTEMAS CURSO: ARQUITECTURA DE COMPUTADORAS TERCERA PRCTICA DE LABORATORIO EL REGISTRO DE ESTADO I.

OBJETIVOS Analizar la ejecucin de instrucciones lgicas observando como stas afectan al registro de estados.

II. MARCO TERICO El REGISTRO DE ESTADO (F) de 16 bits, aunque algunos de ellos no se utilizan. Cada uno de los bits se denomina indicador o flag, que generalmente, se modifican por las operaciones lgicas y aritmticas. III. 1. ACTIVIDADES Escriba, compile y ejecute el programa paso a paso, observando el registro de estado luego de cada operacin AND, anote los datos con los que se operan, el resultado y las banderas que se activan .model small .stack .data dato1 dato2 mascara1 mascara2 .code

db 9Ah dw 2CC2h db 0F0h dw 0F0Fh

; Dato 8 bits ; Dato 16 bits ; Mscara 8 bits ; Mscara 16 bits

mov ax,@data mov ds,ax mov dl, dato1 ;primera parte mov ah, mascara1 and dl, ah mov cx, dato2 ; segunda parte mov bx, mascara2 and cx, bx and cx, cx mov ax, 4c00h ;fin del programa int 21h End

Datos con los que se operan: dato1 db 9Ah ; Dato 8 bits dato2 dw 2CC2h ; Dato 16 bits mascara1 db 0F0h ; Mscara 8 bits mascara2 dw 0F0Fh ; Mscara 16 bits BIT Dato 1(DL) Dato 2(CX) F 0 0 E 0 0 0 0 0 0 D 0 1 0 0 0 0 C 0 0 0 0 0 0 B 0 1 0 1 0 0 A 0 1 0 1 0 0 9 0 0 0 1 0 0 8 0 0 0 1 0 0 7 1 1 1 0 1 0 6 0 1 1 0 0 0 5 0 0 1 0 0 0 4 1 0 1 0 1 0 3 1 0 0 1 0 0 2 0 0 0 1 0 0 1 1 1 0 1 0 1 0 0 0 0 1 0 0

Mascara1(AH) 0 Mascara2(BX) 0 DL and AH CX and BX BANDERAS FLAG 1 AND 2 AND 3 AND 0 0

OF 0 0 0

DF 0 0 0

IF 1 1 1

TF 0 0 0

SF 1 0 0

ZF 0 0 0

0 0 0 0

AF 0 0 0

0 0 0 0

PF 1 1 1

1 1 1 1

CF 0 0 0

2. Modifique las lneas con la instruccin AND sustituyndola por la instruccin OR, repita el paso 1.

BIT Dato 1(DL) Dato 2(CX)

F 0 0

E 0 0 0 0 0 0 0

D 0 1 0 0 0 1 1

C 0 0 0 0 0 0 0

B 0 1 0 1 0 1 1

A 0 1 0 1 0 1 1

9 0 0 0 1 0 1 1

8 0 0 0 1 0 1 1

7 1 1 1 0 1 1 1

6 0 1 1 0 1 1 1

5 0 0 1 0 1 0 0

4 1 0 1 0 1 0 0

3 1 0 0 1 1 1 1

2 0 0 0 1 0 1 1

1 1 1 0 1 1 1 1

0 0 0 0 1 0 1 1

Mascara1(AH) 0 Mascara2(BX) 0 DL or AH CX or BX CX or CX 0 0 0

BANDERAS FLAG 1 OR 2 OR 3 OR OF 0 0 0 DF 0 0 0 IF 1 1 1 TF 0 0 0 SF 1 0 0 ZF 0 0 0 0 0 0 0 AF 0 0 0 0 0 0 0 PF 1 1 1 1 1 1 1 CF 0 0 0

3. Sustituya ahora por la instruccin XOR y repita el paso 1. BIT Dato 1(DL) Dato 2(CX) F 0 0 E 0 0 0 0 0 0 0 D 1 1 1 0 0 1 0 C 0 0 0 0 0 0 0 B 0 1 0 1 0 0 0 A 0 1 0 1 0 0 0 9 1 0 1 1 0 1 0 8 1 0 1 1 0 1 0 7 1 1 1 0 0 1 0 6 0 1 1 0 1 1 0 5 0 0 1 0 1 0 0 4 1 0 1 0 0 0 0 3 1 0 0 1 1 1 0 2 0 0 0 1 0 1 0 1 1 1 0 1 1 0 0 0 0 0 0 1 0 1 0

Mascara1(AH) 0 Mascara2(BX) 0 DL or AH CX or BX CX or CX BANDERAS FLAG 1 XOR 2 XOR 0 0 0

OF 0 0

DF 0 0

IF 1 1

TF 0 0

SF 0 0

ZF 0 0

0 0 0

AF 0 0

0 0 0

PF 1 0

1 1 1

CF 0 0

3 XOR

4. 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 .code mov ax,@data mov ds,ax mov dl, 1Ah mov ax, 2CC2h xor dl, ah xor dl, 0FFh mov dl, 1Ah mov ax, 2CC2h xor dl, ah not dl mov ax, 4c00h int 21h End BIT Dl 1Ah AH 2cc2h Primer bloque DL XOR AH DL XOR 0FFH BANDERAS FLAG Primer bloque DL XOR AH DL XOR 0FFH OF 0 0 DF 0 0 IF 1 1 TF 0 0 SF 0 1 ZF 0 0 0 0 0 AF 0 0 0 0 0 PF 1 1 1 1 1 CF 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 1 1 0 1 0 1 1 0 1 0 0 1 1 0 1 0 0 1 F 0 0 E 0 0 D 1 0 C 0 0 B 1 1 A 1 1 9 0 1 8 0 1

;primer bloque

;segundo bloque

;fin del programa

7 0 0

6 0 0

5 0 1

4 1 0

3 1 1

2 0 1

1 1 0

0 0 0

5. Ejecute paso a paso el segundo bloque, anote los datos con los que se operan, el resultado y las banderas que se activan BIT DL 1Ah AH 2cc2h Primer bloque DL XOR AH NOT DL 0 0 0 0 1 1 0 0 0 0 0 0 1 1 1 1 0 1 0 1 1 0 1 0 0 1 1 0 1 0 0 1 F 0 0 E 0 0 D 1 0 C 0 0 B 1 1 A 1 1 9 0 1 8 0 1 7 0 0 6 0 0 5 0 1 4 1 0 3 1 1 2 0 1 1 1 0 0 0 0

FLAG Segundo bloque DL XOR AH NOT DL

OF 0 0

DF 0 0

IF 1 1

TF 0 0

SF 0 0

ZF 0 0

0 0 0

AF 0 0

0 0 0

PF 1 1

1 1 1

CF 0 0

6. Algunas banderas se pueden activar o desactivar mediante instrucciones especficas, sin tomar en cuenta el resultado de alguna operacin. Como un ejemplo inserte la siguiente modificacin en el segundo programa. Ejecute paso a paso el programa monitoreando simultneamente el estado de las banderas, note como se activan o desactivan. mov dl, 1Ah mov ax, 2CC2h xor dl, ah xor dl, 0FFh stc std cli mov dl, 1Ah mov ax, 2CC2h clc cld sti xor dl, ah

;Activa la bandera C ;Activa la bandera D ;Desactiva la bandera I

;Desactiva la bandera C ;Desactiva la bandera D ;Activa la bandera I

Inicio MOV DL, 1Ah MOV AX, 2CC2h XOR DL,AH XOR DL, 0FFh STC STD CLI MOV DL, 1Ah MOV AX, 2CC2h CLC CLD STI XOR DL, AH Fin del programa

CF 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0

ZF 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

SF 0 0 0 0 1 1 1 1 1 1 1 1 1 0 0

OF 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

PF 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1

AF 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

IF 1 1 1 1 1 1 1 0 0 0 0 0 1 1 0

DF 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0

7. Digite el tercer programa: Ejecute solo las primeras dos instrucciones, monitoreando las banderas Cules se activaron?, cul fue el resultado de la operacin? cmo interpreta el resultado? CF 0 0 0 ZF 0 0 1 SF 0 0 0 OF 0 0 0 PF 0 0 1 AF 0 0 0 IF 1 1 1 DF 0 0 0

Inicio MOV AH, 0B9h AND AH, 40h

Se han activado el Flag Zero, el Flag de Paridad y el Flag de Interrupcin El resultado de operar el AND de B9 y 40 es 00 por lo que AH=00 Y AX=0020 Si Z=0 entonces el D6=1 y como la paridad es par el D2=1 8. Ejecute hasta la instruccin TEST y conteste otra vez las preguntas del punto 7. .model small .stack .data .code mov ax,@data mov ds,ax mov ah, 0B9h ;En binario 1011_1001 and ah, 40h ;Mascara 0100_0000 ;Si Z=1 implica que D6=0 or ah, 01 ;borra las banderas activas mov ah, 0B9h

test ah, 40h mov ax, 4c00h int 21h End

;fin del programa

Inicio MOV AH, 0B9h AND AH, 40h OR AH,01 MOV AH, 0B9h TEST AH, 40h

CF 0 0 0 0 0 0

ZF 0 0 1 0 0 1

SF 0 0 0 0 0 0

OF 0 0 0 0 0 0

PF 0 0 1 0 0 1

AF 0 0 0 0 0 0

IF 1 1 1 1 1 1

DF 0 0 0 0 0 0

Despus de la instruccin OR se han desactivo ZF y PF mientras IF se mantiene y despus de la instruccin TEST se activa nuevamente ZF y PF. El resultado de operar el TEST de B9 y 40 es 00 por lo que AH=B9 Y AX=B920 Se puede observar que al realizar TEST este realiza una conjuncin al igual que AND pero el resultado no lo guarda en el operando destino ms las banderas si cambian, si Z=0 entonces el D6=1 y como la paridad es par el D2=1 9. Escriba un programa que sume el registro AX con el valor F0DEH con el flag de acarreo. IV. CUESTIONARIO 1. Qu objetivos tiene usar la mascara1 (F0h) con las tres diferentes instrucciones lgicas? Los objetivos que tiene que usar son: AND: Hace 0 todos los bits menos significativos. OR: Hace 1 todos los bits ms significativos. XOR: Invierte todos los bits Cuando se ejecuta la primera instruccin AND el bit D7 termina en estado alto y se activa la bandera S, en la segunda instruccin AND tambin termina en alto, pero esta vez no se activa la bandera por qu? Porque despus de la primera instruccin AND hace 0 los menos significativos, y la bandera s de comparacin negativa se activa. En la segunda instruccin AND se invierte el proceso y se desactiva la bandera de resultado negativo. Cuando se ejecuta la tercera instruccin lgica, ya sea AND u OR, las banderas reaccionan de forma similar. Pero cuando se ejecuta con la instruccin XOR no por qu ocurre eso? Porque la instruccin XOR invierte todos los bits.

2.

3.

4.

En el programa se declaran datos para hacer las operaciones dnde se guardan estos datos? Se guardan en las localidades de memoria seleccionadas. 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 idnticos, pero el estado de las banderas no lo es por qu? Por la instruccin XOR que invierte el dato y deja de ser negativo, por lo tanto se desactiva la bandera S

5.

6. Cul es la diferencia fundamental que not al comparar las instrucciones AND y TEST? AND: Devuelve un resultado de comparacin TEST: Solo modifica las banderas 7. Qu relacin existe entre los bit que deseamos probar y el valor especfico de la mscara seleccionada? Los 2 de los 4 ltimos bits q se desean probar son similares a 2 de los 4 bits de la mscara. V. CONCLUSIONES Consigne al menos cinco conclusiones a las que ha arribado en el desarrollo de la prctica Si 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 Existen otras instrucciones similares a TEST que te permiten desarrollar operaciones sin que afecten el operando destino En las instrucciones lgicas AND, OR y XOR el OF siempre tiende a ser 0 y SF y ZF pueden cambiar dependiendo del valor asignado 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 nmero se ha desbordado.
El flag de paridad se utiliza especialmente en la transmisin de datos para la comprobacin de errores, ya que comprueba si el resultado de la ltima operacin aritmtica o lgica realizada tiene un nmero par o impar de bits puestos a uno.

CMP compara dos registros, o un registro y una direccin de memoria, tiene el mismo formato que el SUB ( por ejemplo CMP AX,BX ), tan slo que ninguno de los registros es alterado. Si por ejemplo son iguales, el flag de cero se pondr en uno. Es en realidad un SUB del que no se almacena el resultado.

TEST, comprobar, se puede realizar con el mismo formato de AND, ya que es equivalente a ella, tan slo que no se guarda el resultado, aunque s se modifican los flags.

Muestre un segmento de programa en assembler que ilustre el uso de las banderas del procesador .MODEL TINY .DATA cad1 db 'Las cantidades son iguales...', 13, 10,'$' cad2 db 'Las cantidades no son iguales...', 13, 10,'$' .CODE INICIO: ;Punto de entrada al programa Mov ax, 10; AX=10 Mov bx, 10; BX=10 Cmp ax,bx ;Es AX=BX? Je igual ;S entonces saltar a la etiqueta igual Lea dx,cad2 ;No, entonces imprimir Cad2 Mov ah,09h ; Int 21h ; Jmp salir ;saltar a la etiqueta salir igual: Lea dx,cad1 ;imprimir el mensaje en cad1 Mov ah,09h ; Int 21h ; salir: Mov ax,4c00h ;Salir Int 21h ; END INICIO END

You might also like