GUIA DE TRABAJOS PRACTICOS CATEDRA: … · 1101010011 2= 512+256+64+16+2+1=851 10 ... diez...

49
1 GUIA DE TRABAJOS PRACTICOS CATEDRA: ARQUITECTURA DE LAS COMPUTADORAS CARRERA: INGENIERIA EN SISTEMAS DE INFORMACION FACULTAD REGIONAL MENDOZA UNIVERSIDAD TECNOLOGICA NACIONAL AÑO 2010

Transcript of GUIA DE TRABAJOS PRACTICOS CATEDRA: … · 1101010011 2= 512+256+64+16+2+1=851 10 ... diez...

1

GUIA DE TRABAJOS PRACTICOS

CATEDRA: ARQUITECTURA DE LAS COMPUTADORAS

CARRERA: INGENIERIA EN SISTEMAS DE INFORMACION

FACULTAD REGIONAL MENDOZA

UNIVERSIDAD TECNOLOGICA NACIONAL

AÑO 2010

2

INDICE DE TRABAJOS PRACTICOS

PRÁCTICO 1 PARTE A: SISTEMAS DE NUMERACIÓN PAG. 3 - 5

PARTE B: COMPLEMENTACIÓN BINARIA PAG. 5 - 6

PARTE C: PUNTO FLOTANTE PAG. 6 - 7

PRÁCTICO 2 CÓDIGOS PAG. 8 - 12

PRÁCTICO 3 PARTE A: ALGEBRA DE BOOLE PAG. 13 - 15

PARTE B: SIMPLIFICACIÓN DE FUNCIONES PAG. 15 - 17

PRÁCTICO 4 SISTEMAS COMBINACIONALES PAG. 18 - 25

PRÁCTICO 5 SISTEMAS SECUENCIALES PAG. 26 - 29

PRÁCTICO 6 PARTE A: MEMORIAS PAG. 30 - 30

PRÁCTICO 6 PARTE B: ENSAYO PRÁCTICO DE MEMORIA RAM PAG. 31 - 33

PRÁCTICO 7 PROGRAMACIÓN DE UNA COMPUTADORA ELEMENTAL

DIDÁCTICA Y SIMULADOR PAG. 34 - 39

PRÁCTICO 8 PROGRAMACIÓN COMPUTADORA PERSONAL- USO DE DEBUG

PARTE A: RECONOCIMIENTO DE REGISTROS INTERNOS PAG.40 - 40

PARTE B: PROGRAMAS AVANZADOS PAG. 41 - 43

PRÁCTICO 9 PROGRAMAS DE APLICACIÓN CON PERIFÉRICOS

PARTE A: UTILIZACIÓN DE INTERRUPCIONES POR

SOFTWARE DEL BIOS. PAG. 44 - 44

PARTE B: PERIFÉRICOS

USANDO PLACA PUERTO PARALELO PAG. 44 - 48

PRÁCTICO 10 RECONOCIMIENTO DE EQUIPAMIENTO COMPUTACIONAL

Y PERIFÉRICOS PAG. 49 - 49

3

TRABAJO PRÁCTICO NO 1

PARTE A: SISTEMAS DE NUMERACIÓN

EJERCICIOS A RESOLVER EN CLASE

EJERCICIO 1:

Convertir a decimal los siguientes números.

a) 11010100112 b)1BF16 c) 111101,101012

d) 2328 e) 575,548 f) 2CD,516

Resolución del punto a) Siempre que se quiera convertir de cualquier sistema de numeración a decimal el método más apropiado es el del polinomio de numeración.

p

p

i

i

n

n

n

n babababababaN−

− ++++++++= ............... 11

00

11

Se representa el nº a convertir mediante el polinomio y se lo opera en decimal obteniendo el resultado en decimal. 11010100112=1x29+1x28+0x27+1x26+0x25+1x24+0x23+0x22+1x21+1x20 11010100112=512+256+64+16+2+1=85110

EJERCICIO 2:

Convertir a octal los siguientes números.

a) l38210 b) 7523,23610 c) 111010012 d) 1011011,10112 e) 45BA16 f) DCBA,2F16

EJERCICIO 3: Convertir a hexadecimal los siguientes números. a) 1001101,100112 b) 6748 c) 5272,328 d) 832410 e) 454510 f) 896310

EJERCICIO 4: Convertir a binario los siguientes números.

a) 157810 b) 359,7510 c) 544,248

d) 637,438 e) DAB,B216 f) EC,9B16

4

Resolución parte c) Cuando quiero convertir un nº de cualquier otra base a decimal el método más conveniente es el de las divisiones sucesivas para la parte entera y multiplicaciones sucesivas para la parte fraccionaria porque todas las operaciones se hacen en decimal. 359/2=179 y el resto es 1 179/2=89 R=1 89/2=44 R=1 44/2=22 R=0 22/2=11 R=0 11/2=5 R=1 5/2=2 R=1 2/2=1 El nº se forma a partir del último cociente y todos los restos hacia arriba: 111001112

Para la parte fraccionaria se hace lo siguiente: 0,75x2=1,5 (se saca la parte entera y se vuelve a multiplicar por dos hasta que la parte fraccionaria tome el valor cero) 0,5x2=1,0 la parte fraccionaria es 11 la conversión completa es: 11100111,112

EJERCICIO 5: Convertir a base dos el número 78,3 en base diez, y volverlo a base diez apreciando seis bits fraccionarios. ¿Qué conclusiones resultan?.

EJERCICIO 6: ¿Cuál es el mayor número decimal que puede ser representado por 3 y 6 dígitos hexadecimales ?.

EJERCICIOS A RESOLVER POR EL ALUMNO

EJERCICIO 1:

Ordenar para los siguientes casos los números de mayor a menor.

a) (BA3)16 (11001011)2 (8342)10

(E4A)16 (6895)8 (11101101111)2

b) (1011101)2 (5DFC)16 (7835)10

(BC57)16 (57771)10 (110110111)2

c) (100)16 (110001011)2 (3761)10

(5075)8 (3D8)16 (907)10

5

EJERCICIO 2:

Dado el número 10, convertirlo a base diez, suponiendo que está: a) en base dos; b) en base seis; c) en base ocho; d) en base quince.

EJERCICIO 3: ¿Cuántos símbolos tendrá un sistema de numeración con base 14?. Indicar los posibles individuos del mismo.

PARTE B: COMPLEMENTACIÓN BINARIA EJERCICIOS PARA RESOLVER EN CLASE

EJERCICIO 1: Efectúe las siguientes operaciones utilizando palabras de 8 bits, 1) Representando los números negativos mediante el convenio de complemento a dos, 2) Representando los números negativos mediante el convenio de complemento a uno.

a) 35 - 21 b) -48 + 21

c) -25 - (-39) d) -63 – 18

Resolución punto a)

1) Transformamos una resta en una suma : 35+(-21) 2) Representamos en binario los dos números positivos rellenando con ceros a la iz-

quierda hasta completar los 8 bits. 3) Complementamos el negativo cambiando ceros por unos y unos por ceros en com-

plemento a uno y además sumandole 1 en complemento a dos. 4) Hacemos la suma.

35 = 00100011 21 = 00010101 -21= 11101010 (complemento a uno) -21= 11101011 (complemento a dos) 00100011 00100011 11101011 11101010 100001110 (en C-2 el uno excedente no 100001101 se toma en cuenta) (1410) 1 (se suma el 1excedente en C-1) 00001110 (1410)

EJERCICIO 2: Indique cuál es el máximo número decimal positivo y negativo representa-do en el convenio de complemento a dos, si se utilizan palabras de 16 bits y 32 bits.

6

EJERCICIOS PARA RESOLVER POR EL ALUMNO EJERCICIO 1: Resuelva los siguientes ejercicios en complemento a uno y complemento a dos. a) 896-325 b) –478 –124 c) 75-458 PARTE C: PUNTO FLOTANTE EJERCICIOS PARA RESOLVER EN CLASES

EJERCICIO 1: Disponiendo de una palabra de 36 bits, de los cuáles 1 es destinado para el bit de signo del número, 8 para el exponente y 27 para la mantisa, represente en punto flotante y en base 2, 8 y 16 los siguientes números decimales.

a) 29 b) 52,73 c) 0,125 d) 0,011

Resolución del punto c)

1) Primero se convierte el número al sistema binario. 2) Luego se expresa en notación cientifica. 3) Se representa en punto flotante.

1) 0,125 = 0,0012 2) 0,001 = .1 x 2-2 ( 15,0 <≤ M ) normalización de la mantisa 3) el primer bit de la expresión de punto flotante es el bit de signo 0 (positivo),

1(negativo); los 8bits siguientes corresponden al exponente (en este caso exceso 12810). De 0 a 127 corresponden a los exponentes negativos; el 128 es exponente cero y del 129 al 255 corresponden a los exponentes positivos. Los siguientes vein-tisiete bits corresponden a la mantisa.

4) El primer bit es cero por ser el número positivo. 5) El exponente se calcula restando 128-2=126 que en binario es 01111110 6) La mantisa es 100000000000000000000000000

001111110100000000000000000000000000 (esta sería la representación en punto flotante base del exponente dos exceso 128) Tomando el mismo ejemplo lo representaremos en base 8

0,001= .001 x 80 (en este caso no existe normalización porque se corre la coma de 3 en 3)

010000000001000000000000000000000000

Tomando el mismo ejemplo en base 16

0,001 = .001 x 160 (se corre la coma de 4 en 4)

01000000000100000000000000000000000

7

EJERCICIO 2: Efectúe las siguientes operaciones de acuerdo a la representación en punto flotante indicada en el ejercicio anterior, y en base 2. a) 110011 + 11100,110110 + 101,11 b) 1110100,0111 + 10110,0011 c) 1010010,00101 + 0,000010011001

EJERCICIO 3: Obtenga los números decimales de la siguiente representación en punto flotante de base 2. a) 0 10001101 1110010010100001... b) 1 01010001 1111010001100001...

EJERCICIO 4: Indique cuáles son los máximos y mínimos números positivos deci-males que pueden representarse en el formato de punto flotante indicado en simple y doble precisión, y base 2.

EJERCICIOS PARA SER RESUELTOS POR EL ALUMNO

EJERCICIO 1: Disponiendo de una palabra de 36 bits, de los cuáles 1 se destina para el bit de signo del número, 8 para el exponente y 27 para la mantisa, representar en punto flotante y en base 2, 8 y 16 los siguientes números decimales.

a) 25,49 b) 0,66 c) 0,00000073 d) 96,2587

EJERCICIO 2: Efectúe las siguientes operaciones de acuerdo a la representación en punto flotante indicada en el ejercicio anterior, y en base 2. a) 0,00000010111101 + 10011110,001 b) 0,11111010 + 0,000000110 c) 1101001010,0001 + 0,000001100001011

EJERCICIO 3: Obtenga los números decimales de la siguiente representación en punto flotante de base 2. a) 0 00111110 100011110101... d) 0 10110100 110010011101...

EJERCICIO 4: Indique cuáles son los máximos y mínimos números positivos deci-males que pueden representarse en el formato de punto flotante indicado en simple y doble precisión, y base 2. Con un exponente de 7 bits.

8

TRABAJO PRÁCTICO NO 2

CÓDIGOS

EJERCICIOS A RESOLVER EN CLASE

EJERCICIO 1: Realizar la tabla de un código Gray de 5 bits.

EJERCICIO 2: Realizar la tabla de un código Jhonson de 6 bits. Indique que características presenta este código.

EJERCICIO 3: Completar el cuadro, según los códigos indicados para la codificación de los números decimales enunciados. ¿Cuáles de los códigos son auto complementarios?. ---------------------------------------------------------------------------------------------------------------------------- Decimal BCD 2421 BCD EXC3 BCD 3421 BCD 5421 ----------------------------------------------------------------------------------------------------------------------------

7 23 67,5 81 95,8

104 237 982,99

----------------------------------------------------------------------------------------------------------------------------

EJERCICIO 4: Indicar cual es la distancia mínima del código BCD Aiken. Obtener a partir de él un código de paridad impar con la incorporación de un bit de paridad. ¿ Cuál es la distancia mínima del código resultante ?.

EJERCICIO 5: Realizar la tabla de los códigos 2 entre 5, y biquinario. Indicar la distancia mínima de ellos, y la denominación que reciben estos tipos de códigos.

EJERCICIO 6: Realice la tabla del código Hamming para la detección y corrección de un bit, tomando como código base de información el BCD 3421.

12 ++≥ pnp p=nº de bits a agregar en el nuevo código 3 4 2 1 n= nº de bits del código 3421 (4) 0 0 0 0 813423 =++≥ los p bits los desarrollamos en binario natural 0 0 0 1 C3 C2 C1 0 0 1 0 0 0 0

9

0 0 1 1 b1 0 0 1 los bn equivalen a los bit del nuevo código y están 0 1 0 0 b2 0 1 0 codificados en binario natural 0 1 0 1 b3 0 1 1 los cn se los denomina bits correctores de error y se 0 1 1 0 b4 1 0 0 calculan de la siguiente manera 0 1 1 1 b5 1 0 1 1 1 0 1 b6 1 1 0 75311 bbbbc ⊕⊕⊕=

1 1 1 0 b7 1 1 1 76322 bbbbc ⊕⊕⊕=

76543 bbbbc ⊕⊕⊕=

ahora considerando que no hay error al recibir el código nuevo podemos decir que c1,, c2 y c3 valen cero y así debido a una propiedad de la or exclusiva podemos extrapolar b1, b2 y b4

7531 bbbb ⊕⊕=

7632 bbbb ⊕⊕=

7654 bbbb ⊕⊕=

donde ya tenemos calculados los 3 bits que agregamos al nuevo código; ahora confeccio-namos el código de Hamming completo b7 b6 b5 b4 b3 b2 b1

0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 1 1 0 0 1 0 0 1 1 1 1 0 0 1 0 1 0 1 0 0 1 0 1 1 0 1 0 1 1 0 0 1 1 0 1 1 0 1 0 0 1 1 0 0 1 1 0 1 1 1 1 0 0 0

EJERCICIO 7: Indicar las distintas combinaciones binarias asignadas a cada uno de los siguien-tes números, caracteres ó símbolos especiales, en el código ASCII de 7 bits. 0 ; % ; , ; G ; ) ; 3 ; + ; & ; . ; T ; ¿ ; ´

EJERCICIO 8: Indicar a que números, caracteres ó símbolos especiales pertenecen las combina-ciones del código ASCII de 7 bits si las mismas se representan con los siguientes números en octal.

75 ; 12 ; 105 ; 62 ; 52 ; 13 ; 74 ; 132 ; 55 ; 27

CIFRADO DE DATOS O ENCRIPTACIÓN

EJERCICIO 9: Dado el siguiente texto sométalo a un algoritmo de cifrado

10

UNIVERSIDAD TECNOLOGICA NACIONAL Suponemos por simplicidad que los únicos caracteres de datos que tenemos que manejar son las letras mayúsculas y los espacios en blanco. Suponemos como clave de cifrado la cadena de caracteres: ESTUDIAR

1).- Dividimos el texto plano en bloques de longitud igual a la clave de cifrado (en este caso 8 le-tras)

UNIVERSI DAD+TECN OLÓGICA+ NACIONAL (Los espacios en blanco son ahora mostra-dos en forma explícita como “+”) 2).- Reemplazamos cada carácter del texto plano por un entero que esté en el rango de 00 a 26, usando: + A B C D E F G H I J K L M N Ñ O P Q R S T U V X Y Z 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26

22 15 09 23 05 19 20 09 04 01 04 00 21 05 03 14 16 12 16 07 09 03 01 00 15 01 03 09 16 15 01 12 3).- Repetimos el paso 2) para la clave de cifrado 05 20 21 22 04 09 01 16 4).- Para cada bloque de texto plano reemplazamos cada carácter por la suma módulo 27 de su codi-ficación de enteros más la codificación de enteros del carácter correspondiente de la clave de cifrado. 22 15 09 23 05 19 20 09 04 01 04 00 21 05 03 14 16 12 16 07 09 03 01 00 15 01 03 09 16 15 01 12 05 20 21 22 04 09 01 16 05 20 21 22 04 09 01 16 05 20 21 22 04 09 01 16 05 20 21 22 04 09 01 16 00 08 03 18 09 01 21 25 09 21 25 22 25 14 04 03 21 05 10 02 13 12 02 06 20 21 24 04 20 24 02 11 5).- Reemplazamos cada codificación de enteros del resultado del paso 4) por su equivalente en ca-racteres: 00 08 03 18 09 01 21 25 09 21 25 22 25 14 04 03 21 05 10 02 13 12 02 06 20 21 24 04 20 24 02 11 + H C Q I A T Y I T Y U Y N D C T E J B M L B F S T X D S X B K Quedando el texto codificado como: +HCQIATYITYUYNDCTEJBMLBFSTXDSXBK El procedimiento de descifrado para este ejemplo es directo, siempre y cuando se tenga la clave.

11

EJERCICIOS PROPUESTOS PARA QUE RESUELVA EL ALUMNO

EJERCICIO 1: Que cantidad de bits necesitaría en un código Gray; para codificar ángulos de 1 en 1 grados hasta 360 grados.

EJERCICIO 2: Los códigos ponderados BCD son aquellos en los que a cada posición de un dígito binario se le asigna un peso, de forma tal que el número decimal equivalente se presenta como: N = ΣΣΣΣ Pi x Xi, - dónde Pi es el peso de la posición i, y Xi toma el valor 0 ó 1 según la combinación, y N varía entre 0 y 9. Teniendo en cuenta lo indicado, ¿ Cuáles de los siguientes códigos son ponderados, y en caso de ser así, cuáles son los pesos corres-pondientes?. Para efectuar el análisis complete con las combinaciones faltantes cada uno de los códi-gos. a) decimal P3 P2 Pl PO b) decimal P3 P2 Pl PO 1 0 0 0 1 3 0 0 1 1 3 0 0 1 1 5 0 1 0 1 4 0 1 0 0 7 1 1 0 1 7 1 1 0 0 9 1 1 1 1 c) decimal P3 P2 Pl PO d) decimal P3 P2 Pl PO 1 0 0 0 1 0 0 0 0 0 3 0 0 1 1 1 0 0 0 1 5 0 1 0 0 2 0 0 1 1 7 1 1 0 0 3 0 0 1 0

EJERCICIO 3: Representar el número 927 en binario natural y en BCD EXS 3. Comentar el resultado luego de efectuar un análisis comparativo sobre la facilidad para obtener las representaciones y la longitud de bits necesarios para cada caso.

EJERCICIO 4: ¿Cuántos bits tendrá el código Hamming para poder detectar y corregir un error si los datos originalmente se codifican con combinaciones de:

a) 5 bits b) 8 bits c) 12 bits?

EJERCICIO 5: Dado el siguiente texto sométalo a un algoritmo de cifrado: ARQUITECTURA DE COMPUTADORAS

Utilice la palabra clave: NAND

12

EJERCICIO 6: Dado el siguiente texto que se encuentra codificado con la palabra clave:

AVANTI Descífrelo utilizando el esquema anterior.

ÑLTNÑNSANCNIFJAZUIDQNOMN EJERCICIO 7:

Ídem al anterior utilizando la palabra clave MATERIA NSL+ACFOUOXSIEQAXTEZVGBYTKJT

13

TRABAJO PRÁTICO N0 3

PARTE A: ALGEBRA DE BOOLE

EJERCICIOS A RESOLVER EN CLASES

EJERCICIO 1: Hallar las expresiones canónicas de las siguientes funciones. Representar la tabla de verdad correspondiente a cada una de ellas.

( )

( )

( ) ccbadcbaf

deacebaedcbaf

cbabccacbaf

++=

+=

++=

,,,

,,,,

,,

RESOLUCIÓN:

cbabccacbaf ++=),,( se aplica el sig. Postulado del A. De Boole:

cbaaabcbbca ++++= )()( 1=+ aa ; 0. =aa y luego distributiva

cbabcaabccbacab ++++= expresión canónica

EJERCICIO 2: Simplificar las siguientes expresiones aplicando los teoremas del álgebra de Boole. ( ) rpqpqrrqpqppqrrqpf ++++=,, ( ) cbddbadcbcbabdacabcbdcbaf ++++++=,,,

RESOLUCIÓN

rpqpqrrqpqppqrrqpf ++++=),,( agrupando y sacando factor común

pqrrqpqprrpq ++++= )( 1=+ rr

pqrrqpqqp +++= )(

pqrrqpp ++= aplicamos ahora ),,0(),,( rqfprqpfp +=+ y

),,1(),,( rqfprqpfp +=+

rqpqrrqp +=++= 01

EJERCICIO 3: Dadas las siguientes funciones, representadas mediante la expresión canónica por com-prensión de suma de productos y producto de sumas, obtener las representaciones de las mismas en la forma de producto de sumas y suma de productos respectivamente. a) ( ) ( )7,5,2,,

3∑=cbaf

b) ( ) ( )∏=4

14,12,8,4,3,1,,, dcbaf

14

EJERCICIO 4: Obtener la tabla de verdad y la función canónica por comprensión en la forma de producto de sumas de una función de 4 variables que toma el valor 1 cuando 3 ó más variables toman el valor 0.

EJERCICIO 5: Obtener la tabla de verdad y la función canónica por comprensión y extensión en la forma de suma de productos y producto de sumas de una función de 4 variables que toma el valor 0 cuando la variable de menor peso vale 0, y la de mayor peso vale 1.

EJERCICIO 6: Demostrar las siguientes igualdades. ( ) cedapcedap ++=+ baba ⊕=⊕ ( ) acabcaa ⊕=⊕ EJERCICIOS PARA RESOLVER POR EL ALUMNO

EJERCICIO 1: Obtener las 16 tablas de verdad, y por lo tanto, las 16 funciones diferentes a que dan lugar las 4 combinaciones de dos variables de entrada. Posteriormente, simplificar aplicando los teoremas del álgebra de Boole, e indicar las expresiones duales de los resultados.

EJERCICIO 2: Indicar cual de las siguientes igualdades es correcta, haciendo uso de las leyes

de De Morgan.

( )( )( )bccababccaab +++=++ ( )( ) ( )( )baabccbaabcbacba ++=+++++

EJERCICIO 3: Dadas las siguientes funciones, representadas mediante la expresión canónica por comprensión de suma de productos y producto de sumas, obtener las representaciones de las mismas en la forma de producto de sumas y suma de productos respectivamente. ( ) ( )∑=

4

15,14,9,8,6,4,,, dcbaf

15

( ) ( )6,5,2,1,,

3∏=cbaf

EJERCICIO 4: Obtener la tabla de verdad y la función canónica por extensión en la forma de suma de productos de una función de 4 variables que toma el valor 0 cuando 2 variables toman el valor 0. PARTE B: SIMPLIFICACIÓN DE FUNCIONES

EJERCICIOS PARA RESOLVER EN CLASES

EJERCICIO 1: Minimizar por el método de karnaugh las funciones expresadas en la forma canónica por extensión del Ejercicio N0 2 del práctico anterior.

EJERCICIO 2: Minimizar por el método de Karnaugh las siguientes funciones expresadas en la forma canónica por comprensión.

a) ( ) ( )7,5,4,2,,

3∑=cbaf

b) ( ) ( )15,14,11,10,8,7,5,4,1,,,

4∏=dcbaf

RESOLUCIÓN

∏=4

)15,14,11,10,8,7,5,4,1(),,,( dcbaf

))(()()((),,,( dcadcadcbdbadbdcbaf +++++++++=

EJERCICIO 3:

badc

00 01 11 10

00

01

11

10

0 00

0

0

0 0

1

1 1 1

1 1

1 1 1

16

Las siguientes expresiones corresponden a funciones minimizadas expresadas en la forma de suma de productos. Obtener las funciones minimizadas expresadas en la forma de pro-ducto de sumas correspondientes. ( ) bdacadcbbcddcbaf +++=,,, ( ) acdbdcbadcbaf ++=,,, ( ) cbbdbadcbaf ++=,,,

EJERCICIO 4: En un sistema digital que opera con el código BCD EXS 3 se desea imple-mentar un generador de paridad impar. Indicar la función más simple, ya sea en la forma de producto de sumas ó suma de productos que satisface el requisito. EJERCICIOS A RESOLVER POR EL ALUMNO

EJERCICIO 1: Minimizar por el método de Karnaugh las siguientes funciones expresadas en la forma canónica por comprensión.

a) ( ) ( )∑=4

15,13,12,8,7,6,4,2,1,,, dcbaf

b) ( ) ( )15,14,11,10,9,6,5,4,2,,,

4∏=dcbaf

EJERCICIO 2: Minimizar las siguientes funciones y determinar si son más simples sus expre-siones de producto de sumas ó suma de productos.

a) ( ) ( )15,14,12,11,10,9,6,4,3,2,,,4∑=dcbaf

b) ( ) ( )15,14,11,8,7,6,5,1,,,4

∏=dcbaf

c) ( ) ( )9,8,2,1,,,4∑=dcbaf

d) ( ) ( )13,10,9,8,6,5,2,,,4

∏=dcbaf

EJERCICIO 3: Minimizar por Karnaugh las siguientes funciones y dar el resultado en la forma de producto de sumas. ( ) ( ) ( )cdabbcadcbaf ⊕+⊕=,,,

17

( ) ( ) ( )( )dcabdacabbcadcbaf ⊕⊕+⊕=,,,

EJERCICIO 4: En un registro de 4 bits, cuyas salidas están disponibles al exterior, se almacena infor-mación numérica decimal en el código BCD Natural. Se desea implementar un sistema digital que detecte cuando el número contenido en el registro es superior a 6 e inferior a 3. Indicar la función más simple, ya sea en la forma de producto de sumas ó suma de productos que satisface el requisito.

18

TRABAJO PRÁCTICO NO 4

SISTEMAS COMBINACIONALES

EJERCICIOS A RESOLVER EN CLASE

EJERCICIO 1: Diseñe un sistema combinacional que accione el motor de un limpiaparabrisas sa-biendo que éste funciona cuando la llave general del auto está en contacto, y además, se activa el con-trol del limpiaparabrisas, pero si desactiva este último, el motor sigue funcionando hasta que las esco-billas lleguen al costado izquierdo. Obtener la solución más simple, e implementarla con las compuertas correspondientes. RESOLUCIÓN: Vamos a llamar C a la variable de la llave de contacto del auto. Vamos a llamar M a la variable que acciona el motor del limpiaparabrisas. Vamos a llamar L a la posición de la escobilla, vale 1 cuando está a la derecha. C M L F 0 0 0 0 0 0 1 0 0 1 0 0 0 1 1 0 1 0 0 0 1 0 1 1 1 1 0 1 1 1 1 1

00 01 11 10

0

ML

C

1 1

0 0 0 0

11 0

)( LMCLCMCF +=+=

M

C

C

L

F

M

L

CF

EJERCICIO 2: Realizar el diseño e implementación de dos llaves de luz colocadas al pie y cima de una escalera; de tal manera que pueda prender la luz de la llave de abajo y apagarla con la llave de arriba y viceversa.

EJERCICIO 3: Utilizar decodificadores para implementar las siguientes funciones:

19

1. ( ) ( )10,8,6,0,,,4∑=dcbaf

2. ( ) ( )13,8,7,5,1,,,4∑=dcbaf

EJERCICIO 4: Realizar el diseño de un comparador de dos números de dos bits c/u. Este sistema tiene que tener 3 salidas la de mayor, menor e igual. Realizar el diseño con compuertas nand. EJERCICIOS A RESOLVER POR EL ALUMNO

EJERCICIO 1: Diseñar un sistema combinacional que ante la excitación de 4 variables de entrada genere salidas que activen un display de 7 segmentos para la representación de los dígitos decimales sobre el mismo. Considerar que las combinaciones de entrada corresponden al código BCD 8421, y que las restantes a las 16 posibles a las letras del alfabeto a, b, c, d, e y f . Obtener la solución más simple, e implementarla con las compuertas NOR.

EJERCICIO 2: Diseñe un sistema digital de semaforización para una estación terminal de ferro-carril. Como se observa en la figura, a dicha estación acceden 4 líneas de diferentes tipos de servicios con las siguientes prioridades:

1) Servicio Expreso ( SE) 2) Servicio Corta Distancia Diferencial (SCDD) 3) Servicio Corta Distancia Común (SCDC) 4) Servicio Larga Distancia. (SLD)

Censores en cada línea indicarán ó no la presencia de vehículos, y semáforos en rojo ó en verde detendrán ó habilitarán el paso respectivamente. Obtener la solución más simple, e implementarla con las compuertas correspondientes.

SE SLD SCDC SCDD

EJERCICIO 3: Un registro de salida en paralelo A0 a A3 contiene un carácter codificado en BCD 5421. Realizar un generador de paridad para agregar el correspondiente bit Ap que permita elegir paridad par o impar, con una llave selectora. Utilizar decodificadores y multiplexores

20

EJERCICIO 4: El diagrama de la figura indica el sistema de arranque de un motor eléctrico. Existen cuatro variables binarias de control las cuales permitirán el arranque del motor sólo cuando existe paridad impar entre ellas. Hay dos casos especiales, llamados de emergencia que permitirán arranque, y ocurren cuando todas las variables están en uno ó cero simultáneamente. Realizar con compuertas.

EJERCICIO Nº 5

ESPECIFICACIONES o Objetivo: Diseñar un circuito digital, capaz gobernar un robot, haciendo que éste siga una línea negra pinta-

da sobre un fondo blanco. o Censores: El robot está dotado de dos censores digitales capaces de diferenciar el color negro del blanco. La salida de estos censores es ’0’ cuando leen blanco y ’1’ cuando leen negro. Denominare-mos a este bit como C:

Censor C

Color Blanco 0 Color Negro 1

o Motores: Dos motores de corriente continua que son controlados cada uno mediante dos bits, denominados

S y P, descritos mediante la siguiente tabla de verdad:

P S Motor 0 0 Parado 0 1 Parado 1 0 Giro derecha 1 1 Giro izquierda

Siasdfgfstem

Sistemade

AaArranquefdSistemadfffsdsdvcsdffsdfsdfzxvcfdsfsdfsdf

SistremaArranquedearranqueSis

Motor

V

V2

V3

V4

V1

21

El bit P es el bit de ’Power’. Indica si el motor está conectado o no. El bit S es el del sentido de giro. Según su valor el motor girará a la derecha o a la izquierda (siempre que el motor esté activado, con P=1). o El robot: El esquema del robot es el siguiente (visto desde arriba):

o Algoritmo: El algoritmo para seguir la línea negra es muy sencillo. Mientras los dos censores detecten ne-

gro, el robot deberá avanzar. Cuando el censor de la derecha detecte blanco y el de la izquierda negro, el ro-bot girará a la izquierda y cuando ocurra el caso contrario girará a la derecha. Si ambos censores leen blanco permanecerá parado. Esto se esquematiza en la siguiente figura:

DIAGRAMA DE BLOQUES

Como primera fase del diseño tenemos que entender qué es lo que se nos está pidiendo y determinar el aspecto que tiene el circuito que hay que realizar. El circuito tendrá dos entradas prove-

nientes de los censores, C1 y C2, y cuatro salidas, dos para cada motor: S1, P1 S2 y P2.

22

TABLA DE VERDAD Ahora hay que definir el comportamiento del circuito, utilizando una tabla de verdad. Este comporta-

miento nos lo da el algoritmo de seguir la línea. La tabla de verdad es la siguiente: Con una ’x’ se han marcado las casillas de la tabla de verdad que es indiferente su valor.

Según nos convenga puede valer ’0’ ó ’1’. El Karnaugh del circuito es:

IMPLEMENTACIÓN DEL CIRCUITO El circuito, implementado con puertas lógicas básicas es el siguiente:

23

Si lo construimos utilizando puertas TTL, necesitamos dos integrados, uno para los inversores y otro pa-ra la puerta OR. Si en vez de ello lo implementamos sólo con puertas NAND, el circuito es el siguiente:

EJERCICIO Nº 6 Construir un multiplexor de 8 canales a partir de multiplexores de 2 canales. La solución es conectarlos en cascada:

Primero colocamos una columna de 4 multiplexores de dos entradas, para tener en total 8 entradas. To-

das las entradas de selección de esta primera columna se unen. Por comodidad en el dibujo, esto se representa mediante una línea vertical que une la salida S de un multiplexor con el de abajo.

A continuación colocamos una segunda columna de 2 multiplexores de 2 entradas, también con sus entra-das de selección unidas. Finalmente colocamos una últi-ma columna con un único multiplexor de 2 entradas.

Colocados de esta manera, conseguimos tener un multiplexor de 8 entradas y tres entradas de selección. La única consideración que hay que tener en cuenta es que la entrada de selección de los multiplexores de la primera columna tiene peso 0, la segunda peso 1 y la última peso 2:

24

Vamos a comprobar qué ocurre si seleccionamos el canal 6. Introducimos en binario el número 6 por las entradas de selección S2, S1, S0.

Por la entrada S de los multiplexores de la primera columna se introduce un ’0’, por lo que estos multi-plexores sacan por sus salidas lo que hay en sus entradas I0. Por la entrada de selección de los multiplexores de la segunda columna se introduce un ’1’ por lo que están seleccionando su canal I1. A la salida de estos multi-plexores se tendrá I2 e I6. Finalmente, el multiplexor de la última columna está seleccionando su entrada I1, por lo que la salida final es I6.

EJERCICIO Nº 7 Realizar un detector de desbordamiento aritmético.

El intervalo de valores que podemos representar mediante números de n bits en el sistema numérico de complemento a dos es:

-2n-1 <=N<= 2n-1 - 1

Cualquier operación aritmética que intente generar un valor fuera de este intervalo producirá una condición

de desbordamiento. En estos casos el número resultante de n bits no es una representación válida del resul-

tado; por tanto hay que detectar todas las condiciones de desbordamiento, de modo que no se utilicen estos

resultados nos válidos.

En complemento a dos, se tienen condiciones de desbordamiento cuando se suman dos valores positivos cuya suma es mayor que 2n-1 – 1 o dos valores negativos cuya suma es menor que -2n-1 – 1. En ambos casos el resultado tiene el bit de signo incorrecto. Por lo tanto, detectamos el desbordamiento observando los bits de signo de los operandos y del resultado. En la siguiente tabla se observan las situaciones que pueden ocurrir en la etapa más significativa de un sumador de n bits. Los bits an-1 y bn-1 representan los bits de signo de los números a sumar, así que son las entra-das de esta etapa, junto con el bit de acarreo cn-2. Las salidas de esta etapa son Cn-1 y Sn-1. Ocurre desbordamiento en dos casos: la suma de dos valores positivos que producen un bit de signo Sn-

1=1, lo que indica resultado negativo, y la suma de dos números negativos que produce un bit de signo Sn-1=0, lo que indica un resultado positivo. La expresión lógica de desbordamiento V es:

25

V = an-1. bn-1. Sn-1. + an-1. bn-1. Sn-1

La siguiente figura muestra el circuito de la ecuación anterior.

26

TRABAJO PRÁCTICO NO 5

SISTEMAS SECUENCIALES

EJERCICIOS PARA RESOLVER EN CLASE

EJERCICIO 1: Realizar la tabla de verdad de este biestable

RESOLUCIÓN: R S Q(t) Q(t+1) 0 0 0 0 0 0 1 1 0 1 0 1 0 1 1 1 1 0 0 0 1 0 1 0 1 1 0 X 1 1 1 X

EJERCICIO 2: Explicar el significado del siguiente cuadro que con brevedad sinte-tiza la utilización del biestable J-K como R-S, T ó D. JK Q*

J=K=T 00 Q J=S; K=R

J=R=D 01 10

1 1

J=S; K=R

J=K=T 11 Q

EJERCICIO 3: Deducir si el siguiente flip-flop es síncrono ó asíncrono, y cual es su funcio-namiento.

R

S Q

Q

27

Contadores Síncronos. EJERCICIO 4: Determinar en que código se lleva el contaje en el siguiente registro de desplazamiento realizado con biestables J-K. Suponer que inicialmente QO=Ql=Q2=Q3=0.

Contadores asíncronos. EJERCICIO 5:

1. Contador binario ascendente.

La figura presenta un contador binario de cuatro bits conectado para que funcione de modo asíncrono (la entrada de reloj sólo está conectada al primer flip-flop). El segundo flipflop se dispara mediante la señal Q0 (salida del primer flip-flop), el tercer flip-flop me-diante la señal Q1 (salida del anterior) y así sucesivamente. Cada flip-flop cambia durante el flanco descendente de la señal que se aplica a su entrada de reloj.

El contador de cuatro bits dispone de dieciséis estados diferentes (24 =16).Hay que te-

ner en cuenta que Q0 representa el bit menos significativo (LSB) y Q3 el bit más significa-tivo (MSB).

CK

D Q

Q

D Q

CK Q

J Q0

TK Q0

J Q1

TK Q1

J Q2

TK Q2

J Q3

TK Q3

IMPULSOS

28

Realizar la secuencia de estados del contador en una tabla, para Q3, Q2, Q1 y Q0 y el diagrama de tiempos del contador.

RESOLUCIÓN:

EJERCICIOS A RESOLVER POR EL ALUMNO EJERCICIO 1:

2. Contador binario descendente.

En la figura se observa un contador asíncrono binario descendente de cuatro bits. El circuito es similar al anterior, con la excepción de que las entradas de cada flip-flop se conectan a la salida complementaria del flip-flop anterior. Cada flip-flop bascula al recibir un flanco descendente en su señal de reloj, que en este caso se produce cuando la salida anterior cambia de ‘0’ a ‘1’, o lo que es lo mismo la salida complementaria cambia de ‘1’ a ‘0’.

Realizar la secuencia de estados del contador en una tabla, para Q3, Q2, Q1 y Q0 y el

respectivo diagrama de tiempos. EJERCICIO 2: Realizar los diagramas en bloque de los cuatro registros de despla-zamiento: entrada serie salida serie, entrada serie salida paralelo, entrada paralelo salida serie y entrada paralelo salida paralelo.

29

EJERCICIO 3: a) A partir de un biestable SR, obtener un JK. b) A partir de un biestable JK, obtener un biestable T. c) A partir de un biestable SR, obtener un biestable D.

EJERCICIO 4: Determinar el Sistema combinacional necesario para indicar que los contadores binarios han alcanzado el valor equivalente decimal 66, e inicie el conteo nue-vamente desde 0.

ContadorBinario Natural

SistemaCombinacional

ContadorBinario Natural

Impulsos

30

TRABAJO PRÁCTICO Nº 6

MEMORIAS PARTE A: MEMORIAS

EJERCICIOS PARA REALIZAR EN CLASES

EJERCICIO 1: Determinar cual es el valor de n1 y n2, si la memoria es de: 4 Kbytes, 64 Kbytes, 1Mbytes, 4096 palabras de 32 bits, 65536 palabras de 16 bits o 524288 palabras de 64 bits.

EJERCICIO 2: Cuantos bits de direccionamiento son necesarios para la localización de una palabra en una memoria de 256 posiciones y de una de 1024 .

EJERCICIO 3: ¿Cuantos bits posee una memoria de 32Kx8, siendo 32K la cantidad de posiciones a direccionar y 8 la cantidad de bits de cada posición o palabra? ¿Cuantos bits de direccionamiento son necesarios?

EJERCICIO 4: Se tienen dos memorias RAM de 256 posiciones cada una. ¿Cuantos bits se necesitarán para direccionar a ambas de manera de obtener una memoria de 512 posiciones? Realizar una posible conexión.

EJERCICIO 5: Realizar una memoria de 2K X 8, partiendo de pastillas de 1K X 4.

Memoria de Acceso Aleatorio [RAM]Bus de

Direcciones

Bus de Datos

n2

n1

31

EJERCICIO 5:

EJERCICIOS A RESOLVER POR EL ALUMNO

EJERCICIO 1: Disponemos de memorias RAM de 1kbytex8 y queremos realizar un banco de memoria de 4kbytesx16. Realizar la posible conexión y determinar cuantos bytes tiene el bus de direcciones, datos y control.

PARTE B: ENSAYO PRÁCTICO DE UNA MEMORIA RAM CI: 6810

La finalidad del circuito de la figura, es la de analizar el modo de programar y leer una serie de datos en una memoria del tipo RAM estática.

Para evitar utilizar siete interruptores para direccionar la memoria en forma manual (A0, A1, A2, A3 , A4 , A5, A6), se utilizará un oscilador (1555) y un contador binario (4020) que pueda suministrar las 128 combinaciones posibles de direcciones de entrada, en forma secuencial automática.

La lectura de datos se hace a través de los LED (D0, D1, ....., D7). Mientras que el procedimiento de escritura se realiza mediante los

interruptores (T0, T1, ...., T7). Veamos como realizamos el proceso:

Presionando el pulsador P0, arranca el generador de pulsos (1555),

que los inyecta a la entrada de reloj del contador binario (4020) y éste comienza a contar. A través de los LED indicadores de direcciones el contador nos muestra la cuenta binaria de las direcciones de entrada a la RAM. Cuando llega al número de la dirección que que-remos visualizar, ó sea leer ó escribir un dato, pulsamos nuevamente P0 para detener el

32

generador de pulsos, de tal manera que queda direccionada la memoria en ese valor (por ejemplo la posición No 6, tendríamos A1 y A2 encendidos y el resto apagados. En los LED de salida de datos, podremos leer directamente la información almacenada en esa ubicación de la memoria. Por ejemplo puede aparecer el número 15 decimal , que se manifiesta con los LED de salida de la siguiente manera D0, D1, D2 yD3 encendidos (va-lor lógico 1) y el resto apagados (valor lógico cero). Si se desea borrar el número almacenado en esta dirección, bastará con pulsar P2 , con to-dos los interruptores T0, T1, ...., T7 abiertos. De este modo todas las salidas se ponen en cero, dado que en realidad hemos escrito un 00000000. Para escribir un dato en esta dirección, por ejemplo el número 14 en binario, se deberá cerrar los interruptores T1, T2 y T3 con lo cual grabamos 1 en c/u de ellos. Luego pul-sando brevemente P2 quedará registrado este número en la memoria y los estados de la salidas quedan:

D7 D6 D5 D4 D3 D2 D1 D0 0 0 0 0 1 1 1 0

Una vez escrito el dato en la dirección número 6, se deben abrir todos los interruptores T1, T1, ......, T7 y podremos pasar a una nueva dirección, por ejemplo la número 7. Para ello se cierra nuevamente P0 hasta observar la dirección deseada en los LED A0, A1, ...., A6. Se prepara el dato a escribir mediante los interruptores T1, T2, ...., T7 y se graba el dato en la memoria pulsando brevemente P2. Una vez completada toda la programación de la memoria (escritura), se procede a resetear el contador de direcciones (4020) pulsando brevemente P1; y con la llave P0 cerrada el contador comienza a habilitar las sucesivas direcciones de la memoria, mostrando se-cuencialmente los datos en ella escritos. NOTA 1: Los interruptores T1, T2, ....., T7 deben permanecer siempre abiertos, salvo

en el caso del proceso de escritura, para lo cual se debe cerrar el interruptor donde se desee escribir un uno. Una vez escrito el mismo ( luego de pulsar P2 ), los interruptores T cerrados deberán abrirse nuevamente.

NOTA 2: Es necesario recordar que en este tipo de memoria, si se corta la alimentación de 5V, se pierde la información registrada en la misma.

NOTA 3: Debido a que en el circuito se utiliza una sola memoria, las entradas de control “chip select” han sido habilitadas en forma permanente: CS1, CS2, CS4, CS5 con estado “0” y CS0, CS3 con un “1”.

33

34

TRABAJO PRÁCTICO NO 7

PROGRAMACIÓN DE UNA COMPUTADORA ELEMENTAL DIDÁCTICA SIMULADOR PARA COMPUTADORA ELEMENTAL DIDÁCTICA

Previo a la resolución de los ejercicios que a continuación se indican, se efectuará una descripción de un simulador didáctico de la computadora elemental didác-tica BLUE, de los procedimientos para la utilización del mismo, y de igual forma, un aná-lisis de una computadora personal, sus periféricos y el sistema operativo para el acceso a dicho programa. Verificar los programas de los Ejercicios NO 3, NO 4, NO 5, NO 6, NO

7, NO 8, NO 9, NO 10, NO 11, NO 12, N O 13 y NO 14 del TRABAJO PRACTICO, utilizan-do el simulador para la ejecución, en forma ficticia, del programa, ya sea paso a paso, ó de una sola vez. Genere un informe por cada verificación imprimiendo pantalla para cada ejercicio; explicando los procedimientos seguidos y los comentarios del caso. EJERCICIOS PARA RESOLVER EN CLASE

EJERCICIO 1: ¿Cuál es el efecto de las siguientes instrucciones en octal?. Indique el mnemónico correspondiente.

177777 137701 140277 013150 042322 125000 075303 104210 063501

EJERCICIO 2: Complete el siguiente cuadro con las restantes formas de representa-ción. ------------------------------------------------------------------------------------------------------------- mnemónico octal binario -------------------------------------------------------------------------------------------------------------

ADD 50 -- -- -- 150510 -- -- -- 1111000001001000

NOT 33 -- -- -- -- 0011000001010110 -- 110350 --

XOR 276 -- -- -------------------------------------------------------------------------------------------------------------

35

EJERCICIO 3: Escriba un programa comenzando en la ubicación 400 que intercam-bie los contenidos de las ubicaciones 550 y 551. Expresarlo en representación octal y mnemónica. RESOLUCIÓN: o400 LDA 550 o401 STA 552 o402 LDA 551 o403 STA 550 o404 LDA 552 o405 STA 551 o406 HLT 0000

EJERCICIO 4: Escriba un programa que comience en la ubicación 550 que efectúe la operación lógica AND entre el contenido de la ubicación 560 y 563. Depositar el resul-tado en 560 e indicar el valor resultante en octal a partir de los siguientes datos en decimal:

(560) = +1307 (563) = +2431

EJERCICIO 5: Proyecte una secuencia de instrucciones que efectúe un salto a la ubicación 255 si el contenido de la dirección 300 es cero, y a la ubicación 333 si el conte-nido es distinto de cero. EJERCICIO 6: Escriba un programa que efectúe el cuadrado de un número por su-mas sucesivas de valores impares. Suponga que dicho número puede ser positivo o negati-vo.

EJERCICIO 7: Escriba un programa que efectúa la raíz cuadrada de un número por restas sucesivas de valores impares. Suponga que dicho número es siempre positivo.

EJERCICIO 8: Suponga que la Blue debe ser dotada del doble de instrucciones. ¿Cómo modificaría la estructura de la palabra, manteniendo su longitud con dicho objeto?. ¿Cuántas palabras pueden direccionarse directamente según su propuesta?.

36

EJERCICIO 9: Suponga que la Blue debe ser dotada de direccionamiento directo e indirecto, usando las mismas instrucciones de referencia a memoria. ¿Cómo modificaría la estructura de la palabra, manteniendo su longitud con dicho objeto?. ¿Cuántas palabras pueden direccionarse directamente e indirectamente según su propuesta?.

EJERCICIO 10: Escriba un programa que efectúe una multiplicación entre dos núme-ros usando el método de las sumas sucesivas. o100 o000005 ;multiplicando o101 o000004 ;multiplicador o102 ;resultado o103 o000001 ;k=1

o104 ;contador= -multiplicador o105 o177777 ;j=-1 o106 o060100 ;lda 0100

o107 o070102 ;sta 0102 o110 o060101 ;lda 0101 o111 o010105 ;add 0105 o112 o050000 ;not 0000

o113 o070104 ;sta 0104 o114 o060102 ;lda 0102 o115 o010100 ;add 0100 o116 o070102 ;sta 0102

o117 o060104 ;lda 0104 o120 o010103 ;add 0103 o121 o070104 ;sta 0104 o122 o110114 ;jma 0114

o123 o000000 ;hlt EJERCICIO 11: Escriba en instrucciones de la blue el siguiente código, parte de un programa de lenguaje de alto nivel tipo C++, considerando que todas las variables son en-teras, y proponiendo posiciones de memoria para el almacenamiento de los datos y el pro-grama. FOR (I = 0; I <= 10; I = I + 1) A[I] = B[I] + C;

37

Resolución: PROGRAMA PARA EL SIMULADOR

Nemónico Codificación Datos ;144 LDA 327 ;145 ADD 323 ;146 JMA 150 ;147 JMP 165 ;150 LDA 310 ;151 ADD 326 ;152 STA 400 ;153 LDA 323 ;154 ADD 325 ;155 STA 323 ;156 LDA 150 ;157 ADD 325 ;160 STA 150 ;161 LDA 152 ;162 ADD 325 ;163 STA 152 ;164 JMP 144 ;165 HLT

O0144 o060327 o0145 o010323 o0146 o110150 o0147 o120165 o0150 o060310 o0151 o010326 o0152 o070400 o0153 o060323 o0154 o010325 o0155 o070323 o0156 o060150 o0157 o010325 o0160 o070150 o0161 o060152 o0162 o010325 o0163 o070152 o0164 o120144 o0165 o000000 o0310 o000010 o0311 o000011 o0312 o000012 o0313 o000024 o0314 o000024 o0315 o000017 o0316 o000016 o0317 o000021 o0320 o000014 o0323 o000000 o0324 o177777 o0325 o000001 o0326 o000007 o0327 o177767

;310 10 B[0] ;311 5 B[1] ;312 15 B[2] ;313 12 B[3] ;314 6 B[4] ;315 7 B[5] ;316 18 B[6] ;317 13 B[7] ;320 25 B[10] ;400 0 A[0] ;.... ;410 0 A[10] ;323 0 I ;324 -1 k ;325 1 J ;326 7 C ;327 -11

EJERCICIO 12: Con instrucciones de la Máquina Elemental realizar lo siguiente: I=o10 While I<0 do A[I]= B[I] I=I+1 Break A[I]= o17 done

38

Resolución: o0000 LDA o0060 o0001 STA o0054 o0002 STA o0070 o0003 LDA o0000 o0004 ADD o0051 o0005 STA o0000 o0006 LDA o0002 o0007 ADD o0051 o0010 STA o0002 O0011 SRJ O0100 o0012 JMA o0017 o0013 LDA o0050 o0014 ADD o0051 o0015 STA o0050 O0016 JMA O0000 O0017 HLT O0000 o0050 NOP o7770 ;-8 o -o10 o0051 HLT o0001 o0052 NOP o7777 o0053 NOP o7761 o0055 JMP o0000 o0060 HLT o0012 o0061 HLT o0024 o0062 HLT o0024 o0063 HLT o0015 o0064 HLT o0016 o0065 HLT o0017 o0066 HLT o0014 o0067 HLT O0013 o0100 IOR O0055 O0101 STA O0110 O0102 LDA O0054 O0103 ADD O0053 O0104 JMA O0107 O0105 ADD O0052 O0106 JMA O0110 O0107 LDA O0051 O0110

EJERCICIO A RESOLVER POR LOS ALUMNOS

EJERCICIO 1: Escriba un programa que reste dos números que se suponen almace-nados en memoria y expresados en valor absoluto.

39

EJERCICIO 2: Escriba un programa en representación octal y mnemónica que co-mience en la ubicación 200, sume 3 números ubicados en las direcciones 733, 1055 y 3511, y deposite el resultado en la dirección 55. indique el contenido final en binario y octal del acumulador y de las direcciones de memoria involucradas a partir de los siguien-tes datos en decimal:

(733) = + 88

(1055) = - 73

(3511) = - 176 (55) = + 13

EJERCICIO 3: Escriba la representación octal del siguiente programa. ¿Cuál es el contenido del acumulador y de las ubicaciones 3007, 3010, 3011 3012 después de la ejecu-ción del programa?. 300 LDA 3007 3002 IOR 3010 3003 AND 3011 3004 STA 3012 3005 OUT 01 3006 HLT 3007 110771 3010 145735 3011 074000 3012 77177

EJERCICIO 4: Escriba una subrutina que ejecute la OR de 2 datos ubicados en las direcciones 300 y 301. Tenga en cuenta que dicha subrutina puede necesitarse en distintos tramos del programa principal, y que ella comienza en la dirección 1100. indicar expresamente el paso y retomo de la subrutina al programa principal. EJERCICIO 5: Escriba en instrucciones de la blue la siguiente expresión algebraica, parte de un programa de lenguaje de alto nivel tipo C++, considerando que todas las variables son enteras, y proponiendo posiciones de memoria para el almacenamiento de los datos y el programa. Realizarlo como subrutina; indicar expresamente el paso y retomo de la sub-rutina al programa principal. F = (G + H) - (I + J)

40

TRABAJO PRÁCTICO NO 8

PROGRAMACIÓN DE COMPUTADORA PERSONAL – USO DE DEBUG

PARTE A:

RECONOCIMIENTO DE REGISTROS INTERNOS – PROGRAMAS ELEMENTALES La resolución de los ejercicios que a continuación se indican, se efectuará con el programa de DOS llamado DEBUG.EXE, y se imprimirá pantalla para c/u de ellos. EJERCICIOS PARA RESOLVER EN CLASE

EJERCICIO 1: Hacer un listado de los comandos del programa Debug.

EJERCICIO 2: Hacer que aparezca en forma explícita el contenido y estado de todos los registros usando el comando r. Luego, el contenido de los registros AX y BX a través de r AX y r BX, y cambiar los antiguos valores por AX=4567 y BX=89AB.

EJERCICIO 3: Cargar AX con el valor hexadecimal 2222 y BX con le número BBAA, efectuar su suma dejando el resultado en AX y anotar el estado de los distintos registros.

EJERCICIO 4: Colocar el número hexadecimal E5 en AL; luego el valor 4B en BL y realizar su suma, dejando el resultado en AX. Verificar el acarreo.

EJERCICIO 5: Colocar el número FF en los bits menos significativos de AX; al número 33 en los bits más significativos de AX y realizar el producto lógico entre ambos.

EJERCICIO 6: Colocar 45 en AX y obtener el complemento a dos.

EJERCICIO 7: Buscar la codificación hexadecimal del ejercicio anterior.

EJERCICIO 8: Colocar 1234 en AX; 5678 en BX. Obtener la or exclusiva entre am-bos, dejando el resultado en AX. Luego obtener la suma lógica entre AX y BX

41

PARTE B: PROGRAMAS AVANZADOS – OPERACIONES ARITMÉTICAS Y LÓGICAS

EJERCICIO 9: Crear una tabla de 5 bytes a partir de la dirección 100, con los siguientes valores en hexadecimal: 41, 45, 49, 4F y 55. Sabiendo que estos valores corresponden a letras del alfabeto en el código ASCII, diseñe un código que obtenga la posición dentro del alfabeto de estos caracteres, y los almacene a partir de la dirección 200. Corra el programa, y diga que caracteres son y que posiciones ocupan en el alfabeto.

EJERCICIO 10: Confeccionar un programa que sume dos números de 32 bits, contenido en los registros AX y BX el primero y en CX y DX el segundo. Los 16 bits de menos peso de los números se encuentran en los registros AX y CX respectivamente y el resultado de su suma quedará en AX. Los 16 bits de más peso se encuentran en los registros BX y DX, quedando el resultado de su suma en BX. Si el resultado de la suma es mayor que 2511, se cargará el valor 0F en la dirección de memoria 2000 y.en el registro BP. En caso contrario se cargará el valor cero.

EJERCICIO 11: Realizar un programa que me ordene los 100 primeros números de menor a mayor. Estando colocados en un bloque de memoria en forma desordenada. EJERCICIO 12: Hacer un programa que realice la suma de dos números de 5 bytes.

mov si,1005 mov di,1105 mov cx,6 clc t1: mov al,[si] adc al,[di] mov [si],al dec si dec di loop t1 hlt e 1000 00 12 fc de ef 10 e 1100 00 fe fb ad cd 23

42

EJERCICIO 13: Realizar un programa que tome los datos de un bloque de memoria detecte la paridad impar y los que tengan dicha paridad los copie en otro bloque de memo-ria.

MOV SI,1000 MOV CX,10 MOV DI,1100 T2: MOV AL,[SI] TEST AL,AL JPE T1 MOV [DI],AL INC DI T1: INC SI LOOP T2 HLT E 1000 78 75 45 49 63 68 79 48 55 56 12 23 28 99 91 95

EJERCICIO 14: Mover un bloque de datos desde la dirección 150 a la 200. cld mov cx,10 mov si,150 mov di,200 rep movsb hlt Instrucciones equivalentes al REP MOVSB JCXZ T2 T1: MOV AL,[SI] MOV [DI],AL INC DI INC SI LOOP T1 T2: HLT Como se ve en el Debug 179D:0100 B91000 MOV CX,0010 179D:0103 BE5001 MOV SI,0150 179D:0106 BF0002 MOV DI,0200 179D:0109 F3 REPZ 179D:010A A4 MOVSB 179D:010B F4 HLT e 150 12 ff df ed 41 58 96 45 ac 36 95 47 78 19 20 21

43

EJERCICIO 15: Escriba en instrucciones del 8088 el siguiente código, parte de un programa de lenguaje de alto nivel tipo C++, considerando que todas las variables son enteras, y proponiendo posiciones de memoria para el almacenamiento de los datos y el programa. FOR (I = 0; I <= 10; I = I + 1) A[I] = B[I] + C; RESOLUCIÓN:

MOV SI,300 MOV DI,500 MOV CX,00

NUEVO: MOV AL,[SI] ADD AL,[400] MOV [DI],AL INC SI INC DI INC CX CMP CX,10 JLE NUEVO HLT

300 vector B[I] 500 vector A[I] 400 constante C a CX se le asigna I

EJERCICIOS A RESOLVER POR EL ALUMNO

EJERCICIO 1: Colocar el valor 0EF0 en BX y efectuar un corrimiento de 4 bits a la dere-cha.

EJERCICIO 2: Colocar en AX, el contenido de la dirección 200, y obtener su valor absolu-to, utilizando instrucciones de rotación y de control. Hacer la prueba, colocando en la di-rección 200 el valor 9E5F y luego con el valor 4E3A.

EJERCICIO 3: Colocar en AX el contenido de la dirección 300 y contar la cantidad de bits que tienen el valor lógico 1, utilizando contadores e instrucciones de control. Dejar el re-sultado en DL. Definir una palabra en la dirección 300 y ejecutar el programa.

EJERCICIO 4: Trasladar una tabla de bytes de la dirección 500 a la 600 utilizando los re-gistros de indexación, incrementos, comparaciones e instrucciones de control. El valor fi-nal de la tabla es FF. Coloque este valor entre las direcciones 500 y 600 y ejecute el pro-grama. Verifique el funcionamiento haciendo 0500 y 0600. EJERCICIO 5: De un bloque de datos determinar los números que son pares y moverlos a otro bloque de memoria.

44

TRABAJO PRÁCTICO NO 9

PROGRAMAS DE APLICACIÓN CON PERIFÉRICOS PRÁCTICA DE RECONOCIMIENTO

PARTE A: UTILIZACIÓN DE INTERRUPCIONES POR SOFTWARE DEL BIOS

EJERCICIO 1: Se mostrará un programa, utilizando las interrupciones del BIOS, donde se debe definir un funcionamiento de pantalla de 640x480, gráfico de 16 colores, VGA, especificando el color de fondo azul con bordes rojos

EJERCICIO 2: Escribir texto por pantalla:

1. Usar como fin de texto el signo $. 2. Texto: texto a escribir: ¡¡¡ Hola Amigos !!!

n: número de caracteres

EJERCICIO 3: Se mostrará un programa donde lo que se escribe por teclado sea presentado en pantalla. Salir del programa utilizando la tecla escape. PARTE B: PERIFÉRICOS – PLACA ELECTRÓNICA CONECTADA AL PUERTO PARALELO:

TEMA: Periférico de Entrada / Salida (I/O) para señales digitales.

OBJETIVO: • Que el alumno adquiera los conocimientos prácticos de lectura y escritura de datos

digitales utilizando un periférico conectado al puerto paralelo de impresión.

• Que el alumno conozca y desarrolle rutinas en lenguaje ensamblador del PC-8086 que le permitan controlar elementos externos al computador utilizando el puerto pa-ralelo.

CONCEPTOS PRELIMINARES:

El puerto paralelo es un dispositivo para el intercambio de datos digitales del PC con el exterior, siendo su uso generalizado en aplicaciones como el manejo de la impresora, pero permite el manejo de otros periféricos: comunicación entre PC's, lectura de detectores de alarmas, control sobre dispositivos de arranque/parada de motores, encendido/apagado de luces ó activación de alarma sonora.. La interfase paralelo está constituida por tres registros particulares de 8 bit cada uno a los cuales se puede acceder en forma independiente:

45

-REGISTRO DE DATOS ( salida) -REGISTRO DE ESTADO ( entrada) -REGISTRO DE CONTROL (bidireccional)

Estos registros tienen asignadas posiciones en el mapa de memoria del PC: Base, Ba-se+l y Base+2, dónde "Base" es la dirección inicial de acceso al primer registro de 8 bit, que habitualmente es:

LPTl: 378H (hexadecimal) LPT2: 3BC H ( hexadecimal) LPT3: 278H ( hexadecimal)

Normalmente una PC posee un puerto paralelo, por lo que durante el arranque (booteo), la dirección real asignada es presentada por el BIOS. Es posible desde el sistema operativo utilizar comandos externo: DEBUG. En DOS, DOS\DEBUG; en WINDOW: C:\Document and Settings\Administrador> DEBUG Esta aplicación permite entre otras cosas, visualizar el contenido de la memoria RAM. Cuando una PC se inicializa, se cargan 2 archivos básicos en la memoria RAM (el IO.SYS y el MSDOS.SYS) que tienen por función administrar los recursos internos del PC, re-cursos del disco, funciones de entrada/salida, y en particular los puertos de acceso dispo-nibles en el PC. Esto significa que en el mapa de memoria de un PC-8086, el bloque 0 (recordar que la memoria se subdivide en 16 bloques de 64KB) contiene las direcciones de los dispositivos de entrada/salida. Accediendo a un subcomando del DEBUG llamado DUMP (descargar) se puede consultar las posiciones de memoria en formato segmentado. Desde la posición 0040:0000 a 0040:000F, se leen las direcciones de los puertos asignados en el siguiente orden:

Comando a ingresar en DEBUG: -D 0040:0,F (15 Posiciones de memoria RAM a partir de 0040)

0040:0000 F8 03 F8 02 E8 03 E8 02 - 78 03 BC 03 78 02 00 00

COM1 COM2 COM3 COM4 LPT1 LPT2 LPT3 LPT4

Los valores están indicados en hexadecimal y el primer dato del par de posiciones es el byte menos significativo, es decir, para el puerto LPTl 78 03, significa 0378 en hexade-cimal. Para el puerto LPT2 corresponde BC 03, que significa 03BC en hexadecimal. Las direc-ciones base serán: 0378 y 03BC respectivamente.

46

EL PUERTO PARALELO EN DETALLE:

Desde el punto de vista físico se accede a los 3 registros del puerto paralelo a través de un conector tipo DB-25 Hembra cuya identificación de pines es la siguiente: DIRECCION PORT BIT FUNCION LINEA PIN DB-25 ---------------------------------------------------------------------------------------------------------- BASE DATOS 0 OUT DATA 0 2 (LPTl:378, 1 OUT DATA 1 3 LPT2:3BC 2 OUT DATA 2 4 LPT3:278) 3 OUT DATA 3 5 4 OUT DATA 4 6 5 OUT DATA 5 7 6 OUT DATA 6 8 7 OUT DATA 7 9 BASE+l ESTADO 0 NC. (379, 3BD 1 NC. 279) 2 NC. 3 IN ERROR 15 4 IN PTR SELECT 13 5 IN PAPER END 12 6 IN ACK 10 7 IN(inv) BUSY 11

BASE+2 CONTROL 0 I/O(inv) STROBE 1 (37A,3BE 1 I/O INIT 16 27A 2 I/O(inv) SELECT PTR 17 3 I/O(inv) AUTO FEED 14 4 NO USAR IRQ 7/5 --- 5 NC ------------------- --- 6 NC ------------------- --- 7 NC ------------------- --- Referencia: NC = significa No Conectado. I/0 = significa Entrada/Salida Digital

inv = significa invertido OUT= significa Salida digital IN = significa Entrada digital

Esta descripción de pines indica que : El Registro de Datos tiene disponibles los 8 bit de salida (OUT) El Registro de Estado tiene disponibles 5 bit de entrada (IN) pero el bit 7 tiene la entrada invertida (inv.) El Registro de Control tiene disponibles 4 bit de entrada/salida (I/O). Cuando nos referimos a valores invertidos, significa que si la entrada está en un "1" lógi-co, como ser el bit 7 del registro de estado, el dato es invertido y la PC lee el bit 7 , como "0" lógico.

47

APLICACION PRÁCTICA Si se dispone de algún circuito apropiado conectado al puerto paralelo, es posible mediante instrucciones leer y escribir sobre los registros del puerto paralelo en forma directa. Esto da una alternativa diferente para establecer un comunica-ción con elementos externos al PC (una bocina, un relay, un contacto magnético de alarma, on contacto fin de carrera, etc) o bien leer el estado ó posición de otros dispositivos conec-tados. Como ejemplo: se puede implementar una alarma domiciliaria conectando un circuito apropiado al puerto paralelo, que conste de sensores magnéticos de puerta ó infrarrojos, información que puede ser leída del Registro de Estado. Según el estado que presente ésta variable puede tomarse la decisión de accionar una bocina ó el llamador automático tele-fónico de alarma, con sólo escribir un dato en el Registro de Datos.

PERIFERICO DE ENTRADA/SALIDA DE SEÑALES DIGITALES: Para realizar este trabajo práctico se utiliza una placa electrónica que se conec-ta directamente al puerto paralelo del computador. Se alimenta con una batería de 9 Vcc o bien con una fuente de alimentación de +5Vcc regulada, en los terminales de conexión indicados en la placa (ver gráfico al final). Con esta placa se realizará la siguiente experiencia: A) Reconocer el conector DB-25 del puerto paralelo del PC

Si la PC no posee este puerto, tendrá que alimentar la Placa con una fuente de Ali-mentación Regulada de +5V según como se explicó antes. Con DEBUG verifique las direcciones de los puertos de que dispone. El PC Conecte la placa al puerto paralelo correspondiente.

B) Practique realizando operaciones de escritura en el Registro de DATOS del puerto paralelo. La instrucción a utilizar es: O (output) dirección, dato Interprete y registre en una tabla que elementos se activan en la placa cuando rea-liza operaciones de escritura sobre el Registro de DATOS. Establezca la correspon-dencia entre la posición del bit y el elemento activado (ej.: el bit 0 del Registro de DATOS activa en la placa un LED rojo, cuando el bit está en "1" el led se enciende).

C) En forma similar practique sobre el Registro de ESTADO para operaciones de lectura La instrucción a utilizar es: I (input) dirección Tener en cuenta que hay 3 formas de ingresar datos al puerto paralelo desde la placa electrónica: 1) Por llave binaria, simulando el ingreso de señales externas. 2) Desde la bornera de acceso. 3) Por dos (2) detectores de la placa (uno magnético y otro de iluminación). El magnético se conecta a la entrada digital 3 del Registro de ESTADO. Acercando un imán al detector magnético se observará que el led correspondiente al BIT 3 se en-ciende. El detector de luz se encuentra conectado a la entrada digital 4 del Registro de ESTADO. Si el detector es iluminado se observará que el led correspondiente al BIT 4 se enciende.

48

Ejercicio I: Desarrolle un programa mediante el DEBUG que lea el Registro de ES-TADO y tome una decisión actuando sobre el Registro de DATOS de acuerdo a la si-guiente tabla de estados:

Entrada 1 Entrada 2 Entrada 3 Entrada 4 Salida Acción --------------------------------------------------------------------------------------------------- 0 0 0 0 BIT 1 0 0 1 0 0 BIT 1 1 1 0 0 0 BIT 1 1 1 1 0 0 BIT 1 0

En este ejemplo se implementa una compuerta Or-Exclusivo (XOR) por software. Ejercicio II: Utilizando los detectores y actuadores que dispone la placa, desarrollar por software una alarma domiciliaria. Hacer el programa con DEBUG.

49

TRABAJO PRÁCTICO NO 10 RECONOCIMIENTO DE EQUIPAMIENTO COMPUTACIONAL Y PERIFÉRICOS

Durante el cursado de la materia se realizarán actividades de reconocimiento de equipa-miento computacional, asociando los conceptos adquiridos desde la teoría con las partes y/o componentes de una computadora. Y se realizará un trabajo de investigación, estudio y evaluación, por grupos de alumnos, de diferentes tipos de periféricos o dispositivos de entrada/salida, de uso corriente en una computadora. Este trabajo será supervisado por los docentes de la cátedra y se deberá pre-sentar y exponer en clases. En coordinación con los docentes, y durante la exposición, se efectuará el reconocimiento de los accesorios y mecanismos, y su relación con los desarro-llos teóricos adquiridos.

------------------------------------ooooo------------------------------------------