Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- .data
- tam: .word 8
- vect: .word 64,25,9,23,56,77,87,100
- res: .word 0
- .text
- .global main
- main: push {lr}
- ldr r0, =vect @ Cargamos direccion del vector en r0
- ldr r1, =tam
- ldr r1, [r1] @ Cargamos longitud del vector en r1
- ldr r4, =res @ Cargamos la direccion de res en r4
- bl maxones @ Invocamos funcion
- str r0, [r4] @ Guardamos el resultado en res
- pop {pc} @ Finalizamos el programa
- ones: @Codigo de la funcion que devuelve el numero de 1s en la
- @representación binaria de un valor de entrada.
- @(Hay que llamarla desde maxones y no se puede modificar)
- mov r2, #0
- onesloop:
- and r3, r0, #1
- add r2, r2, r3
- lsrs r0, #1
- bne onesloop
- mov r0, r2
- bx lr
- maxones:
- push {r4}
- mov r4,#0
- lsr r1,#1
- loop:
- ldr r2, [r0], #4
- push {r0}
- mov r0,r2
- bl ones
- mov r3,r0 @r3= numero de unos del primer array
- pop {r0}
- ldr r2, [r0], #4
- push {r0}
- mov r0, r2
- push {r3}
- bl ones
- pop {r3}
- mov r5,r0
- cmp r5,r3
- movGE r3,r5
- cmp r3,r4
- movGE r4,r3
- pop {r0}
- sub r1,r1,#1
- cmp r1,#0
- bNE loop
- pop {r4}
- bx lr
- @cargar el vector en r0,
- @primra posicion
- @push {r0}
- @calculas el valor de unos
- @mov r3,r0
- @pop {r0}
- @ 64 , 25, 9, 23, 56, 77, 87, 100
- @1000000,11001,1001,10111,111000,1001101,1010111,1100100
- @ 1, 3, 2, 4, 3, 4, 5, 3
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement