En este punto se ha completado la simulación de la primera instrucción. Todo lo que resta es preparar a Simple-
tron para que ejecute la siguiente instrucción. Como la instrucción que acaba de ejecutarse no es una transferencia de
control, sólo necesitamos incrementar el registro contador de instrucciones de la siguiente manera:
++contadorDeInstrucciones;
Esta acción completa la ejecución simulada de la primera instrucción. Todo el proceso (es decir, el ciclo de ejecución de
una instrucción) empieza de nuevo, con la búsqueda de la siguiente instrucción a ser ejecutada.
Ahora veremos cómo se simulan las instrucciones de bifurcación (las transferencias de control). Todo lo que nece-
sitamos hacer es ajustar el valor en el contador de instrucciones de manera apropiada. Por lo tanto, la instrucción de
bifurcación condicional (
40
) se simula dentro de la instrucción
switch
como
contadorDeInstrucciones = operando;
La instrucción condicional “bifurcar si el acumulador es cero” se simula como
if
( acumulador ==
0
)
contadorDeInstrucciones = operando;
En este punto, usted debe implementar su simulador Simpletron y ejecutar cada uno de los programas que escribió
en el ejercicio 7.34. Si lo desea, puede embellecer al LMS con características adicionales y ofrecerlas en su simulador.
Su simulador debe comprobar diversos tipos de errores. Por ejemplo, durante la fase de carga del programa, cada
número que el usuario escribe en la
memoria
de Simpletron debe encontrarse dentro del rango de
–9999
a
+9999
. Su
simulador debe probar que cada número introducido se encuentre dentro de este rango y, en caso contrario, seguir
pidiendo al usuario que vuelva a introducir el número hasta que introduzca un número correcto.
Durante la fase de ejecución, su simulador debe comprobar varios errores graves, como los intentos de dividir entre
cero, intentos de ejecutar códigos de operación inválidos, y desbordamientos del acumulador (es decir, las operaciones
aritméticas que den como resultado valores mayores que
+9999
o menores que
–9999
). Dichos errores graves se conocen
como
errores fatales. Al detectar un error fatal, su simulador deberá imprimir un mensaje de error tal como
*** Intento de dividir entre cero ***
*** La ejecucion de Simpletron se termino en forma anormal ***
y deberá imprimir un vaciado de computadora completo en el formato que vimos anteriormente. Este análisis ayudará
al usuario a localizar el error en el programa.
Sección especial: construya su propia computadora
323
Figura 7.39
Un vaciado de muestra.
REGISTROS
acumulador
+0000
contadorDeInstrucciones
00
registroDeInstruccion
+0000
codigoDeOperacion
00
operando
00
MEMORIA:
0 1 2 3 4 5 6 7 8 9
0 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000
10 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000
20 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000
30 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000
40 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000
50 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000
60 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000
70 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000
80 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000
90 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000
07_MAQ_CAP_07.indd323
4/19/081:23:19AM