Advertisement
Guest User

Untitled

a guest
Dec 19th, 2017
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ;main()
  2. ;{
  3. ;char V[5][16]
  4. ;int N[5]
  5. ;int S[5];
  6.  
  7.  
  8. ; for(i=0;i<5;i++)
  9. ; { printf("Inserisci una stringa\n")
  10. ;   scanf("%s",V[i]);
  11. ;   N[i]=strlen(V[i]);
  12. ;   }
  13.  
  14.    
  15. ;  for(i=0;i<5;i++)
  16. ;     S[i]=somma(V[i],N[i])
  17.    
  18. ;   for(i=0;i<5;i++)
  19. ;     printf("S[%d]=%d\n",i,S[i]);
  20. ; }      
  21.  
  22. ; int somma( char *VF, int n)
  23. ; {
  24. ;  int i,s;
  25. ;  s=0;
  26. ;  for(i=0;i<n;i++)
  27. ;   if(VF[i]< 58 && VF[i]>= 48)
  28. ;     s=s+VF[i]-48;
  29. ;
  30. ;   return s;
  31. ; }
  32.  
  33. .data
  34.  
  35. V: .space 80
  36. N: .space 40
  37. S: .space 40
  38.  
  39. str_1: .asciiz "Inserisci una stringa\n"
  40. str_2: .asciiz "S[%d]=%d\n"
  41. ind_str: .space 8
  42. val_1: .space 8
  43. val_2: .space 8
  44.  
  45. r_fd: .word 0
  46. r_ind: .space 8
  47. r_byte: .word 16
  48.  
  49. stack: .space 32
  50.  
  51. .code
  52.  
  53. ;stack
  54. daddi $sp, r0, stack
  55. daddi $sp, $sp, 32
  56.  
  57. daddi $s0, r0, 0            ;i=0 per N
  58. daddi $s1, r0, 0            ;i=0 per V
  59. for_1:
  60.     slti $t0, $s0, 40
  61.     beqz $t0, start_for2
  62.    
  63.     ;printf("Inserisci una stringa\n")
  64.     daddi $t0, r0, str_1
  65.     sd $t0, ind_str(r0)
  66.     daddi r14, r0, ind_str
  67.     syscall 5
  68.    
  69.     ;scanf("%s", V[i])
  70.     daddi $t0, $s1, V
  71.     sd $t0, r_ind(r0)
  72.     daddi r14, r0, r_fd
  73.     syscall 3
  74.    
  75.     ;N[i] = strlen(V[i])
  76.     sd r1, N($s0)
  77.    
  78.     daddi $s0, $s0, 8
  79.     daddi $s1, $s1, 16
  80.     j for_1
  81.    
  82. start_for2:
  83.     daddi $s0, r0, 0                ;i=0 per N
  84.     daddi $s1, r0, 0                ;i=0 per V
  85.     daddi $s2, r0, 0                ;i=0 per S
  86.    
  87.     for_2:
  88.         slti $t0, $s0, 40
  89.         beqz $t0, start_for3
  90.        
  91.         daddi $a0, $s1, V
  92.         ld $a1, N($s0)
  93.         jal somma
  94.         sd r1, S($s2)
  95.        
  96.         daddi $s0, $s0, 8
  97.         daddi $s1, $s1, 16
  98.         daddi $s2, $s2, 8
  99.         j for_2
  100.  
  101. start_for3:
  102.     daddi $s0, r0, 0        ;i=0 - per S (incrementare 8)
  103.     daddi $s1, r0, 0        ;i=0 - per i (incrementare 1)
  104.     for_3:
  105.         slti $t0, $s0, 40
  106.         beqz $t0, end
  107.        
  108.         daddi $t0, r0, str_2
  109.         sd $t0, ind_str(r0)
  110.         sd $s1, val_1(r0)
  111.         ld $t0, S($s0)
  112.         sd $t0, val_2(r0)
  113.         daddi r14, r0, ind_str
  114.         syscall 5
  115.        
  116.         daddi $s0, $s0, 8
  117.         daddi $s1, $s1, 1
  118.         j for_3
  119.    
  120. somma:
  121.     ;incremento stack
  122.     daddi $sp, $sp, -16
  123.     sd $s0, 0($sp)
  124.     sd $s1, 8($sp)
  125.    
  126.     daddi $s0, r0, 0        ;i=0
  127.     daddi $s1, r0, 0        ;s=0   
  128.     for_somma:
  129.         slt $t0, $s0, $a1
  130.         beqz $t0, return_somma
  131.        
  132.         dadd $t0, $s0, $a0
  133.         lbu $t1, 0($t0)
  134.        
  135.         slti $t0, $t1, 58
  136.         beqz $t0, incr_i_somma
  137.         slti $t0, $t1, 48
  138.         bne $t0, $zero, incr_i_somma
  139.        
  140.         daddi $t1, $t1, -48
  141.         dadd $s1, $s1, $t1
  142.        
  143.         incr_i_somma:
  144.             daddi $s0, $s0, 1
  145.             j for_somma
  146.        
  147.     return_somma:
  148.         dadd r1, r0, $s1
  149.        
  150.         ;decremento stack
  151.         ld $s0, 0($sp)
  152.         ld $s1, 8($sp)
  153.         daddi $sp, $sp, 16
  154.         jr $ra
  155.        
  156. end:
  157.     syscall 1
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement