.data vstup: .asciiz "Vloz cislo: " mimotxt: .asciiz "Zadané číslo musi byt int16\n" prumertxt: .asciiz "Prumer " radek: .asciiz "\n" values: .asciiz "Hodnoty " carka: .asciiz ", " .text .globl main main: #start move $t0, $zero move $t1, $zero move $t2, $zero move $t3, $zero move $t4, $zero move $t5, $zero move $t6, $zero move $t7, $zero move $s1, $zero #aktuální průměr li $s2, 8 #počet čísel #načtení 1. čísla prvni: jal nacti #načte číslo nop jal prumer #vypočte průměr move $t0, $v0 #uloží číslo #kvůli zpožděnému skoku uvedeno až za "jal prumer" jal tisk #vytiskne hodnoty a jejich průměr move $s1, $v0 #uloží průmer #kvůli zpožděnému skoku uvedeno až za "jal tisk" #načtení 2. čísla druhe: jal nacti nop move $t1, $v0 jal prumer nop move $s1, $v0 #uloží průmer jal tisk nop #načtení 3. čísla treti: jal nacti nop move $t2, $v0 jal prumer nop move $s1, $v0 #uloží průmer jal tisk nop #načtení 4. čísla ctvrte: jal nacti nop move $t3, $v0 jal prumer nop move $s1, $v0 #uloží průmer jal tisk nop #načtení 5. čísla pate: jal nacti nop move $t4, $v0 jal prumer nop move $s1, $v0 #uloží průmer jal tisk nop #načtení 6. čísla seste: jal nacti nop move $t5, $v0 jal prumer nop move $s1, $v0 #uloží průmer jal tisk nop #načtení 7. čísla sedme: jal nacti nop move $t6, $v0 jal prumer nop move $s1, $v0 #uloží průmer jal tisk nop #načtení 8. čísla osme: jal nacti nop move $t7, $v0 jal prumer nop move $s1, $v0 #uloží průmer jal tisk nop jal prvni nop prumer: add $v0, $t0, $t1 #$v0 <- $t0 + $t1 add $v0, $v0, $t2 #$v0 <- $v0 + $t2 add $v0, $v0, $t3 #$v0 <- $v0 + $t3 add $v0, $v0, $t4 #$v0 <- $v0 + $t4 add $v0, $v0, $t5 #$v0 <- $v0 + $t5 add $v0, $v0, $t6 #$v0 <- $v0 + $t6 add $v0, $v0, $t7 #$v0 <- $v0 + $t7 div $v0, $s2 #$v0 <- $v0 / 8 mflo $v0 #přesun výsledku do $v0 j $ra #návrat na místo odkud byt podprogram zavolán nop nacti: #vytistne řetězec li $v0,4 la $a0,vstup syscall #načte číslo li $v0,5 syscall nop bge $v0, 32767, mimo nop ble $v0, -32768, mimo nop j $ra nop mimo: #vytiskne řetězec (není int16) li $v0, 4 la $a0, mimotxt syscall j nacti nop tisk: #tisk hodnot li $v0, 4 la $a0, values syscall li $v0, 1 move $a0, $t0 syscall li $v0, 4 la $a0, carka syscall li $v0, 1 move $a0, $t1 syscall li $v0, 4 la $a0, carka syscall li $v0, 1 move $a0, $t2 syscall li $v0, 4 la $a0, carka syscall li $v0, 1 move $a0, $t3 syscall li $v0, 4 la $a0, carka syscall li $v0, 1 move $a0, $t4 syscall li $v0, 4 la $a0, carka syscall li $v0, 1 move $a0, $t5 syscall li $v0, 4 la $a0, carka syscall li $v0, 1 move $a0, $t6 syscall li $v0, 4 la $a0, carka syscall li $v0, 1 move $a0, $t7 syscall li $v0, 4 la $a0, radek syscall #tisk prumeru li $v0, 4 la $a0, prumertxt syscall li $v0, 1 move $a0, $s1 syscall li $v0, 4 la $a0, radek syscall j $ra nop