Lenguaje Máquina

Anuncio
Ejercicios con el simulador de la Máquina Sencilla
1. Para cada uno de los casos siguientes, escribe un programa en lenguaje
ensamblador de la máquina sencilla que realice la operación indicada,
introduce el programa en la máquina sencilla y verifica que funciona
correctamente.
Caso 1
Escribir un programa que intercambie los contenidos de dos posiciones de memoria (por
ejemplo, que intercambie el contenido de la 101 con el de la 102).
Caso 2
Escribir un programa que realice la siguiente operación:
If ( a = = b)
c= a+1;
else
c= b+1;
Supones que en la posición 101 hay un 1, que a está en la 102, que b está en la 103 y
que el resultado c debe quedar en la 104.
Caso 3
Escribir un programa que realice la siguiente operación:
i = 0;
while ( i < a)
i = i + 1;
La sentencia while hace que se ejecute la instrucción i=i+1 mientras se cumple la
condición, es decir, mientras i sea menor que a.
Asumir que en la posición 101 hay un 0, que en la 102 hay un 1, que a está en la 103 y
que el resultado i debe quedar en la posición 104.
2. Supón los contenidos de memoria indicados abajo. Rellena la tabla
indicando el contenido de los registros en los ciclos indicados. Después
introduce el programa en la màquina sencilla y verifica si tus estimaciones
han sido correctas.
0:
1:
2:
3:
4:
5:
6:
101:
102:
103:
104:
105:
ADD
MOV
CMP
BEQ
CMP
BEQ
32
1500
18
9
21
103,
105,
104,
6
101,
0
105
104
102
101
Ciclo
¿Qué valor contiene cada uno de estos elementos en el ciclo indicado?
PC
IR
A
B
10
20
30
40
50
3. El factorial de un número, en la máquina sencilla
El factorial de un número a es el resultado de la siguiente operación:
Factorial de n = 1*2*3*…*(a-1)*a
Un algoritmo para calcular el factorial de un número a es el siguiente:
Programa factorial
Variables a, contador, factorial: entero;
a = 10;
contador = 1;
factorial = 1;
While (contador < a)
{
contador = contador +1;
factorial = factorial * contador;
}
La sentencia While hace que se repitan las sentencias que hay entre las llaves mientras
se cumpla la condición de que contador < a.
A continuación tenéis un código incompleto en lenguaje máquina de la máquina sencilla.
El código calcula el factorial, pero le faltan las instrucciones para realizar el cálculo
factorial=factorial*contador
El código es:
0:
1:
2:
3:
4:
5:
MOV
MOV
CMP
BEQ
ADD
. . .
102, 104
102, 105
104, 103
7+n
102, 104
. . . . .
5+n:
CMP
101, 101
;contador = 1;
;factorial = 1;
;Mientras contador < a
;Saltar a final
;contador = contador +1;
;factorial = factorial * contador
;supongamos que ocupa n posiciones
6+n:
7+n:
. . .
101:
102:
103:
104:
105:
BEQ
. . .
. . .
0
1
valor
valor
valor
2
. .
. . . . .
;Saltar a Mientras
;final
de a = 10
de contador
de factorial
Realiza ahora las tareas siguientes:
1. Completa el código en lenguaje máquina con las instrucciones necesarias para
calcular factorial = factorial * contador. Para ello puedes aprovechar
el código que hemos visto en clase para multiplicar dos números. El código se
reproduce más abajo (aunque seguramente tendrás que retocarlo un poco para
integrarlo en el código anterior).
2. Cuando el código esté completo, escribe al lado de cada instrucción el número
de veces que el computador ejecutará esa instrucción.
3. Introduce el código obtenido en el simulador de la máquina sencilla. Comprueba
que funciona correctamente (verifica que calcula correctamente el factorial de 5
y de 7).
4. Ahora rellena la tabla siguiente, sin la ayuda del simulador.
Ciclo
¿Qué valor contiene cada uno de estos elementos en el ciclo indicado?
PC
IR
A
B
10
20
30
40
50
5. Comprueba ahora con la ayuda del simulador, que tus estimaciones son
correctas.
Código para multiplicar el contenido de la posición 104 por el contenido de la posición
105 y dejar el resultado en la posición 106.
0:
1:
2:
3:
4:
5:
6:
7:
MOV
ADD
ADD
CMP
BEQ
CMP
BEQ
…
101:
102:
0
1
101,
104,
102,
103,
7
101,
1
106
106
103
105
101
103:
0
4. Algunas preguntas sobre arquitectura de computadores
Supongamos que aumentamos la memoria de la MS a 1K ¿Cómo afectaria a los
siguientes elementos de la máquina sencilla?:
-PC
-Bus de direcciones
-Bus de datos
-RI
-Longitud de las palabras de la memoria
Y si lo que hacemos es aumentar la palabra de la memoria a 32 bits?
Descargar