Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- .data
- array: .space 20 #5 element integer array
- string: .space 100 #space for 5 element array of 19 char null terminated strings (20*5)
- insira_o_nome_da_cidade: .asciiz "\nInsira o nome da cidade: "
- insira_a_temperatura: .asciiz "\nInsira a temperatura: "
- maior_temperatura: .asciiz "\nCidade com a maior temperatura: \n"
- menor_temperatura: .asciiz "\nCidade com a menor temperatura: \n"
- temperatura_media: .asciiz "\nTemperatura Media: \n"
- locais: .asciiz "\nLocais:\n"
- barra: .asciiz "============================\n"
- celcius: .asciiz "ºC"
- .text
- .globl main
- main:
- #$t0 saves offset of integer array -> index in array * 4
- #$t1 saves offset of string array -> index in array * 20
- add $t0, $0, $0 # $t0 = 0
- la $t1,string # load address of string storage area
- #t2 saves min temperature
- addi $t2, $0, 99
- #t3 saves min temperature city string addresss
- #t4 saves max temperature
- addi $t4, $0, 0
- #t5 saves max temperature city string addresss
- #t7 saves average
- add $t7, $0, $0
- for:
- #### LER NOME DA CIDADE ####
- li $v0, 4
- la $a0, insira_o_nome_da_cidade
- syscall
- move $a0, $t1
- li $a1, 20
- li $v0, 8
- syscall
- #### LER TEMPERATURA DA CIDADE ####
- li $v0, 4
- la $a0, insira_a_temperatura
- syscall
- li $v0, 5 # read int to $v0
- syscall
- sw $v0, array($t0) #store $v0 in array[$t0]
- lw $t6, array($t0)
- bge $t6, $t2, not_lesser
- add $t2, $0, $t6
- move $t3, $t1
- not_lesser:
- ble $t6, $t4, not_greater
- add $t4, $0, $t6
- move $t5, $t1
- not_greater:
- add $t7, $t7, $t6
- addi $t1, $t1, 20 #add 20 to $t1
- addi $t0, $t0, 4 #add 4 to $t0
- beq $t0, 20, end
- j for
- end:
- ####### IMPRIMIR CIDADES #################
- add $t0, $0, $0
- la $t1,string
- li $v0, 4
- la $a0, locais
- syscall
- li $v0, 4
- la $a0, barra
- syscall
- for2:
- li $v0, 1
- lw $a0, array($t0)
- syscall
- li $v0, 4
- la $a0, celcius
- syscall
- li $a0, '-'
- li $v0, 11
- syscall
- li $v0, 4
- move $a0, $t1
- syscall
- lw $t6, array($t0)
- addi $t8, $0, 2
- div $t6, $t8
- mflo $t8
- for3:
- ble $t8, 0, end3
- li $a0, '*'
- li $v0, 11
- syscall
- subi $t8, $t8, 1
- j for3
- end3:
- li $a0, '\n'
- li $v0, 11
- syscall
- addi $t1, $t1, 20 #add 20 to $t1
- addi $t0, $t0, 4 #add 4 to $t0
- beq $t0, 20, end2
- j for2
- end2:
- li $v0, 4
- la $a0, barra
- syscall
- ##########################################
- ####### IMPRIMIR MENOR TEMPERATURA #######
- li $v0, 4
- la $a0, menor_temperatura
- syscall
- li $v0, 1
- move $a0, $t2
- syscall
- li $v0, 4
- la $a0, celcius
- syscall
- li $a0, '-'
- li $v0, 11
- syscall
- li $v0, 4
- move $a0, $t3
- syscall
- ##########################################
- ####### IMPRIMIR MAIOR TEMPERATURA #########
- li $v0, 4
- la $a0, maior_temperatura
- syscall
- li $v0, 1
- move $a0, $t4
- syscall
- li $v0, 4
- la $a0, celcius
- syscall
- li $a0, '-'
- li $v0, 11
- syscall
- li $v0, 4
- move $a0, $t5
- syscall
- ###########################################
- ####### CALCULAR IMPRIMIR TEMPERATURA MEDIA #########
- li $v0, 4
- la $a0, temperatura_media
- syscall
- addi $t6, $0, 5
- mtc1.d $t6, $f2 #moves $t6 to $f2 and $t7 to $f3
- div.s $f0, $f3, $f2
- li $v0, 2
- movf.s $f12, $f0
- syscall
- li $v0, 4
- la $a0, celcius
- syscall
- ####################################################
- li $v0, 10
- syscall
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement