Pontificia Universidad Católica de Chile Escuela de Ingeniería

Anuncio
Pontificia Universidad Católica de Chile
Escuela de Ingeniería
Departamento de Ciencia de la Computación
Arquitectura de Computadores (IIC 2342): Interrogación Nº 2
Prof. Domingo Mery
12 de Octubre de 2006
1. (1.5 puntos) Escriba un programa que calcule (sin decimales) la raíz cuadrada
de x. El valor de la variable x es un número 0  x  255 almacenado en forma de
byte en el registro CL. El algoritmo a utilizar es el de búsqueda secuencial del mayor
número entero z tal que la z 2 sea menor o igual a x. De esta forma la raíz (sin
decimales) de x es z. A manera de ejemplo, con este algoritmo la raíz (sin
decimales) de 10 es 3, ya que 3 2 es menor que 10, sin embargo 4 2 no es menor que
10. El resultado debe almacenarse en AL. No se aceptará ninguna solución que no
considere el algoritmo descrito.
Solución:
org 100h
MOV CL,100
MOV DL,15
LAZO:
MOV AL,DL
MUL DL
CMP CL,AL
JNB FIN
DEC DL
JNZ LAZO
FIN:
MOV AL,DL
RET
2. (1.5 puntos) Escriba un programa que realice un histograma (h) de 10 números
del cero al tres. A manera de ejemplo si los 10 números son 0,1,2,3,0,1,2,3,0,1, el
histograma es: h(0)=3, h(1)=3, h(2)=2 y h(3)=2 (hay 3 ceros, hay 3 unos, etc.).
Los 10 números están almacenados a partir de la dirección 'DATOS'. Los 4 elementos
del histograma deben almacenarse a partir de la dirección 'RESULTADO'.
Solución:
org 100h
MOV AX,0700H
MOV DS,AX
MOV BX,RESULTADO
MOV CL,4
INICIO:
MOV [BX],0
INC BX
DEC CL
JNZ INICIO
MOV CL,10
MOV BX,DATOS
MOV AH,0
LAZO:
MOV AL,[BX]
PUSH BX
MOV BX,RESULTADO
ADD BX,AX
INC [BX]
POP BX
INC BX
DEC CL
JNZ LAZO
RET
DATOS:
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
0
1
2
3
0
1
2
3
0
1
RESULTADO:
3. (1.5 puntos) Para la CPU de 1 bit escriba en lenguaje máquina el programa:
A = 0;
B = 1;
C = 0;
D = OR(A,B);
B = XOR(A,C);
C = AND(B,D);
A = NOT(C);
Además conteste: ¿Cuál es el valor final de cada registro?
Solución:
A = 0;
B = 1;
C = 0;
D = OR(A,B);
B = XOR(A,C);
C = AND(B,D);
A = NOT(C);
Valores Finales:
A=1
B=0
C=0
D=1
0000000000
0100000001
1000000000
1100011010
0100101110
1001111100
0000100110
Preguntas (c/u 0.3 puntos): Conteste Brevemente
A. Explique cuáles son las cinco tareas de una CPU.
B. Explique qué es el ciclo fetch.
C. Una CPU de 8 bits tiene un registro acumulador llamado A. En esta CPU el
código en lenguaje máquina de la instrucción 'INC A' es 0001 0001. ¿Es
posible que el código de la instrucción 'DEC A' sea 0001 0001 ? Explique por
qué.
D. Explique a nivel de hardware cómo se realiza el salto incondicional.
E. Explique qué hace la ALU.
Solución
A.
Captar instrucción: la CPU lee una instrucción de la memoria.
Interpretar instrucción: la instrucción se decodifica para determinar qué acción es
necesaria.
Captar datos: la ejecución de una instrucción puede exigir leer datos de la memoria
o de un módulo I/O.
Procesar datos: en la ejecución se puede exigir llevar a cabo alguna operación
aritmética o lógica con los datos.
Escribir datos: los resultados de la ejecución pueden exigir escribir datos en la
memoria o en un módulo I/O.
B.
Ciclo encargado de llevar la siguiente instrucción de la memoria a la CPU. Sus pasos
se describen a continuación:
- El program counter tiene la dirección de la siguiente instrucción.
- El procesador capta la instrucción de la memoria direccionada por el PC.
- Se incremente PC en 1.
- El código de la instrucción se carga en IR.
C.
No es posible, ya que la CPU no podría distinguir cuando se ejecuta cual operación.
Las instrucciones de lenguaje de máquinas son únicas (una instrucción sólo permite
realizar sólo un conjunto de operaciones).
D.
Se coloca en el program counter la dirección almacenada en la instrucción de salto.
De esta forma se cambia el flujo secuencial de las instrucciones.
E.
La ALU es un circuito digital que realiza todas las operaciones aritméticas y lógicas
de las que es capaz la CPU, como por ejemplo: suma, resta, and, or, not.
Descargar