52 lines
1.1 KiB
NASM
52 lines
1.1 KiB
NASM
DIM =, 6
|
|
.data
|
|
vetB: .byte 2, 14, 119, 54, 10, 41
|
|
vetN: .space DIM
|
|
|
|
.text
|
|
.globl main
|
|
.ent main
|
|
main:
|
|
la $a0, vetB
|
|
la $a1, vetN
|
|
li $a2, DIM
|
|
jal Cambio
|
|
li $v0, 10 # codice per uscita dal programma
|
|
syscall # fine
|
|
.end main
|
|
|
|
.ent Cambio
|
|
Cambio:
|
|
|
|
li $t0, 0 # contatore di riga
|
|
loop:
|
|
|
|
li $t1, 0 # numero di cambi
|
|
addu $t2, $t0, $a0
|
|
lb $t2, ($t2) # carico la parola
|
|
li $t3, 0 # contatore bit
|
|
|
|
# inizializzo last val
|
|
andi $t4, $t2, 0x00000001
|
|
|
|
rileva_cambi:
|
|
srl $t2, $t2, 1
|
|
andi $t5, $t2, 0x00000001
|
|
|
|
beq $t4, $t5, cont
|
|
addiu $t1, $t1, 1
|
|
|
|
cont:
|
|
move $t4, $t5
|
|
|
|
addiu $t3, $t3, 1
|
|
bne $t3, 7, rileva_cambi
|
|
|
|
addu $t2, $t0, $a1
|
|
sb $t1, ($t2) # salvo il risultato in vetN
|
|
|
|
addiu $t0, $t0, 1
|
|
bne $t0, $a2, loop
|
|
|
|
jr $ra
|
|
.end Cambio |