Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Para el desarrollo de esta práctica se ha pedido un programa que simule el juego del ahorcado,
se ha dejado libertad a la hora de diseñar el programa con el fin de que todos los juegos sean
únicos.
Para el juego desarrollado, las letras han de ser acertadas en orden, es decir, si la primera
palabra es ‘hola’, al introducir la primera letra esta ha de ser ‘h’, si fuese por ejemplo ‘a’,
incluida en la palabra, pero no en la posición requerida, esto sería considerado como fallo
Se han establecido 3 errores máximos por palabra, si habiendo fallado la letra 3 veces
seguidas, se comete un cuarto fallo se acabaría el juego.
El progreso en el juego se muestra con la ultima letra acertada, y con las que faltan
representadas mediante guiones
Pseudocodigo:
Imprimir enunciado
Else
Tamañopalabra=0
If carácter =! 0
Escribir guiones
Tamañopalabra ++
Para j=0 hasta j= tamañopalabra pedir al usuario que meta una letra
Else
Fin juego
End para
End para
Uso de registros:
_start:
R8->i
R5->bytes de la palabra
R9->j
Tamanopalabra:
R0->k
R2->carácter leido
R5->direccion de la palabra
R9->j
R10->numero de fallos
Depuración:
La función adivinar ha sido la más problemática puesto que es la más compleja y algunos de
los errores corregidos depurando el código han sido:
También hubo el error en el salto al inicio de la función, puesto que al volver con un b, saltaba
a la etiqueta ADIVINAR:STMDB SP!, {R4-R11, LR}, de esta forma pisaba el valor de los registros
otra vez y saltaba error en la consola:
Este error se comunico a la profesora, en busca de ayuda, pero se pudo solucionar por cuenta
propia antes de su respuesta creando una etiqueta justo debajo para que no pisase los
registros otra vez.
Otros errores no relativos a dicha función han sido bastante más fáciles de arreglar puesto que
han sido ciclos que daban una vuelta de más o de menos.
Consideraciones:
Aunque el registro 12 no se deba usar para guardar variables permanentes lo he usado puesto
que en cada ciclo dentro del for vuelvo a meter la dirección inicial de la palabra en 12, no me
da tiempo a pensar como cambiarlo.
Se han creado varias funciones a partir de las dadas por los profesores, uartprint2 para
imprimir sin salto de línea, escrpalabra_ para escribir tantos guiones como letras tenga la
palabra en cuestión, y uarprintcaracter para escribir solo un carácter.
Consideración importante: Al principio del juego hay un error del simulador con overflow de la
pila, comentado a la profesora en clase, que hace que en uno de los enunciados principales se
coma una letra y haya que darle dos veces a continue, después de eso el programa funciona
correctamente
Cuando se ejecuta el programa varias veces, el simulador empieza a dar errores y hay que usar
otro nuevo
Preguntas:
_start:
TAMANOPALABRA:
ADIVINAR:
uartprint:
uartprint2:
uartread:
escrpalabra_:
uartprintcaracter:
2) Uso de la pila por parte de los programas realizados, ¿cuántos bytes en total?
En la función ADIVINAR se han preservado y restaurado al finalizar los valores de los registros
R4 a R11:
A continuación, se muestran varios ejemplos del desarrollo del juego, sin errores y con
errores
Sin errores:
Con errores: