47 lines
821 B
NASM
47 lines
821 B
NASM
DIM =, 5
|
|
.data
|
|
vet1: .word 56, 12, 98, 129, 58
|
|
vet2: .word 1, 0, 245, 129, 12
|
|
risultato: .space DIM
|
|
.text
|
|
.globl main
|
|
.ent main
|
|
main:
|
|
la $a0, vet1
|
|
la $a1, vet2
|
|
la $a2, risultato
|
|
li $a3, DIM
|
|
jal CalcolaDistanzaH
|
|
li $v0, 10 # codice per uscita dal programma
|
|
syscall
|
|
.end main
|
|
|
|
.ent CalcolaDistanzaH
|
|
CalcolaDistanzaH:
|
|
sll $a3, $a3, 2
|
|
addu $t0, $a0, $a3
|
|
|
|
loop:
|
|
lw $t1, ($a0)
|
|
lw $t2, ($a1)
|
|
xor $t1, $t1, $t2
|
|
li $t2, 0
|
|
li $t3, 0
|
|
|
|
iloop:
|
|
andi $t4, $t1, 0x0001
|
|
addu $t2, $t2, $t4
|
|
srl $t1, $t1, 1
|
|
addiu $t3, $t3, 1
|
|
bne $t3,8, iloop
|
|
|
|
sw $t2, ($a2)
|
|
|
|
# incremento
|
|
addiu $a0, $a0, 4
|
|
addiu $a1, $a1, 4
|
|
addiu $a2, $a2, 4
|
|
bne $a0, $t0, loop
|
|
|
|
jr $ra
|
|
.end CalcolaDistanzaH |