elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Como proteger una cartera - billetera de Bitcoin


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  ASM (Moderador: Eternal Idol)
| | | |-+  ENSABLADOR MIPS
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: ENSABLADOR MIPS  (Leído 3,140 veces)
SKaY9

Desconectado Desconectado

Mensajes: 9


Ver Perfil
ENSABLADOR MIPS
« en: 2 Mayo 2013, 19:20 pm »

Buenas, tengo que hacer lo siguiente:
implementar en lenguaje ensamblador del MIPS el producto escalar de 2 vectores.

data # Segmento de datos
tvector: .word 6 # Tamaño de los vectores
res: .space 4 # Resultado del producto escalar
vector1: .word 6,7,8,9,4,1 # Vector 1
vector2: .word 2,3,5,4,6,7 # Vector 2
 Después de la ejecución del programa ejemplo, el resultado
debe ser res=140

También se debe de poder modificar el resultador res.

Código:
		.data 					# Segmento de datos
res: .space 4 # Resultado del producto escalar
tvector: .word 6 # Tamaño de los vectores
vector1: .word 6,7,8,9,4,1 # Vector 1
vector2: .word 2,3,5,4,6,7 # Vector 2

main:
la $a0,vector1 # $a0 <-- dirección base del array vector1
la $a1,vector2 # $a1 <-- dirección base del array vector2
lw $a2,tvector # $a2 <-- tamaño del array = n
li $a3,140 # $a3 <-- valor que le daremos a res
sw $a3,res # $a3 <-- carga el contenido de la memoria en la dirección especificada de 32 bits en res
jal ip # invoca rutina ip, guarda en $ra la dir. de vuelta
move $a0, $v0 # escribe en consola el resultado (que ip dejó en $v0)
li $v0, 1
syscall

li $v0, 10
syscall

ip: li $v0, # inicializa sum a 0. $v0 guardará el resultado que devuelve la rutina
li $t3, 0 # $t3: índice de los elementos del array (i)
ip1: bge $t3, $a3, res # sale cuando i >= res
lw $t0, 0($a0) # $t0 <-- a0[i]
  lw $t1, 0($a1) # $t1 <-- a1[i]
mul $a3, $t0, $t1
  add $v0, $v1, $a3 # res <-- res + a0[i] * a1[i]
  addi $a0,$a0, 4 #incrementa los punteros $a0
addi $a1,$a1, 4 #incrementa los punteros $a1
  addi $t3, $t3, 1 # i++
b ip1 # cierra bucle (salto incond. a ip1)
ipx: jr $ra # retorna al invocador





como puedo aumentar la posicion del puntero que apunta a los vectores, esque no se me mueve?


« Última modificación: 2 Mayo 2013, 21:25 pm por SKaY9 » En línea

SKaY9

Desconectado Desconectado

Mensajes: 9


Ver Perfil
Re: ENSABLADOR MIPS
« Respuesta #1 en: 10 Mayo 2013, 14:24 pm »

Ya esta solucionado.


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Como pasar de psudocodigo a mips.
ASM
Hipeople 1 4,725 Último mensaje 10 Junio 2009, 20:26 pm
por Eternal Idol
llevar del lenguaje C a MIPS
Dudas Generales
ISKRA 0 6,113 Último mensaje 20 Febrero 2011, 15:30 pm
por ISKRA
Programacion MIPS ¿para que me serviria?
ASM
andres_5 3 5,749 Último mensaje 29 Marzo 2011, 11:08 am
por Eternal Idol
[APORTE] Videojuego TETRIS en MIPS
ASM
NullP0inter 3 4,748 Último mensaje 19 Diciembre 2014, 00:34 am
por xv0
Ensablador de relleno
Ingeniería Inversa
e 4 2,709 Último mensaje 1 Noviembre 2019, 11:36 am
por e
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines