miércoles, 29 de octubre de 2008

Clase 27/10 - Enmascaramiento

El puerto permite el envio y recepcion de datos de afuera de la computadora hacia adentro y visceversa. Estos puertos utilizan conectores especificos, que transmiten la información bit a bit.

Al conectarse a la computadora el conector, pasa a ser una nueva posición de memoria que la lleva a un registro.

Para poder saber el valor de un solo bit (1 o 0) el proceso que se realiza es el enmascaramiento.

Esto implica, mediante compuertas AND o OR, crear, de manera lógica, una serie de bits que me permitan a mi descifrar el bit que preciso conocer. Repasando un poco las compuertas nombradas, sabemos que para que la salida de una compuerta AND sea 1, la unica manera que sea posible es que todas las entradas sean 1. Caso contrario, la salida va a ser 0.



Y por otro lado, en la compuerta OR, a menos que todas las entradas sean 0, la salida siempre va a ser 1.



Sabiendo esto, podemos ver un ejemplo del enmascaramiento:

Si nosotros tuviesemos un octeto de 8 bits, del cual queremos saber el valor del cuarto bit, podriamos hacer lo siguiente:


De esta forma conseguiriamos la forma de discriminar el cuarto bit, ya que en todos los bits de la mascara que el numero es 0, el resultado de los bits va a ser 0, en cambio poniendo un 1 en el cuarto bit que es el que me interesa, es el unico bit que podría leer ya que se mantiene el valor anterior, y los resultados podrian ser 10, 00.

[000?0?00 si yo quiero averiguar esos valores, la mascara que usaria seria 00010100, teniendo cuatro resultados posibles, en hexadecimal, 00, 10, 04, 14.]


Ahora, si yo quiero poner un 1 en los bits 1, 3 y 6, puedo hacer lo siguiente:


Usando en este caso la compuerta OR, la unica forma que quede 0 es que las entradas sean 0. al poner en la mascara un 1 en los bits en los cuales yo quiero que tengan un 1, si o si el resultado va a ser 1, porque la compuerta OR suma las entradas, entonces, 1 + 1=1 y 1+0= 1 . si a esto yo quisiera por ejemplo en los bits 7 y 5 poner un 0, podria usar la compuerta AND, y esto quedaria:
Como la compuerta es AND, poniendo un 0 el resultado si o si va a ser 0, y dado que hay otros bits que no queria asignarles ningun valor, puse un 1, para que de esa forma se mantenga el valor anterior.
Ahora una consigna incluyendo contenidos de Instrucciones del procesador y enmascaramiento:
"Se tiene en F3 un dato el cual se quiere saber si el bit 4 esta en 0. Si es así poner los bits 7 y 5 en 1 y los bits 6 y 3 en 0. En caso contrario, poner el bit 2 en 1."

10 11F3
12 2210
14 8312
16 2000
18 B322
1A 2404
1C 7541
1E 35F3
20 B02C
22 26A0
24 7716
26 28B7
28 8978
2A 39F3
2C C000

Otro ejercicio: "Se tienen dos números guardados en la dirección A0 y A1. Si los bits 1 y 5 son iguales, poner un 1 en el bit 7. Caso contrario, poner un 0 en el bit 7."

10 11A0
12 12A1
14 2322
16 8013
18 8423
1A B424
1C 257F
1E 8615
20 36A2
22 B02A
24 2580
26 7615
28 36A2
2A C000

No hay comentarios: