Advertisement
Guest User

Untitled

a guest
Dec 31st, 2017
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. .data  
  2.  array: .space 20    #5 element integer array
  3.  string: .space 100    #space for 5 element array of 19 char null terminated strings (20*5)
  4.  insira_o_nome_da_cidade: .asciiz "\nInsira o nome da cidade: "
  5.  insira_a_temperatura: .asciiz "\nInsira a temperatura: "
  6.  maior_temperatura: .asciiz "\nCidade com a maior temperatura: \n"
  7.  menor_temperatura: .asciiz "\nCidade com a menor temperatura: \n"
  8.  temperatura_media: .asciiz "\nTemperatura Media: \n"
  9.  locais: .asciiz    "\nLocais:\n"
  10.  barra: .asciiz "============================\n"
  11.  celcius: .asciiz   "ºC"
  12. .text
  13. .globl main
  14.  main:
  15.  #$t0 saves offset of integer array -> index in array * 4
  16.  #$t1 saves offset of string array  -> index in array * 20
  17.  
  18.   add $t0, $0, $0 # $t0 = 0
  19.   la $t1,string # load address of string storage area
  20.  
  21.   #t2 saves min temperature
  22.   addi $t2, $0, 99
  23.  #t3 saves min temperature city string addresss
  24.  
  25.   #t4 saves max temperature
  26.   addi $t4, $0, 0
  27.  #t5 saves max temperature city string addresss
  28.  
  29.   #t7 saves average
  30.   add $t7, $0, $0
  31.  
  32.   for:
  33.    
  34.     #### LER NOME DA CIDADE ####
  35.     li $v0, 4
  36.     la $a0, insira_o_nome_da_cidade
  37.     syscall
  38.    
  39.     move $a0, $t1
  40.     li $a1, 20
  41.     li $v0, 8
  42.     syscall
  43.    
  44.     #### LER TEMPERATURA DA CIDADE ####
  45.     li $v0, 4
  46.     la $a0, insira_a_temperatura
  47.     syscall
  48.      
  49.     li $v0, 5 # read int to $v0
  50.     syscall
  51.     sw $v0, array($t0) #store $v0 in array[$t0]
  52.    
  53.     lw $t6, array($t0)
  54.    
  55.     bge $t6, $t2, not_lesser
  56.     add $t2, $0, $t6
  57.     move $t3, $t1
  58.     not_lesser:
  59.    
  60.     ble $t6, $t4, not_greater
  61.     add $t4, $0, $t6
  62.     move $t5, $t1
  63.     not_greater:
  64.    
  65.     add $t7, $t7, $t6
  66.    
  67.     addi $t1, $t1, 20 #add 20 to $t1
  68.     addi $t0, $t0, 4 #add 4 to $t0
  69.    
  70.     beq $t0, 20, end
  71.  
  72.   j for
  73.  
  74.   end:
  75.  
  76.   ####### IMPRIMIR CIDADES #################
  77.   add $t0, $0, $0
  78.   la $t1,string
  79.  
  80.   li $v0, 4
  81.   la $a0, locais
  82.   syscall
  83.  
  84.   li $v0, 4
  85.   la $a0, barra
  86.   syscall
  87.  
  88.   for2:
  89.  
  90.     li $v0, 1
  91.     lw $a0, array($t0)
  92.     syscall
  93.  
  94.     li $v0, 4
  95.     la $a0, celcius
  96.     syscall
  97.  
  98.     li $a0, '-'
  99.     li $v0, 11
  100.     syscall
  101.  
  102.     li $v0, 4
  103.     move $a0, $t1
  104.     syscall
  105.    
  106.     lw $t6, array($t0)
  107.     addi $t8, $0, 2
  108.     div $t6, $t8
  109.     mflo $t8
  110.    
  111.     for3:
  112.         ble $t8, 0, end3
  113.    
  114.         li $a0, '*'
  115.         li $v0, 11
  116.         syscall
  117.        
  118.         subi $t8, $t8, 1
  119.         j for3
  120.     end3:
  121.    
  122.     li $a0, '\n'
  123.     li $v0, 11
  124.     syscall
  125.        
  126.     addi $t1, $t1, 20 #add 20 to $t1
  127.     addi $t0, $t0, 4 #add 4 to $t0
  128.    
  129.     beq $t0, 20, end2
  130.    
  131.     j for2
  132.   end2:
  133.  
  134.   li $v0, 4
  135.   la $a0, barra
  136.   syscall
  137.      
  138.   ##########################################
  139.  
  140.   ####### IMPRIMIR MENOR TEMPERATURA #######
  141.   li $v0, 4
  142.   la $a0, menor_temperatura
  143.   syscall
  144.  
  145.   li $v0, 1
  146.   move  $a0, $t2
  147.   syscall
  148.  
  149.   li $v0, 4
  150.   la $a0, celcius
  151.   syscall
  152.  
  153.   li $a0, '-'
  154.   li $v0, 11
  155.   syscall
  156.  
  157.   li $v0, 4
  158.   move  $a0, $t3
  159.   syscall
  160.  ##########################################
  161.  
  162.  
  163.   ####### IMPRIMIR MAIOR TEMPERATURA #########
  164.   li $v0, 4
  165.   la $a0, maior_temperatura
  166.   syscall
  167.  
  168.   li $v0, 1
  169.   move  $a0, $t4
  170.   syscall
  171.  
  172.   li $v0, 4
  173.   la $a0, celcius
  174.   syscall
  175.  
  176.   li $a0, '-'
  177.   li $v0, 11
  178.   syscall
  179.  
  180.   li $v0, 4
  181.   move  $a0, $t5
  182.   syscall
  183.  ###########################################
  184.  
  185.  
  186.   ####### CALCULAR IMPRIMIR TEMPERATURA MEDIA #########
  187.   li $v0, 4
  188.   la $a0, temperatura_media
  189.   syscall
  190.  
  191.   addi $t6, $0, 5
  192.   mtc1.d $t6, $f2   #moves $t6 to $f2 and $t7 to $f3
  193.  
  194.   div.s $f0, $f3, $f2
  195.  
  196.   li $v0, 2
  197.   movf.s $f12, $f0
  198.   syscall
  199.  
  200.   li $v0, 4
  201.   la $a0, celcius
  202.   syscall
  203.  ####################################################
  204.  
  205.   li $v0, 10
  206.   syscall
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement