Simuladores
Enviado por elvismax • 19 de Septiembre de 2014 • 945 Palabras (4 Páginas) • 440 Visitas
Simuladores
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: ADD 103, 105
1: MOV 105, 104
2: CMP 104, 102
3: BEQ 6
4: CMP 101, 101
5: BEQ 0
6:
101: 32
102: 1500
103: 18
104: 9
105: 21
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: MOV 102, 104 ;contador = 1;
1: MOV 102, 105 ;factorial = 1;
2: CMP 104, 103 ;Mientras contador < a
3: BEQ 7+n ;Saltar a final
4: ADD 102, 104 ;contador = contador +1;
5: . . . . . . . . ;factorial = factorial * contador
;supongamos que ocupa n posiciones
5+n: CMP 101, 101
6+n: BEQ 2 ;Saltar a Mientras
7+n: . . . . . ;final
. . . . . . . . . . .
101: 0
102: 1
103: valor de a = 10
104: valor de contador
105: valor 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).
...