guia ejercicios pp2.pdf
TRANSCRIPT
![Page 1: Guia Ejercicios PP2.pdf](https://reader036.vdocuments.co/reader036/viewer/2022071701/55cf9d1e550346d033ac52ad/html5/thumbnails/1.jpg)
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](https://reader036.vdocuments.co/reader036/viewer/2022071701/55cf9d1e550346d033ac52ad/html5/thumbnails/2.jpg)
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](https://reader036.vdocuments.co/reader036/viewer/2022071701/55cf9d1e550346d033ac52ad/html5/thumbnails/3.jpg)
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](https://reader036.vdocuments.co/reader036/viewer/2022071701/55cf9d1e550346d033ac52ad/html5/thumbnails/4.jpg)
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](https://reader036.vdocuments.co/reader036/viewer/2022071701/55cf9d1e550346d033ac52ad/html5/thumbnails/5.jpg)
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](https://reader036.vdocuments.co/reader036/viewer/2022071701/55cf9d1e550346d033ac52ad/html5/thumbnails/6.jpg)
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](https://reader036.vdocuments.co/reader036/viewer/2022071701/55cf9d1e550346d033ac52ad/html5/thumbnails/7.jpg)
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](https://reader036.vdocuments.co/reader036/viewer/2022071701/55cf9d1e550346d033ac52ad/html5/thumbnails/8.jpg)
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](https://reader036.vdocuments.co/reader036/viewer/2022071701/55cf9d1e550346d033ac52ad/html5/thumbnails/9.jpg)
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