Estimada,
Contesto por partes.
Mi primer duda es que el programa no debería tener un loop infinito para que la CPU no ejecute instrucciones basura y me sobrescriba los valores calculados anteriormente en mi programa?.
Sí, correcto! Debería finalizar con un loop infinito para que no se ejecute basura y el sistema se comporte de forma errática.
Luego, dentro del do while, en la línea donde se ejecuta la instrucción JN con dato_menor, no deberían estar cambiadas las operaciones de SUB y ADD?
Sí, también correcto! Tu explicación está perfecta.
Por ultimo según la descripción de las instrucciones de los jump, no me quedo del todo claro si en las partes donde dice "dato_menor, esta_true, etc" estos representan números indicando a donde tienen que moverse el JM. En caso de ser así por ejemplo ¿esta_true debería valer 5,y do debería valer un número negativo?
Saludos!
Federico