Está en la página 1de 3

Problemario Motorola, Ing. Luis G. Uribe C.

, Febrero 2013

ARQUITECTURA DEL COMPUTADOR-I: PROBLEMARIO HC9S08


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”?

.../ Pág. 3 de 3 /...

También podría gustarte