Advertisement
JosepRivaille

Pràctica2- EC -S2- FIB

Oct 10th, 2015
819
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. # PRACTICA 2 #######################
  2.  
  3. ## s2a.s ##
  4.  
  5.     .data
  6.  
  7.     .text
  8.     .globl main
  9. main:
  10.     li $s1, 23 # Y
  11.     li $s0, 8  # X
  12.  
  13.     li $s2, 0x01
  14.     sllv $s0, $s0, $s2
  15.     addiu $s0, $s0, -1
  16.     xor $s1, $s1, $s0
  17.     jr $ra
  18.  
  19.        
  20. ## s1b.s ##
  21.  
  22.     .data
  23. result: .word 0
  24. num:    .byte '7'
  25.  
  26.     .text
  27.     .globl main
  28. main:
  29. # COPIA EL TEU CODI AQUI
  30.     la $s0, num
  31.     lw $s0, 0($s0)
  32.     la $s1, result
  33.     lw $s1, 0($s1)
  34.     li $s2, 'a'
  35.     blt $s0, $s2, o
  36.     li $s2, 'z'
  37.     blt $s2, $s0, o
  38.     b then
  39. o:  li $s2, 'A'
  40.     blt $s0, $s2, elif
  41.     li $s2, 'Z'
  42.     blt $s2, $s0, elif
  43. then:   addu $s1, $zero, $s0
  44.     b endif
  45. elif:   li $s2, '0'
  46.     blt $s0, $s2, elel
  47.     li $s3, '9'
  48.     blt $s3, $s0, elel
  49.     subu $s1, $s0, $s2
  50.     b endif
  51. elel:   addiu $s1, $zero, -1
  52. endif:  la $s0, result
  53.     sw $s1, 0($s0)
  54.     jr $ra
  55.  
  56.     .data
  57. w:        .asciiz "8754830094826456674949263746929"
  58. resultat: .byte 0
  59.  
  60.     .text
  61.     .globl main
  62. main:
  63.     addiu   $sp, $sp, -4
  64.     sw  $ra, 0($sp)
  65.     la  $a0, w
  66.     li  $a1, 31
  67.     jal moda
  68.     la  $s0, resultat
  69.     sb  $v0, 0($s0)
  70.     move    $a0, $v0
  71.     li  $v0, 11
  72.     syscall
  73.     lw  $ra, 0($sp)
  74.     addiu   $sp, $sp, 4
  75.     jr  $ra
  76.  
  77. nofares:
  78.     li  $t0, 0x12345678
  79.     move    $t1, $t0
  80.     move    $t2, $t0
  81.     move    $t3, $t0
  82.     move    $t4, $t0
  83.     move    $t5, $t0
  84.     move    $t6, $t0
  85.     move    $t7, $t0
  86.     move    $t8, $t0
  87.     move    $t9, $t0
  88.     move    $a0, $t0
  89.     move    $a1, $t0
  90.     move    $a2, $t0
  91.     move    $a3, $t0
  92.     jr  $ra
  93.  
  94.  
  95. moda:
  96.     addiu $sp, $sp, -4
  97.     sw $ra, 0($sp)      # reservar espai pila i preparar adreça retorn
  98.     li $t0, 0       # k = 0
  99.     li $t1, 10      # k < t1
  100.     addiu $sp, $sp, -36 # registres segurs
  101.     sw $s0, 0($sp)
  102.     sw $s1, 4($sp)
  103.     sw $s2, 8($sp)
  104.     sw $s4, 12($sp)
  105.     sw $s5, 16($sp)
  106.     sw $s6, 20($sp)
  107.     sw $a0, 24($sp)
  108.     sw $a1, 28($sp)
  109.     sw $a2, 32($sp)
  110.     addiu $sp, $sp, -40 # histo
  111.    
  112.    
  113. wh1:    sll $t3, $t0, 2
  114.     move $t2, $sp
  115.     addu $t2, $t2, $t3  # Guardem a $t2 cada iteració + direccio $sp      
  116.     sw $zero, 0($t2)    # Posa a 0 v[pos] on pos = i*4
  117.     addiu $t0, $t0, 1   # ++k
  118.     blt $t0, $t1, wh1
  119.    
  120.     li $s0, 0       # k = 0
  121.     li $s1, '0'     # char max = '0'
  122.     move $s3, $a0       # *vec
  123.     move $s4, $a1       # num
  124.     move $s5, $sp       # s5 = *histo
  125.     li $s6, '0'
  126.    
  127. wh2:    bge $s0, $s4, fiwh
  128.     move $a0, $s5       #
  129.     addu $a1, $s3, $s0  #
  130.     lb $a1, 0($a1)      #
  131.     subu $a1, $a1, $s6  #
  132.     subu $a2, $s1, $s6  # pas de parametres update()
  133.     jal update
  134.     addu $s1, $s6, $v0  # nou valor max
  135.     addiu $s0, $s0, 1   # ++k
  136.     b wh2
  137.    
  138. fiwh:   move $v0, $s1
  139.     addiu $sp, $sp, 40  # variable local
  140.     lw $s0, 0($sp)
  141.     lw $s1, 4($sp)
  142.     lw $s2, 8($sp)
  143.     lw $s4, 12($sp)
  144.     lw $s5, 16($sp)
  145.     lw $s6, 20($sp)
  146.     lw $a0, 24($sp)
  147.     lw $a1, 28($sp)
  148.     lw $a2, 32($sp)
  149.     addiu $sp, $sp, 36
  150.     lw $ra, 0($sp)
  151.     addiu $sp, $sp, 4
  152.     jr $ra
  153.  
  154. update:
  155.     addiu $sp, $sp, -4
  156.     sw $ra, 0($sp)
  157.     addiu $sp, $sp, -12
  158.     sw $a0, 0($sp)
  159.     sw $a1, 4($sp)
  160.     sw $a2, 8($sp)
  161.    
  162.     jal nofares
  163.     lw $a0, 0($sp)
  164.     lw $a1, 4($sp)
  165.     lw $a2, 8($sp)
  166.     sll $t7, $a1, 2     # i
  167.     lw $t4, 0($a0)
  168.     addu $t2, $t4, $t7  # adreça h[i]
  169.     lw $t2, 0($t2)
  170.     addiu $t1, $t2, 1   # ++h[i]
  171.     sll $t7, $a2, 2
  172.     addu $t2, $t6, $t7  # adreça h[imax]
  173.     lw $t2, 0($t2)      # h[imax]
  174.    
  175.     ble $t1, $t2, else
  176.     move $v0, $a1
  177.     b endif
  178. else:   move $v0, $a2
  179. endif:  lw $a0, 0($sp)
  180.     lw $a1, 4($sp)
  181.     lw $a2, 8($sp)
  182.     addiu $sp, $sp, 12
  183.     lw $ra, 0($sp)
  184.     addiu $sp, $sp, 4
  185.     jr $ra
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement