guia ejercicios pp2.pdf

9
Universidad de las Ciencias Informáticas Máquinas Computadoras I Curso 2006/2007 ____________________________________________________________________________________________ Departamento de Sistemas Digitales 1 Guía complementaria de ejercicios para la segunda Prueba Parcial de MCI 1. Realice un programa en lenguaje ensamblador que permita calcular y mostrar, el área total y el volumen de un cubo de arista a. La arista debe ser entrada por teclado. 2. Realice un programa en lenguaje ensamblador que permita calcular y mostrar el perímetro y el área de un rectángulo de lados a y b respectivamente. Los lados deben ser entrados por teclado 3. Elabore una macro que sea capaz de recibir como parámetro un número entero y devolver el factorial de ese número. El número pasado como parámetro no puede ser mayor que 12. 4. Dada una lista de 400 números de dos byte entrada por teclado , determine la cantidad de números que se encuentran en los rangos (50-100) y (150-100) y la muestre en pantalla. 5. Elabore un procedimiento que sea capaz de visualizar un número de hasta 32 bits por pantalla. 6. Dada una lista de 200 números de un byte, busque la cantidad de números que terminan en 0 y haga sonar la bocina de la maquina a esa cantidad en Hz hasta que se oprima la tecla ‘T’ o ‘t’. 7. Dada una lista de 300 números de 2 byte. Determine la cantidad de esos números que dejan 1 en el resto de la división por 7 y muéstrela en pantalla. Si esa cantidad es mayor que 100 suene la bocina a 10Khz hasta que se oprima la tecla ESC. 8. Dado el siguiente código de un programa escrito en lenguaje ensamblador, diga que es lo que se muestra en pantalla. Explique.

Upload: yenisley-padron-gonzalez

Post on 01-Dec-2015

22 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Guia Ejercicios PP2.pdf

Universidad de las Ciencias Informáticas Máquinas Computadoras I Curso 2006/2007

____________________________________________________________________________________________ Departamento de Sistemas Digitales

1

Guía complementaria de ejercicios para la segunda Prueba Parcial de MCI

1. Realice un programa en lenguaje ensamblador que permita calcular y

mostrar, el área total y el volumen de un cubo de arista a. La arista

debe ser entrada por teclado.

2. Realice un programa en lenguaje ensamblador que permita calcular y

mostrar el perímetro y el área de un rectángulo de lados a y b

respectivamente. Los lados deben ser entrados por teclado

3. Elabore una macro que sea capaz de recibir como parámetro un número entero y devolver el factorial

de ese número. El número pasado como parámetro no puede ser mayor que 12.

4. Dada una lista de 400 números de dos byte entrada por teclado , determine la cantidad de números

que se encuentran en los rangos (50-100) y (150-100) y la muestre en pantalla.

5. Elabore un procedimiento que sea capaz de visualizar un número de hasta 32 bits por pantalla.

6. Dada una lista de 200 números de un byte, busque la cantidad de números que terminan en 0 y haga

sonar la bocina de la maquina a esa cantidad en Hz hasta que se oprima la tecla ‘T’ o ‘t’.

7. Dada una lista de 300 números de 2 byte. Determine la cantidad de esos números que dejan 1 en el

resto de la división por 7 y muéstrela en pantalla. Si esa cantidad es mayor que 100 suene la bocina a

10Khz hasta que se oprima la tecla ESC.

8. Dado el siguiente código de un programa escrito en lenguaje ensamblador, diga que es lo que se

muestra en pantalla. Explique.

Page 2: Guia Ejercicios PP2.pdf

Universidad de las Ciencias Informáticas Máquinas Computadoras I Curso 2006/2007

____________________________________________________________________________________________ Departamento de Sistemas Digitales

2

DOSSEG .MODEL SMALL .DATA LISTA DB 5,15,2,12,27,6 DIVISOR DB 3 CONTADOR DB 0 .CODE XXX PROC MOV AX,@DATA MOV DS,AX MOV CX,6 MOV BX,OFFSET LISTA lazo:XOR AX,AX MOV AL,[BX] DIV DIVISOR OR AH,AH JNZ salta INC CONTADOR salta:INC BX LOOP lazo ADD CONTADOR,30H MOV DL,CONTADOR MOV AH,2 INT 21H MOV AX,4C00H INT 21H XXX ENDP END

9. Se tiene un computador PC/XT y se desea enviar datos de 24 bits en 24 bits a un periférico que esta

conectado con la interfaz paralela programable 8255. Configure al 8255 para que sea capaz de realizar

esa acción.

10. Escriba el segmento de código en ensamblador que permita programar el contador 2 del 8254 en el

modo 3 para que genere una señal de salida a una frecuencia de 10 KHz.

11. La ROM-BIOS programa por defecto el contador 0 del 8253 en el modo3 (generador de onda cuadrada)

con un período de la señal de salida del contador (OUT) de 55 milisegundos. Diga cual es la base de

conteo que le envía la ROM-BIOS al contador 0. Reprograme este contador para que la señal de salida

sea generada cada 10ms.

12. Elabore un programa en lenguaje ensamblador que le permita al usuario entrar una edad. Si la edad

entrada es menor que 15 años debe sonar la bocina una vez a 1KHz, si está entre 15 y 130 debe sonar

la bocina dos veces a 2KHz. En caso de que el usuario entre una edad mayor que 130 se debe sacar

un cartel por pantalla indicando que debe estar equivocado. En cualquiera de los casos, luego de sonar

la bocina o sacar el cartel, se le debe preguntar al usuario si desea entrar otra edad, si responde que sí

(‘s’) se debe dar la posibilidad de entrar otra edad, con cualquier otra tecla se debe salir del programa.

Page 3: Guia Ejercicios PP2.pdf

Universidad de las Ciencias Informáticas Máquinas Computadoras I Curso 2006/2007

____________________________________________________________________________________________ Departamento de Sistemas Digitales

3

13. Realice un programa en lenguaje ensamblador que le permita al usuario entrar una cadena de

caracteres por teclado, debe validar para que la cadena entrada tenga al menos un caracter y no más

de 200 caracteres. El programa debe mostrar un mensaje que diga la cantidad de letras mayúsculas

que tiene la cadena. Si la cadena no tiene letras mayúsculas la bocina sonará a la frecuencia de 3Khz,

sino sonará a la frecuencia de 500Hz. El programa se terminará cuando se oprima la tecla ‘s’, con

cualquier otra tecla se debe dar la posibilidad de entrar otra cadena y volver a repetir el proceso.

14. Dado el siguiente programa escrito en lenguaje ensamblador y tras una corrida a mano de este código,

determine:

a) El valor de la variable v2 b) El valor de la frecuencia a la cual suena la bocina. Justifique haciendo uso de los cálculos

pertinentes.

DOSSEG .MODEL SMALL .DATA DW 2380 v1 v2 DW 10 .CODE MAIN PROC MOV AX,@DATA MOV DS,AX XOR DX,DX MOV AX,v1 MOV BX,v2 DIV BX MOV v2,AX OUT 42H,AL XCHG AL,AH OUT 42H,AL IN AL,61h OR AL,3 OUT 61h,AL MOV AX,4C00H INT 21H MAIN ENDP END

15. Elabore un programa en lenguaje ensamblador que le permita al usuario entrar el año de nacimiento

de 20 personas y muestre la cantidad de personas que sean menores de 20 años, además si existen

más de 10 personas que nacieron antes del año 1970, haga sonar la bocina a una frecuencia de 5

Khz. El programa debe terminar cuando se presione la tecla (‘s’) o (‘S’).

Nota: El programa no debe permitir que se entren años de nacimiento menores que 1870 ni mayores

que 2006.

Page 4: Guia Ejercicios PP2.pdf

Universidad de las Ciencias Informáticas Máquinas Computadoras I Curso 2006/2007

____________________________________________________________________________________________ Departamento de Sistemas Digitales

4

16. Dado el siguiente programa escrito en lenguaje ensamblador y tras una corrida a mano de este código,

determine:

a) El valor de la frecuencia a la cual suena la bocina. Justifique haciendo uso de los cálculos

pertinentes.

b) La condición para que la bocina deje de sonar.

DOSSEG .MODEL SMALL .CODE MAIN PROC MOV AX,0000000001000000b SHL AX,1 ADD AX,1062 OUT 42H,AL XCHG AL,AH OUT 42H,AL IN AL,61h OR AL,00000011b OUT 61h,AL

MOV Ah,7 INT 21h IN AL,61h AND AL,11111100b OUT 61h,AL MOV AX,4C00H INT 21H MAIN ENDP END

17. Realice un programa en lenguaje ensamblador, que dada las longitudes de los lados de un triángulo

entrados por teclado, permita clasificarlo de forma tal que muestre un cartel en pantalla que diga:

• “TRIANGULO EQUILÁTERO” si el triángulo tiene los tres lados iguales, y suene la bocina 3 veces

a 3000Hz;

• “TRIANGULO ISÓSCELES” si el triángulo tiene solo dos lados iguales, y suene la bocina 2 veces

a 2000Hz;

• “TRIANGULO ESCALENO” si el triángulo tiene todos sus lados diferentes, y suene la bocina 1 vez

a 1000Hz;

El programa debe terminar cuando se presione la tecla (‘t’) o (‘T’).

Nota: El programa no debe permitir que se entren longitudes de lados que sean 0 ni mayores que 99

unidades, además las longitudes entradas deben cumplir con la desigualdad triangular.

Page 5: Guia Ejercicios PP2.pdf

Universidad de las Ciencias Informáticas Máquinas Computadoras I Curso 2006/2007

____________________________________________________________________________________________ Departamento de Sistemas Digitales

5

18. Dado el siguiente programa escrito en lenguaje ensamblador diga que es lo que hace. Explique

brevemente.

DOSSEG .MODEL SMALL .DATA a db 2 b db 5 c db 3 .CODE xxx PROC NEAR MOV AX,@DATA MOV DS,AX XOR AX,AX MOV AL,a MOV CL,8 SHL AX,CL XOR BX,BX MOV BL,b MOV CL,4 SHL BX,CL XOR DX,DX MOV DL,c OR AX,BX OR AX,DX XCHG AL,AH OUT 42H,AL

OUT 42H,AL IN AL,61H OR AL,00000011B OUT 61H,AL MOV AH,7 INT 21H IN AL,61H AND AL,11111100B OUT 61H,AL salir: MOV AX,4C00H INT 21H xxx ENDP END

19. Dado el siguiente programa escrito en lenguaje ensamblador y tras una corrida a mano de este código,

determine:

a) El valor de la frecuencia a la cual suena la bocina. Justifique haciendo uso de los cálculos

pertinentes.

b) La condición para que la bocina deje de sonar.

Page 6: Guia Ejercicios PP2.pdf

Universidad de las Ciencias Informáticas Máquinas Computadoras I Curso 2006/2007

____________________________________________________________________________________________ Departamento de Sistemas Digitales

6

DOSSEG .MODEL SMALL .CODE MAIN PROC MOV AX,1000000001000000b ROL AX,1 SUB AX,10 OUT 42H,AL XCHG AL,AH OUT 42H,AL IN AL,61h OR AL,00000011b OUT 61h,AL MOV Ah,1 INT 21h IN AL,61h AND AL,11111100b OUT 61h,AL MOV AX,4C00H INT 21H MAIN ENDP END

20. En Linux existe un comando (grep) que es utilizado para la búsqueda de patrones dentro de un texto.

Simule (a pequeña escala) este comando y determine si un patrón entrado por teclado se encuentra en

una cadena previamente declarada. Si el patrón es encontrado muestre un cartel que lo refleje y haga

sonar la bocina a 15 Khz.

Ejemplo:

Patrón a buscar=”ser”

CADENA=”Este pueblo jamás será derrotado”

Salida

El patrón se encuentra.

¡¡¡La bocina suena a 15 KHz!!!

21. Realice un programa en lenguaje ensamblador que solicite la entrada por teclado de una oración y

emita un sonido a 1 KHz si la oración no comienza con mayúsculas, y uno a 2 KHz si la oración no

termina en punto.

Page 7: Guia Ejercicios PP2.pdf

Universidad de las Ciencias Informáticas Máquinas Computadoras I Curso 2006/2007

____________________________________________________________________________________________ Departamento de Sistemas Digitales

7

22. Realice un programa en lenguaje ensamblador que solicite la entrada por teclado de una oración, y

detecte si contiene 's' de ser así debe sonar la bocina a 1 KHz hasta que se presione la 's' 3 veces

consecutivas.

23. Realice un programa en lenguaje ensamblador que permita al usuario entrar un número de hasta 3

dígitos por teclado y le muestre un mensaje que diga si el número es primo o no. En caso de ser primo

la bocina de la máquina deberá sonar a la frecuencia de 2 KHz. El programa se terminará cuando se

oprima la tecla ESC.

24. Realice un programa en lenguaje ensamblador que muestre en intervalos de 2 segundos los números

del 32 al 255 con su correspondiente símbolo ASCII separado por tres espacios, el programa debe

mostrar el número y su ASCII y sonar la bocina de la máquina un segundo a la frecuencia de 5 KHz y

un segundo en silencio antes de mostrar el otro número en la línea de abajo.

25. Realice un programa en lenguaje ensamblador que solicite la entrada por teclado de una oración, luego

cuente la cantidad de vocales que contenga esta y suene la bocina a 500 Hz tantas veces como 'a'

hayan en la oración, a 1000 Hz tantas veces como 'e' hayan, a 1500 Hz tantas veces como 'i' hayan, a

2000 Hz tantas veces como 'o' hayan y finalmente a 2500 Hz tantas veces como 'u' hayan, el sonido

debe ser en orden es decir primero la 'a', luego la 'e' y así hasta la 'u'.

26. Dado el siguiente código de un programa escrito en lenguaje ensamblador.

a) Determine a que valor se debe inicializar la variable VALOR para que la bocina interna de la

máquina suene a una frecuencia de 10Khz

b) Diga la tecla que se debe oprimir para que la bocina deje de sonar.

Page 8: Guia Ejercicios PP2.pdf

Universidad de las Ciencias Informáticas Máquinas Computadoras I Curso 2006/2007

____________________________________________________________________________________________ Departamento de Sistemas Digitales

8

DOSSEG .MODEL SMALL .DATA VALOR DW ? .CODE XXX PROC MOV AX,@DATA MOV DS,AX MOV BX,0FFH SUB BX,VALOR MOV AX,BX OUT 42H,AL XCHG AL,AH OUT 42H,AL IN AL,61H OR AL,00000011B OUT 61H,AL repite:MOV AH,7 INT 21H CMP AL,0DH JNE repite IN AL,61H AND AL,11111100B OUT 61H,AL MOV AX,4C00H INT 21H XXX ENDP END

27. Realice un programa que comience sonando la bocina de la máquina a la frecuencia de 5 Khz.

Cuando se oprima la tecla D la bocina deberá sonar 1KHz menos y si se oprime la tecla A la bocina

deberá sonar 1 KHz más, el programa terminará si se llega a 20 Hz o a 20 KHz o se oprima la tecla

‘s’.

28. Hacer un programa que suene la bocina de la PC con 1KHz para la tecla 1 un segundo , 2kHz para

la tecla 2 dos segundos , 3 Khz para la tecla 3 tres segundos y así hasta la tecla 9. El programa

debe terminar cuando se oprima la tecla s.

Suponga que la frecuencia de trabajo del microprocesador es aproximadamente igual a 2,4Ghz.

29. Realice un programa permita al usuario entrar un digito por teclado que le indique a la maquina la

cantidad de segundos que debe sonar la bocina con una frecuencia de 15 Khz, transcurrido este

tiempo la bocina se apagara y le permitirá al usuario realizar la misma operación hasta que se

oprima la tecla s, en este caso se terminara el programa.

Suponga que la frecuencia de trabajo del microprocesador es aproximadamente igual a 2,4Ghz.

Page 9: Guia Ejercicios PP2.pdf

Universidad de las Ciencias Informáticas Máquinas Computadoras I Curso 2006/2007

____________________________________________________________________________________________ Departamento de Sistemas Digitales

9

30. Realice un programa que comience sacando un 10 por la pantalla y sonando la bocina 10

segundos a una frecuencia de 10 KHz, a continuación saca por pantalla un 9 y la bocina suena 9

segundos a la frecuencia de 9 KHz, y así sucesivamente hasta el 1 donde se terminara el programa.

Suponga que la frecuencia de trabajo del microprocesador es aproximadamente igual a 2,4Ghz.

31. Los números Fibonacci forman una secuencia en la cual cada número es igual a la suma de los dos

anteriores, o sea:

Fi=Fi-1 + Fi-2 donde Fi es el í-esimo número de Fibonacci.

Los dos primeros números de Fibonacci son por definición iguales a 1 (F1 = F2 =1)

Por lo tanto :

F3 = F2 + F1 =1+1=2

F4 = F3 + F2 =2+1=3

F5 = F4 + F3 =3+2=5 y así sucesivamente

Hacer un programa en ensamblador que genere e imprima en pantalla los n primeros números de

Fibonacci de forma tal de que al mostrarse cada número la bocina suene a una frecuencia igual al

número de Fibonacci en Hz. El tiempo demorado entre un número y otro debe se de dos segundos.

Nota: El numero entrado n debe ser menor que 1000