1. Qué elementos mínimos componen un computador 23. Por qué el exponente, en la representación IEEE 754 de 2. Qué es un computador tipo Von Neumann; uno tipo punto flotante, no se expresa en complemento a 2? En Harvard. Qué los diferencia qué se expresa? 3. Ejemplo de computador/procesador Von Neumann 24. Por qué a veces hay que manipular conjuntos de bits que no están relacionados unos con otros, sino que su 4. Qué elementos mínimos componen una Instrucción? significado es independiente de cada cual. Dé ejemplos 5. Qué son operandos tácitos? Dé un ejemplo 25. Cómo se aíslan bits independientes, dentro de bytes o 6. Qué es una Dirección? Por qué se usan Direcciones? Por palabras (16 bits), para tomar decisiones en base a su qué no se referencia los operandos simbólicamente? valor? Escriba una rutina. 7. Qué es el "gap" semántico? 26. Cómo se borran simultáneamente bits individuales 8. Dónde reside el significado de un elemento de información? dentro de un registro externo (de I/O), sin alterar el valor de los bits que los rodean? Escriba una rutina. 9. En una máquina hipotética la instrucción: MOV #CONST,DST se expresa como la siguiente secuencia de bytes: 27. Cómo se colocan en uno, simultáneamente, bits $10, $10, $10 individuales dentro de un registro externo, sin alterar el Cómo sabe el CPU que el primer $10 corresponde al código valor de los bits que los rodean? Escriba una rutina. del MOV, el siguiente $10 es la constante CONST y que el 28. Cómo se copian simultáneamente, varios bits de una último $10 es la dirección de la variable DST? posición de memoria a otra? (Cfr. BitCopy.asm) 10. Qué es el ciclo "fetch" - "execute"? 29. Qué es el PSW (CCR)? Y los códigos de condición? 11. Cómo se satisface el perenne ciclo "fetch" - "execute" 30. Defina el significado de: Carry, Zero, Negative, cuando recién se enciende el computador, y no hay un Overflow, Half-Carry... Qué operaciones generan esas programa en la memoria qué leer y qué ejecutar? banderas? Para qué se usan esas banderas? 12. Explique el proceso de "Boot Strapping" con el mayor 31. Qué es Big Endian, Little Endian, Bi-endian? detalle que le sea posible (Cfr. Stallings, o Internet) Represente información en memoria con esas modalidades 13. Represente, en términos de instrucciones de 3, 2, 1 y 0 32. Qué nombres reciben, cuando se van agrupando, las direcciones, expresiones algebraicas diversas (tome siguientes unidades: Arithmetic Logic Unit? ejemplos de Stallings y Tanenbaum) Control Unit? Memory? Peripherals 14. Convierta expresiones de notación infija a polaca inversa, 33. Programe las Torres de Hanoi, Fibonacci, cálculo de y viceversa (RPN; Stallings y Tanenbaum) Factorial, Exponenciaciones por multiplicaciones 15. Enuncie y aplique el algoritmo de Dijkstra para convertir sucesivas (hechas con sumas sucesivas): con y sin expresiones de notación infija a polaca inversa, RPN recursividad. Además: extracción de raíz cuadrada, (Cfr. Tanenbaum o Stallings) elevar al cuadrado, una calculadora de 2 dígitos… (Cfr. prácticas del Lab.) 16. Diga las categorías elementales más importantes de datos? 34. Qué es un PLL; un FLL (como el FLL del MC9S08) 17. Cómo se representan los números? Enteros, sin signo, 35. Qué es cristal de cuarzo; cómo funciona; su importancia? con signo; punto flotante… 36. Qué es un “include file”? Dé 5 ejemplos, de este curso 18. Cómo se representan las Direcciones? 37. Dé el rango de direcciones de la Página Cero (Zero)? 19. Direcciones son números SIN signo; ¿cómo funciona el 38. Por qué es importante la memoria de la página cero? Direccionamiento Relativo, donde la Dirección Efectiva 39. Dónde comienzan las variables (RAM) en el MC9S08? se calcula sumando, a la dirección actual, un cierto desplazamiento, está expresado en complemento a 2 (+ o -) 40. Dónde comienza el Stack luego del POR del MC9S08 20. Muestre con ejemplos que al sumar una dirección con un 41. Cómo inicializa usted el SP en su programa; por qué no desplazamiento complemento a 2, resulta una Dirección usa una sóla instrucción? 21. Cómo se representan caracteres? Qué es el código 42. Qué es el HEAP? ASCII? El Unicode? Cuál es: 0,1,A,a en ASCII? 43. A dónde apunta el SP en el MC9S08; hacia dónde crece? 22. Escriba rutinas que conviertan números representados Y en la familia Intel? como caracteres ASCII a: BCD, BCD empaquetado 44. Indique dónde comienza la ROM en el MC9S08? (2 BCD por byte), un entero binario (2 bytes) en 45. Dónde comienzan los Vectores de interrupción en el complemento a 2. Ejemplo: Convertir: “‐” “3” “2” “1” “0” “9” MC9S08QE128? Cuántos hay? Mencione al menos 8 46. Identifique: interrupciones de mayor y menor prioridad
.../ Pág. 1 de 3 /...
Problemario Motorola, Ing. Luis G. Uribe C., Febrero 2013 47. Cuáles Interrupts NO pueden enmascararse. 66. Explique con detalle el mecanismo de interrupciones en 48. Cuál es la diferencia entre cada definición: el Microcontrolador MC9S08QE128QE. ¿Cómo se VAR1 EQU 1 VAR5 DC 1 habilitan y deshabilitan?¿Qué sistema de prioridades VAR2 DS 1 VAR6 DC.B 1 utiliza? ¿Se pueden atender interrupciones en forma VAR3 DS.B 1 VAR7 FCB 1 estrictamente anidadas, como la PDP-11 o el Pentium? VAR4 RMB 1 VAR8 DCB.B 1, 1 67. Para qué sirven, y sus limitaciones, los módulos del 49. Qué es el “dummy_isr” de la tabla de vectores MC9S08: RTC, IRQ y TPM? 50. Qué es el Watch Dog? Explique su funcionamiento y uso 68. Dado el enunciado de algún problema, hacer su 51. Diga si estas 3 piezas de código hacen lo mismo, o no: Diagrama de Estados; un Esquema de Bloques de la lda portc lda portc lda portc estructura del programa, donde c/bloque represente cmp #!0 tst portc bne routine una subrutina o fragmento importante del código, su bne routine bne routine posición en el archivo del programa y su relación con 52. Qué significa "Conjunto de Instrucciones Enriquecido" otros fragmentos o rutinas del programa. 53. Explique por qué multiplicar dos números no puede dar 69. Codifique en C un programa que cuente el número unos overflow (en ningún micro), pero dividir dos número sí. en una palabra, haciendo un "loop" 54. Programe un generador de funciones: diente de sierra, 70. Codifique en C un programa que cuente el número unos triangular, cuadrada, sinusoidal. Indique cómo variar la en una palabra, aplicando la siguiente expresión: amplitud y la frecuencia (cfr. prácticas de laboratorios) "x &= (x‐1)", que apaga el bit más a la derecha 55. Dados una pieza de código y un estado inicial de 71. Codifique en C un programa que cuente el número ceros posiciones de memoria, llenar el estado final de la en una palabra, haciendo un "loop" memoria después de realizar una corrida en frío. 72. Codifique en C un programa que cuente el número ceros 56. Qué son timers por software; cómo se relacionan con el en una palabra, aplicando la siguiente expresión: hardware. Debe poder usarlos (timers8.inc) y programarlos "x |= (x+1)", que enciende el bit más a la derecha 57. Indique varias maneras de implementar un timer. En 73. En ciertas máquinas, 'BRA 0' es un salto a sí mismo. particular, diga qué consideraciones habría que hacer en Cómo es en el MC9S08? caso de tener que manejar 256 timers, en vez de 8 (revise 74. Qué es un Ensamblador? Qué diferencia un programa escrito en la estrategia de decrementar c/timer c/vez...) ensamblador de uno en lenguaje de máquina? Ejemplos. 58. Implemente una Máquina de Estados dada (FSM). 75. Identifique los campos de cada línea de Assembler. 59. Cómo eliminar rebotes de contactos individuales que Indique cuáles son obligatorios y cuáles opcionales. sirven como señales de entrada? Si se conectan a IRQ, en 76. Qué son Pseudo operaciones (directivas del ensamblador). vez de a un puerto convencional, qué tratamiento tiene Dé ejemplos qué hacer que en este caso, en las rutinas de interrupción? 77. Qué es el "Location Counter"? Qué lo diferencia del 60. Qué es, y cómo funciona, la comunicación serial. "Program Counter" Indique todos los elementos básicos de la señalización que permiten sincronizar el transmisor y el receptor. 78. Qué es un ensamblador de dos pasadas? 61. Qué es el RS232-F. Indique los valores de voltaje que 79. Qué es un módulo objeto? Cuál es la función del linker? define, y su relación con la información transmitida. El loader? El relocating loader? El absolute loader? 62. Cómo conecta varios 7-segmentos a un sólo puerto del 80. Hay una instrucción que produce el negativo de un micro (multiplexer). Cuál es la frecuencia de barrido para número. Si se le aplica al número más negativo, qué una visualización apropiada? resultado da? Es eso correcto? Cómo se señala o indica que el resultado es incorrecto? 63. Problemas: Indique los modos de direccionamiento, la posición de memoria y el contenido del resultado de la 81. Escriba un programa en ASM que desplace una posición operación. Asuma que H:X=$0055, A=$CC y la posición a la izquierda los 24 bits de 3 bytes; explique el de memoria $0055 contiene el valor $AC. funcionamiento CLR $1F, X 82. Cómo funciona el mecanismo de Stack para permitir STA $00FF llamar subrutinas, funciones o procedimientos. MOV X+, $023F MOV #$1F, PTA Explique cómo funcionan las llamadas recursivas, desde el punto de vista de la información de control de 64. Problemas: Codifique en hexadecimal: CLR $9E6F, X flujo del programa. STA $9ED7, SP 83. Definir las variables mediante pseudo instrucciones MOV #6E, TPM3C3SC como DB, DW, etc., hace que esas variables sean CBEQ #9E, SP, $61 "visibles" desde cualquier subrutina (son Globales). 65. Explique con detalle qué hace la instrucción: MOV #$FF, PTCDD
.../ Pág. 2 de 3 /...
Problemario Motorola, Ing. Luis G. Uribe C., Febrero 2013 Además, estas variables existen siempre, se estén 97. Programe rutinas que realicen c/u de las siguientes ejecutando las subrutinas que las emplean, o no (como si funciones. Incluya los Diagramas de Flujo: fueran "static"). Explique un método (stack frame) que 1) Decoder/Demultiplexer de 1 a 8 (1 entrada 'I', 1 permita "crear" en el stack las variables como parte del entrada Enable, 3 selectores, 8 salidas) procedimiento de "materializar" un método, subrutina o procedimiento (instantiate), y que las haga aparecer como 2) Multiplexer de 8 a 1 (8 entradas 'I', 3 selectores, 1 variables "automáticas" en C. Ellas "desaparecerán" entrada Enable, 1 salida) cuando la subrutina "retorne". 3) Full Adder (A+B); A y B de 4 bits. Resultado: 5 bits 84. Por qué se guarda la dirección de retorno en el stack, y no 4) Comparador de A y B; A y B de 4 bits c/u. en un registro (IBM 370), o en el encabezado de la Resultado: A > B, A == B, A < B. subrutina (IBM 370)? (Cfr. Stallins) 5) Emule el 7486: 6 Exors, c/u de 2 entradas y 1 salida 85. Qué es una suma con saturación? Qué ventaja tiene sobre 6) Contador Up/~Down de 0 a 15 (salidas DCBA). Otras la suma con overflow? Indique un caso en donde sea útil entradas: ~MasterClear, ~LOAD, entradas DCBA la suma con saturación, por sobre la suma con overflow para el Load; Clock 86. Qué es un coprocesador? Dé 2 ejemplos de coprocesadores 7) Idem al (6), pero de 0 a 9 87. Explique cómo funciona un Push en el HC9S08. A dónde 8) Registro de entrada serie y salida paralelo (1 entrada apunta siempre el SP? Hacia donde crece el Stack? Por 'I', 1 Clock, 1 entrada Left/~Right, 4 salidas DCBA) qué debe mantenerse balanceado el stack? Qué significa eso? 9) Registro de entrada paralelo y salida serie (4 'I', 1 Clock, 1 entrada Left/~Right, 4 salidas DCBA) 88. Explique por qué un procesador Big-endian puede comparar más rápido cadenas de caracteres alineadas 10) Un Generador de Código Hamming, para 4 bits de como bytes (la ULA puede comparar VARIAS letras en datos, Entrada: I7I6I5I3, Salidas: I7I6I5P4I3P2P1 paralelo), y los Little-Endian no pueden? (Cfr. Ingeniería Digital) 89. Suponga que se quiere hacer una suma entre dos Note: Circuitos combinatorios pueden resolverse con Tablas operandos que están representados por varios bytes 98. Qué es el "Hardware Interface" (H/W I/F) consecutivos; muestre cómo en los procesadores Big- endian la secuencia de sumas entre los bytes queda "al 99. Cómo es el H/W I/F del HCS08 revés" que en los Little-endian 100. Qué son Data Registers, Control Lines, Status Lines, 90. Defina modos de direccionamiento: Inmediato, Directo, Control and Status Registers (RCS) Indirecto, Registro, con desplazamiento, con registro 101. Ejemplos de información de Control; Ejemplos de base, en el stack, autoincrementado, autodecrementado, información de Status (en SCI; impresoras; discos...) relativo al PC, absoluto 102. Codifique la macro BitCopy que copie un bit cualquiera 91. Qué son operandos inmediatos? (del bit 0 al 7) de una variable fuente, a otra variable 92. Indique los 17 modos de direccionamiento del MC9S08 destino, en cualquier posición (también del bit 0 al 7). 93. Dada una instrucción, con cierto modo de Los bits que se van a copiar pueden valer 0 o 1, como direccionamiento, indicar claramente la dirección del es lógico. operando (y si es posible, el VALOR del operando) Las variables deben poder estar localizadas en cualquier parte del campo de direcciones de 16 bits 94. Dado un pequeño programa, que emplea ciertos modos de (direccionamiento EXT). Sirve para implementar direccionamiento para identificar sus operandos, indicar instrucciones en "C" tales como esta: el contenido final de ciertas posiciones de memoria... ; PTCD_PTCD0 = PTBD_PTBD5; // Display PWM output, ; // pin PTB5, into LED wired to PTC0 95. Programe una rutina para desplegar información en decimal (no en hexadecimal) en un sistema de varios 7- o, en general: d0=s7; d1=s6; d2=s5; d3=s4; d4=s3; d5=s2; d6=s1; segmentos (aquí no se preocupe cómo se van a conectar d7=s0; (Invierte COMPLETAMENTE todos los bits de los 7-segmentos; sólo piense en la conversión de números un byte) de binario a su equivalente decimal) 103. Esté seguro de entender el código del ejercicio 96. Esboce y discuta (y programe) un esquema para “05d_L1_M.asm”, y de saber programar sus propias eliminar el rebote en más de un interruptor a la vez. variables automáticas en el Stack. ¿Cómo incorporaría otro temporizador para alternar un led entre apagado y encendido, una vez por segundo, junto a la rutina de “debouncing”?