Ayuda Volumen de una Esfera

Iniciado por muyayodeoz, 9 Enero 2014, 19:03 PM

0 Miembros y 1 Visitante están viendo este tema.

muyayodeoz

Saludos! Soy nuevo en el foro, espero ser de ayuda, JAVA es mi fuerte pero ensamblador... Necesito hacer una programa en ensamblador MIPS para éste sábado, se trata de calcular el volumen de una esfera. Se debe introducir por teclado el radio.
A ver si me podeis ayudar en como empezar éste programa.

Un saludo y gracias.
:)

topomanuel

Nadie te hará tu tarea desde el principio... pon lo que ya tengas hecho y pide ayuda sobre lo que creas son errores. o o que no entiendas...

Saludos.

muyayodeoz

el probñema es que no se como empezar :S necesito como empezar gracias no pretendo el codigo

Danyfirex

Si sabes programar seguro si lees lo básico de ensamblador MIPS lo harás fácilmente.

saludos

muyayodeoz

#4
Se lo que viene a ser cargar datos en resitros y tal, esoty en primero de telecomunicaciones y java si sé pero ensamblador en mips solo cargar en direcciones.
Si supiera como hacerlo creedme que lo haría.
Tengo esto de momento (lo que se, cargar numeros. )
.data
dat_pi: .float 3.1415926
str_res: .asciiz "El Volumen de la esfera es: "
radio: .float 1.0 #Esto es un valor temporal
.text
.globl __start
__start:

l.s $t0,radio
li $t1,4


Lo que no se es cuales son las subrutinas para leer un float. gracias




he avanzado con ayuda de otro foro y tengo ésto:
.data
dat_pi: .float 3.1415926
string_result: .asciiz "El Volumen de la esfera es: "
str_pide_radio .asciiz "Introduzca el radio de la esfera"
radio: .float 1.0 #Esto es un valor temporal
.text
.globl __start
__start:

l.s $t0,dat_pi #Cargamos PI
li $t1,4 #Cargamos 4

la $a0,str_pide_radio #Pide radio
jal put_str


la $4,radio #Lee el numero introducido
jal get_sfloat





#----------------------------------SUBRUTINAS-----------------------------------------------#

get_sfloat: #Lee un flotante simple de la consola.
li $v0,6
syscall
jr $31


put_str:
li $v0,4 #Escribe una cadena de texto en la consola.
syscall
jr $31



fin:
li $v0,10 #Cierra consola y finaliza programa.
syscall





Creo que tengo todo y solo queda multiplicar y dividir, ge buscado como hacerlo en google y me sale ésto:
mult rs, rt
Multiplicación R
Multiplica el contenido de los registros rs y rt. Los 32 MSB
del resultado se
almacenan en el registro HI y los 32 LSB
en el registro LO


Mi duda es:¿Como uso el resultado de la multiplicacion? gracias
Com me dijisteis he aportado mi código.

cpu2

#5
Hola

No se nada sobre la arquitectura Mips, pero si se que tienes que utilizar las instrucciones de como flotante para hacer eso, estas usando las de calculo general. Mirate esto.

http://www.doc.ic.ac.uk/lab/secondyear/spim/node20.html

Y sobre tu ultima pregunta, pues como estas utilizando las syscall del sistema, no se cual sera, enteoria seria cargar el resultado de la multiplicacion o division en el registro adecuado "parametro" y llamar a la syscall asi es como funciona en amd64, pero antes asegurate si la syscall soporta numeros decimales.

Un saludo.

muyayodeoz

Cita de: cpu2 en 12 Enero 2014, 12:02 PM
Hola

No se nada sobre la arquitectura Mips, pero si se que tienes que utilizar las instrucciones de como flotante para hacer eso, estas usando las de calculo general. Mirate esto.

http://www.doc.ic.ac.uk/lab/secondyear/spim/node20.html

Y sobre tu ultima pregunta, pues como estas utilizando las syscall del sistema, no se cual sera, enteoria seria cargar el resultado de la multiplicacion o division en el registro adecuado "parametro" y llamar a la syscall asi es como funciona en amd64, pero antes asegurate si la syscall soporta numeros decimales.

Un saludo.

Gracias por responder :) ya lo tengo todo solucionado y el ejercicio hecho, ahora subo la respuesta.
Gracias a todos
PD:Syscall admite flotantes