Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- .data
- VETTORE: .space 96
- A: .space 24
- msg1: .asciiz "Inserisci la dimensione minima di una stringa"
- msg2: .asciiz "%d) Inserire una stringa con almeno %d caratteri "
- msg3: .asciiz "Ripetizioni assenti. Inserisci un numero positivo "
- msg4: .asciiz "A[%d]= %d \n"
- pars5: .space 8
- val1: .space 8
- val2: .space 8
- pars3: .word 0
- inds3: .space 8
- dims3: .word 32
- stack: .space 32
- .code
- daddi $sp, $0, stack
- daddi $sp, $sp, 32
- ;printf1
- daddi $t0, $0, msg1
- sd $t0, pars5($0)
- daddi r14, $0, pars5
- syscall 5
- ;scanf
- jal InputUnsigned
- dadd $s3, $0, r1 ;num = $s3
- ini_for1:
- daddi $s0, $0, 0
- daddi $s1, $0, 0
- daddi $s2, $0, 0
- for1:
- ;condizione di uscita
- slti $t0, $s0, 3
- beq $t0, $0, ini_for2
- do:
- ;printf2
- daddi $t0, $0, msg2
- sd $t0, pars5($0)
- daddi r14, $0, pars5
- sd $s0, val1($0)
- sd $s3, val2($0)
- syscall 5
- ;scanf %s
- daddi $t0, $s2, VETTORE
- sd $t0, inds3($0)
- daddi r14, $0, pars3
- syscall 3
- ;condizione di uscita
- slt $t0, r1, $s3
- beq $t0, $0, fine_do
- j do
- fine_do:
- ;chiamo la funzione
- daddi $a0, $s2, VETTORE
- dadd $a1, $0, r1
- jal trova_prima_ripetizione
- dadd $t1, $0, r1 ;pos = $t1
- ;if pos < 0
- slti $t0, $t1, 0
- beq $t0, $0, else1
- ;printf msg3
- daddi $t0, $0, msg3
- sd $t0, pars5($0)
- daddi r14, $0, pars5
- syscall 5
- jal InputUnsigned
- sd r1, A($s1)
- j inc_for1
- else1:
- sd $t1, A($s1)
- inc_for1:
- daddi $s0, $s0, 1
- daddi $s1, $s1, 8
- daddi $s2, $s2, 32
- j for1
- ini_for2:
- daddi $s0, $0, 0
- daddi $s1, $0, 0
- for2:
- ;condizione di uscita
- slti $t0, $s0, 3
- beq $t0, $0, fine
- ;printf msg4
- daddi $t0, $0, msg4
- sd $t0, pars5($0)
- daddi r14, $0, pars5
- sd $s0, val1($0)
- ld $t0, A($s1)
- sd $t0, val2($0)
- syscall 5
- inc_for2:
- daddi $s0, $s0, 1
- daddi $s1, $s1, 8
- j for2
- fine:
- syscall 0
- trova_prima_ripetizione:
- daddi $sp, $sp, -32
- sd $s0, 0($sp)
- sd $s1, 8($sp)
- ini_for3:
- daddi $s0, $0, 0 ; i = $s0
- for3:
- ;condizione di uscita
- daddi $t0, $a1, -1
- slt $t1, $s0, $t0
- beq $t1, $0, return_1
- ini_for4:
- daddi $s1, $s0, 1 ; j = i + 1
- for4:
- ;condizione di uscita
- slt $t0, $s1, $a1
- beq $t0, $0, inc_for3
- dadd $t2, $s0, $a0
- lbu $t0, 0($t2)
- dadd $t3, $s1, $a0
- lbu $t1, 0($t3)
- beq $t0, $t1, return_j
- inc_for4:
- daddi $s1, $s1, 1
- inc_for3:
- daddi $s0, $s0, 1
- j for3
- return_1:
- daddi r1, $0, -1
- j ripristino
- return_j:
- daddi r1, $s0, 0
- ripristino:
- ld $s0, 0($sp)
- ld $s1, 8($sp)
- daddi $sp, $sp, 32
- jr $ra
- syscall 0
- #include InputUnsigned.s
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement