Hacer un programa que simule la ejecución de un programa escrito en un cierto lenguaje ensamblador (Apodado cariñosamente Rourix en honor a su inventor). En este lenguaje, se dispone exclusivamente de 100 variables de tipo entero, , todas inicialmente con el valor 1. Las instrucciones del programa se encuentran guardadas consecutivamente en posiciones etiquetadas (hasta un máximo de 999). El conjunto de instrucciones posibles es:
stop |
detiene el programa. |
endl |
escribe un salto de línea. |
prin
|
escribe, precedido de un espacio, el contenido de . |
stor
|
guarda el valor en la variable (). |
copy
|
copia en (). |
acum
|
acumula en (). |
subs
|
resta de (). |
prod
|
multiplica por (). |
goto
|
salta a la instrucción de la posición . |
jzer
|
salta a la instrucción de la posición sólo si . |
jneg
|
salta a la instrucción de la posición sólo si . |
El programa siempre se empieza a ejecutar desde la posición 000.
Después de ejecutar la instrucción de una posición
,
se pasa a ejecutar la siguiente instrucción (la de la posición
,
la cual si se ha de ejecutar siempre existirá), excepto como es lógico
con stop, goto, y jzer o
jneg cuando las condiciones para saltar son ciertas.
Todas las
y
del programa estarán entre 0 y 99. Todas las
son líneas de programa válidas. Al ejecutar un programa, siempre se
encontrará un stop en algún momento.
La entrada consiste en un programa correcto en ensamblador, de entre 1 y 1000 líneas. Cada línea empieza con tres dígitos redundantes que indican su número empezando por 000, seguidos de un espacio, y de la instrucción correspondiente a esa línea. Los campos de cada instrucción también están separados por un espacio. Todas las direcciones de salto tienen exactamente tres dígitos.
Hay que escribir lo mismo que escribiría el programa en ensamblador.
Es suficiente con tener una tabla para almacenar las 100 variables, otra tabla para almacenar el programa, y un índice que indica cual es la instrucción que se ha de ejecutar a continuación.
Autoría: Omer Giménez
Generación: 2026-01-25T10:18:15.639Z
© Jutge.org, 2006–2026.
https://jutge.org