Essays.club - Ensayos gratis, notas de cursos, notas de libros, tareas, monografías y trabajos de investigación
Buscar

La nueva Programación en ensamblador mips

Enviado por   •  19 de Noviembre de 2018  •  1.295 Palabras (6 Páginas)  •  340 Visitas

Página 1 de 6

...

addi $s0, $zero, 0 #y

addi $s1, $zero, 0 #B

addi $s2, $zero, 0 #C

addi $s3, $zero, 20 #valorInicio

addi $s4, $zero, 0 #resultadoEjecucionFuncion

addi $t3, $zero, 0 #i

addi $s5, $zero, 50 #declaro variable50

addi $s7, $zero, $s6 #cursor s7 y s6 vector

Loop beq $t3, $s5 END #direccional for al if?

addi $t3, $t3, 1 #aumento el i

add $t4, $s3, $t3

sw $t4, 0($s7)

addi $t4, $t4, 1 #aumentando

beq $st3, $s0 E #i==y

addi $t5, $zero, 0 #auxiliar para -B-C

addi $t6, $zero, 0 #auxiliar para (-C-B)t5+V[]

addi $t7, $zero, 10 #10

addi $s4, $zero, 0 #t6+t7 total y resultadoEjecu

sub $t5, $s1, $s2 #-b-c

add $t6, y($s8) #s8 posicion del V

add $s4, $t7, $t6 #suma total sesultadoejecucion

add $t4, $s3, $t3 #auxiliar para ir hasta la pos4

sw $t4, 0($s7) #s7cursor

addi $t4, $t4, 4 #aumentando 4

Diagrama de Flujo

[pic 2]

2. Dados dos vectores numéricos, determine cual de los dos tiene el mayor promedio.

Implementación en lenguaje de alto nivel

Una implementación funcional en Python del pseudocódigo anterior que cumple con las condiciones de la práctica se encuentra en el archivo adjunto ‘Promedios.py’. La implementación se puede ver a continuación:

- # Funcion que calcula el promedio de un vector con valor centinela = 32000

- def promedio (v):

- n = 0 # Cuenta el numero de elementos en el vector

- s = 0 # Contiene la suma de los elementos del vector

- for i in v:

- if i != 32000:

- n = n + 1

- s = s + i

- return float(s / n )

-

- # Vectores ingresados por el usuario

- v1 = [2,3,4,5,6,7,5,32000]

- v2 = [4,5,6,7,8,9,24,32000]

-

- # Promedios de los vectores

- p1 = promedio(v1)

- p2 = promedio(v2)

-

- # Comparando los promedios

- if p1 > p2:

- print "p1:", p1

- prom = p1

- elif p1

- print "p2:", p2

- prom = p2

- else:

- print -1 # O tambien “promedios iguales”

- prom = p1

- v1[n] = v1[n] - prom

- v2[n] = v2[n] - prom

Implementación en lenguaje de bajo nivel

- # LAB 3: Programación en ensamblador MIPS

- # Promedios.ams

- .data # MANEJO DE MEMORIA DE DATOS

- centinela: .word 32000

- v1: .word 4, 56, 76, 38, 88, 65, 999, 32000

- v2: .word 23, 98, 65, 34, 32000

-

- .text # MANEJO DE MEMORIA DE DATOS

- la $t0, centinela # t0 tiene la direccion de centinela

- la $t1, v1 # t1 tiene la direccion de v1

- la $t2, v2 # t2 tiene la direccion de v2

- lw $s0, 0($t0) # s0 tiene el valor de centinela

-

- addi $a0, $t1, 0 # a0 tiene la direccion de v1

- jal promedio

- addi $s1, $v0, 0 # s1 tiene el promedio de v1

-

- addi $a0, $t2, 0 # a0 tiene la direccion de v2

- jal promedio

- addi $s2, $v0, 0 # s2 tiene el promedio de v2

-

- addi $a0, $zero, -1 # a0 = -1

- beq $s1, $s2, imprimir # Si los promedios son iguales imprima -1 para indicar que

- # son promedios iguales

- slt $t0, $s2, $s1 # t0 = 1 si s2

- beq $t0, 1, mayor # Si el primer promedio es mayor que el segundo, salte a mayor

- add $a0, $s2, $zero # a0 tiene el valor del segundo promedio

- jal imprimir # imprima el segundo promedio

- sll $a0, $t4, 2 # posicion en memoria donde esta el n-esimo elemento de v1

- sll $a1, $t4, 2 # posicion en memoria donde esta el n-esimo elemento de v2

- sub $t7, $a0, $s2 # v1[n] - prom

- sub $t8, $a1, $s2 # v2[n] - prom

- lw 0($a0), $t7 #

- lw 0($a1), $78 #

- mayor: add $a0, $s1, $zero # a0 tiene el valor del primer promedio

-

...

Descargar como  txt (7.8 Kb)   pdf (56.4 Kb)   docx (18.2 Kb)  
Leer 5 páginas más »
Disponible sólo en Essays.club