Absolutmente amargado con el lenguaje ensamblador

Intento hacer una chorrada de programa que en c haria en 30 segundos pero que en ensamblador llevo horas y me falla hasta el crear uan triste cadena cawento
el programa tiene un vector de enteros,recorro el vector y compruebo que el elmento por el que voy es mayor que o igual a 5 si lo es imprimo que es mayor que 5 y si no pues imprimo que es menor ...muuuuuy simple.
Pero la cosa esque esto no da errorres pero tampoco me muestra nada en la pantalla asi que no se si esta bien omal,alguien que sepa ensamblador me lo pude revisar y decirmeque falla??
.data
v: .word 5,2,10,4,6
texto1: .asciiz "Es mayor o igual que 5“
texto2: .asciiz "Es menor que 5“
.text
.globl main
main:
la   $s0, v
move $t1, $zero  #limite del vector
move $t0, $zero  #indice del vector

bucle:

bge $t0,$t1,fin_bucle                      # condicion para acabar el bucle
   sw   $t4,0($s0)                    # almacena v[i]
   addi $t0,$t0,1                     # suma 1 al contenido de $t0
   addi $s0,$s0,4
   bge $t4,0x00000005,else            #si $t4 es menor que 5
   la $v0,0x00000004                  # imprime texto1
   syscall
   j fin_if
   else:                                             
   la $v0,0x00000004                  # imprime texto2
   syscall
   fin_if:
fin_bucle:
li $v0,0x0000000A                          #salir
syscall
¿para que procesador es?

por lo que veo parece un mips,
asi que ten en cuenta que no puedes poner de golpe "0x00000005" y tambien que hay algunos operadores que tienen signo y te llenan el registro de ff
si es para mips y sin no pongo 0x00000005 que pongo solo el 5??
zaius5 escribió:si es para mips y sin no pongo 0x00000005 que pongo solo el 5??


prueba a ver...
la $v0,0x00000004 # imprime texto1
syscall

Eso no es correcto,

en $v0 metes el código de la syscall, pero no como un "load adress" o "la" mételo con un li o "load inmediate"
li $v0 4

Para que las syscall muestren el texto, deberas meter la dirección base de este en registro $a0

Si quieres mostrar el texto1 por pantalla sería

la $a0 texto1
li $v0 4
syscall

Esto debería de funcionarte.
5 respuestas