Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ;main()
- ;{
- ;char V[5][16]
- ;int N[5]
- ;int S[5];
- ; for(i=0;i<5;i++)
- ; { printf("Inserisci una stringa\n")
- ; scanf("%s",V[i]);
- ; N[i]=strlen(V[i]);
- ; }
- ; for(i=0;i<5;i++)
- ; S[i]=somma(V[i],N[i])
- ; for(i=0;i<5;i++)
- ; printf("S[%d]=%d\n",i,S[i]);
- ; }
- ; int somma( char *VF, int n)
- ; {
- ; int i,s;
- ; s=0;
- ; for(i=0;i<n;i++)
- ; if(VF[i]< 58 && VF[i]>= 48)
- ; s=s+VF[i]-48;
- ;
- ; return s;
- ; }
- .data
- V: .space 80
- N: .space 40
- S: .space 40
- str_1: .asciiz "Inserisci una stringa\n"
- str_2: .asciiz "S[%d]=%d\n"
- ind_str: .space 8
- val_1: .space 8
- val_2: .space 8
- r_fd: .word 0
- r_ind: .space 8
- r_byte: .word 16
- stack: .space 32
- .code
- ;stack
- daddi $sp, r0, stack
- daddi $sp, $sp, 32
- daddi $s0, r0, 0 ;i=0 per N
- daddi $s1, r0, 0 ;i=0 per V
- for_1:
- slti $t0, $s0, 40
- beqz $t0, start_for2
- ;printf("Inserisci una stringa\n")
- daddi $t0, r0, str_1
- sd $t0, ind_str(r0)
- daddi r14, r0, ind_str
- syscall 5
- ;scanf("%s", V[i])
- daddi $t0, $s1, V
- sd $t0, r_ind(r0)
- daddi r14, r0, r_fd
- syscall 3
- ;N[i] = strlen(V[i])
- sd r1, N($s0)
- daddi $s0, $s0, 8
- daddi $s1, $s1, 16
- j for_1
- start_for2:
- daddi $s0, r0, 0 ;i=0 per N
- daddi $s1, r0, 0 ;i=0 per V
- daddi $s2, r0, 0 ;i=0 per S
- for_2:
- slti $t0, $s0, 40
- beqz $t0, start_for3
- daddi $a0, $s1, V
- ld $a1, N($s0)
- jal somma
- sd r1, S($s2)
- daddi $s0, $s0, 8
- daddi $s1, $s1, 16
- daddi $s2, $s2, 8
- j for_2
- start_for3:
- daddi $s0, r0, 0 ;i=0 - per S (incrementare 8)
- daddi $s1, r0, 0 ;i=0 - per i (incrementare 1)
- for_3:
- slti $t0, $s0, 40
- beqz $t0, end
- daddi $t0, r0, str_2
- sd $t0, ind_str(r0)
- sd $s1, val_1(r0)
- ld $t0, S($s0)
- sd $t0, val_2(r0)
- daddi r14, r0, ind_str
- syscall 5
- daddi $s0, $s0, 8
- daddi $s1, $s1, 1
- j for_3
- somma:
- ;incremento stack
- daddi $sp, $sp, -16
- sd $s0, 0($sp)
- sd $s1, 8($sp)
- daddi $s0, r0, 0 ;i=0
- daddi $s1, r0, 0 ;s=0
- for_somma:
- slt $t0, $s0, $a1
- beqz $t0, return_somma
- dadd $t0, $s0, $a0
- lbu $t1, 0($t0)
- slti $t0, $t1, 58
- beqz $t0, incr_i_somma
- slti $t0, $t1, 48
- bne $t0, $zero, incr_i_somma
- daddi $t1, $t1, -48
- dadd $s1, $s1, $t1
- incr_i_somma:
- daddi $s0, $s0, 1
- j for_somma
- return_somma:
- dadd r1, r0, $s1
- ;decremento stack
- ld $s0, 0($sp)
- ld $s1, 8($sp)
- daddi $sp, $sp, 16
- jr $ra
- end:
- syscall 1
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement