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