Ayuda con un codigo hecho en MIPS

Iniciado por [LOH]lordofhell, Abril 20, 2014, 12:23:18 AM

Tema anterior - Siguiente tema

[LOH]lordofhell

pues me dejaron de tarea hace algo hacer un codigo en MIPS en el que tengo que debo hacer que me pidan un numero para que despues me den las sumas de sus numeros pares e impares, esto es lo que he hecho hasta ahora pero me saca un error:

.data
Presentacion: .asciiz "Tarea 2, Impresion de un numero entero. "
Ejercisio: .asciiz "Escriba un numero entero mayor a 0 : "
Numero: .word 0
Resultado: .asciiz "\n"
Resultado1: .asciiz "La suma de numeros impares es $at"
Resultado2: .asciiz "La suma de numeros pares es $at"


.text
main:
li $v0, 4
la $a0, Presentacion #Se imprime la presentacion
syscall

li $v0, 4
la $a0, Ejercisio #Se pide el numero entero
syscall

li $v0, 5
syscall

sw $v0, Numero

li $v0, 4
la $a0, Resultado
syscall

li $a0 0
li $a1 0
li $a2 2

Operacion1:
add $at, $zero, $v0
blt $at, $a0, Numero
blt $at, $a0, OpResultado1

OpResultado1:
la $a0, Resultado2
syscall

Operacion2:
add $at, $zero, $v0
blt $at, $a0, Numero
blt $at, $a0, OpResultado2
syscall

OpResultado2:
la $a0, Resultado2
syscall


quiero que me digan que me hace falta arreglar y con que, pero no el resultado final, eso quiero hacerlo yo para aprender, por favor D:

Sami

Ahora me voy a echar una partida con mis colegas y estoy muy cansado, así que mañana me miraré los apuntes que tengo de MIPS de la carrera y te comento, que he visto algunas cosas que no me suenan de nada y antes de preguntarte qué es mejor lo reviso por si tuviera lagunas.

Tienes suerte de que me guste el ensamblador, pero vaya cojones que tienes de venir aquí a preguntar eso xDDD
Soy el mayor de los frikis!

[LOH]lordofhell

Cita de: Sami en Abril 21, 2014, 12:08:22 AM
Ahora me voy a echar una partida con mis colegas y estoy muy cansado, así que mañana me miraré los apuntes que tengo de MIPS de la carrera y te comento, que he visto algunas cosas que no me suenan de nada y antes de preguntarte qué es mejor lo reviso por si tuviera lagunas.

Tienes suerte de que me guste el ensamblador, pero vaya cojones que tienes de venir aquí a preguntar eso xDDD
bueno, aqui dice bicronomia informatica, y como he visto que varios aqui tienen conocimiento en programacion...

Sami

Ya decía yo que no me sonaba... el registro "$at" está reservado para el compilador, ese registro no lo he usado yo en la vida. Utiliza los temporales, los $t0-$t9, el error está en que quieres utilizar ese registro y no te deja. Por cierto, ¿qué programa usas para ejecutarlo? Yo lo he abierto con el PcSpim y me ha saltado el error en cuanto he cargado el archivo.

Así mismo, recuerdo que mi profesor me dijo que pusiera un retorno de carro en la última línea de código, si no tampoco iba. Es decir, que tu programa no termine con la última instrucción, si no con una línea vacía.

Y lo del MIPS lo digo porque preguntar de ensamblador la verdad es que es un poco mierda. Ojalá dejasen de enseñarlo en las universidades, no vale para nada.
Soy el mayor de los frikis!

[LOH]lordofhell

#4
Cita de: Sami en Abril 21, 2014, 01:29:34 PM
Ya decía yo que no me sonaba... el registro "$at" está reservado para el compilador, ese registro no lo he usado yo en la vida. Utiliza los temporales, los $t0-$t9, el error está en que quieres utilizar ese registro y no te deja. Por cierto, ¿qué programa usas para ejecutarlo? Yo lo he abierto con el PcSpim y me ha saltado el error en cuanto he cargado el archivo.

Así mismo, recuerdo que mi profesor me dijo que pusiera un retorno de carro en la última línea de código, si no tampoco iba. Es decir, que tu programa no termine con la última instrucción, si no con una línea vacía.

Y lo del MIPS lo digo porque preguntar de ensamblador la verdad es que es un poco mierda. Ojalá dejasen de enseñarlo en las universidades, no vale para nada.

uso el MARS 4.4, y como esta eso del "retorno de carro"?, en cualquier caso, intentare eso de usar temporales. por cierto, aqui esta el codigo de error, talvez sirva que lo sepan:
Error in : invalid program counter value: 0x10010050

Go: execution terminated with errors.

Sami

Qué bien, te da una dirección de memoria, programar con ese tal MARS tiene que ser lo mejor... píllate el PCSpim anda, es super fácil de utilizar. Sólo sirve para ejecutar el programa, no para programarlo, pero te da mucha más información al compilarlo. Con esa dirección de memoria seguramente te diga en qué parte del segmento de código esté el error, una maravilla vamos... tener que poner a contar bytes para encontrar el error...

http://downloads.sourceforge.net/project/spimsimulator/PCSpim_9.1.9.zip?r=http%3A%2F%2Fsourceforge.net%2Fprojects%2Fspimsimulator%2Ffiles%2F&ts=1398109285&use_mirror=skylink

Con lo del retorno de carro me refiero que vayas al último syscall, le des al enter, metas una línea de texto vacía al final del fichero y lo guardes así.
Soy el mayor de los frikis!