.data vstup: .asciiz "Vloz cislo: " radek: .asciiz "\n" hodnoty: .asciiz "Hodnoty = [ " prumer: .asciiz "Prumer je " carka: .asciiz ", " konec_z: .asciiz " ]" mimo: .asciiz "Zadané číslo je mimo rozsah (-32 768 až 32 767)\n" .text .globl main main: 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 $s0, ??? #číslo registru kam budu vkládat další načtené číslo move $s1, ??? #aktuální průměr prvni: li $v0,4 la $a0,vstup syscall li $v0,5 syscall ble $v0, 32767, dobry nop li $v0,4 la $a0,mimo syscall j prvni nop dobry: bge $v0, -32768,pokracuj nop li $v0,4 la $a0,mimo syscall j prvni nop pokracuj: move $t0, $v0 move $t5, $t0 beq $s5,$zero,druhy nop move $t1, $t6 move $t2, $t7 move $t3, $t8 move $t4, $t9 beq $s5, 1, serad nop druhy: li $v0,4 la $a0,vstup syscall li $v0,5 syscall ble $v0, 32767, dobry2 nop li $v0,4 la $a0,mimo syscall j druhy nop dobry2: bge $v0, -32768,pokracuj2 nop li $v0,4 la $a0,mimo syscall j druhy nop pokracuj2: move $t1, $v0 move $t6, $t1 beq $s5,$zero,treti nop move $t0, $t5 move $t2, $t7 move $t3, $t8 move $t4, $t9 beq $s5, 2, serad nop treti: li $v0,4 la $a0,vstup syscall li $v0,5 syscall ble $v0, 32767, dobry3 nop li $v0,4 la $a0,mimo syscall j treti nop dobry3: bge $v0, -32768,pokracuj3 nop li $v0,4 la $a0,mimo syscall j treti nop pokracuj3: move $t2, $v0 move $t7, $t2 beq $s5,$zero,ctvrty nop move $t0, $t5 move $t1, $t6 move $t3, $t8 move $t4, $t9 beq $s5, 3, serad nop ctvrty: li $v0,4 la $a0,vstup syscall li $v0,5 syscall ble $v0, 32767, dobry4 nop li $v0,4 la $a0,mimo syscall j ctvrty nop dobry4: bge $v0, -32768,pokracuj4 nop li $v0,4 la $a0,mimo syscall j ctvrty nop pokracuj4: move $t3, $v0 move $t8, $t3 beq $s5,$zero,paty nop move $t0, $t5 move $t1, $t6 move $t2, $t7 move $t4, $t9 beq $s5, 4, serad nop nuluj: move $s5,$zero j serad nop paty: li $v0,4 la $a0,vstup syscall li $v0,5 syscall ble $v0, 32767, dobry5 nop li $v0,4 la $a0,mimo syscall j paty nop dobry5: bge $v0, -32768,pokracuj5 nop li $v0,4 la $a0,mimo syscall j paty nop pokracuj5: move $t4, $v0 move $t9 $t4 move $t0, $t5 move $t1, $t6 move $t2, $t7 move $t3, $t8 beq $s5, 5, nuluj nop ####################### NEJMENSI ##################################### serad: ble $t0,$t1,nejmensi # t0 < t1 nop bge $t0,$t1,nevim # t0 > t1 nop d: ble $s0,$t2,nejmensi1 # s0 < t2 nop bge $s0,$t2, n # s0 > t2 nop da: ble $s0,$t3,nejmensi2 # s0 < t3 nop bge $s0,$t3,ne # s0 >t3 nop dal: ble $s0,$t4,nejmensi3 # s0 < t4 nop bge $s0,$t4, nev # s0 > t4 nop nejmensi: move $s0, $t0 j d nop nevim: move $s0, $t1 j d nop nejmensi1: j da nop n: move $s0, $t2 j da nop nejmensi2: j dal nop ne: move $s0, $t3 j dal nop nejmensi3: j serad2 nop nev: move $s0, $t4 j serad2 nop ##################### NEJVETSI ######################################## serad2: ble $t0,$t1,nejvetsi # t0 < t1 nop bge $t0,$t1,nejve # t0 > t1 nop dalsi: ble $s4,$t2,nejve2 # s1 < t2 nop bge $s4,$t2, nejvetsi2 # s1 > t2 nop dalsi2: ble $s4,$t3,nejve3 # s1 < t3 nop bge $s4,$t3,nejvetsi3 # s1 >t3 nop dalsi3: ble $s4,$t4,nejve4 # s1 < t4 nop bge $s4,$t4, nejvetsi4 # s1 > t4 nop nejvetsi: move $s4, $t1 j dalsi nop nejve: move $s4, $t0 j dalsi nop nejvetsi2: j dalsi2 nop nejve2: move $s4, $t2 j dalsi2 nop nejvetsi3: j dalsi3 nop nejve3: move $s4, $t3 j dalsi3 nop nejvetsi4: j serad3 nop nejve4: move $s4, $t4 j serad3 nop ####################### UPRAVA ##################################### serad3: beq $s0,$t0, t0 nop beq $s0,$t1, t1 nop beq $s0,$t2, t2 nop beq $s0,$t3, t3 nop beq $s0,$t4, t4 nop t0: move $t0, $t1 move $t1, $t2 move $t2, $t3 move $t3, $t4 move $t4,$zero beq $s4,$t0, t0t1 nop beq $s4,$t1, t0t2 nop beq $s4,$t2, t0t3 nop beq $s4,$t3, t0t4 nop t0t1: move $t0,$t1 move $t1,$t2 move $t2,$t3 move $t3,$zero j jeste_nevim nop t0t2: move $t1,$t2 move $t2,$t3 move $t3,$zero j jeste_nevim nop t0t3: move $t2,$t3 move $t3,$zero j jeste_nevim nop t0t4: j jeste_nevim nop t1: move $t1, $t2 move $t2, $t3 move $t3, $t4 move $t4,$zero beq $s4,$t0, t1t0 nop beq $s4,$t1, t1t2 nop beq $s4,$t2, t1t3 nop beq $s4,$t3, t1t4 nop t1t0: move $t0,$t1 move $t1,$t2 move $t2,$t3 move $t3,$zero j jeste_nevim nop t1t2: move $t1,$t2 move $t2,$t3 move $t3,$zero j jeste_nevim nop t1t3: move $t2,$t3 move $t3,$zero j jeste_nevim nop t1t4: j jeste_nevim nop t2: move $t2, $t3 move $t3, $t4 move $t4,$zero beq $s4,$t0, t2t0 nop beq $s4,$t1, t2t1 nop beq $s4,$t2, t2t2 nop beq $s4,$t3, t2t3 nop t2t0: move $t0,$t1 move $t1,$t2 move $t2,$t3 move $t3,$zero j jeste_nevim nop t2t1: move $t1,$t2 move $t2,$t3 move $t3,$zero j jeste_nevim nop t2t2: move $t2,$t3 move $t3,$zero j jeste_nevim nop t2t3: j jeste_nevim nop t3: move $t3, $t4 move $t4,$zero beq $s4,$t0, t3t0 nop beq $s4,$t1, t3t1 nop beq $s4,$t2, t3t2 nop beq $s4,$t3, t3t3 nop t3t0: move $t0,$t1 move $t1,$t2 move $t2,$t3 move $t3,$zero j jeste_nevim nop t3t1: move $t1,$t2 move $t2,$t3 move $t3,$zero j jeste_nevim nop t3t2: move $t2,$t3 move $t3,$zero j jeste_nevim nop t3t3: j jeste_nevim nop t4: move $t4,$zero beq $s4,$t0, t4t0 nop beq $s4,$t1, t4t1 nop beq $s4,$t2, t4t2 nop beq $s4,$t3, t4t4 nop t4t0: move $t0,$t1 move $t1,$t2 move $t2,$t3 move $t3,$zero j jeste_nevim nop t4t1: move $t1,$t2 move $t2,$t3 move $t3,$zero j jeste_nevim nop t4t2: move $t2,$t3 move $t3,$zero j jeste_nevim nop t4t4: j jeste_nevim nop ###################### DRUHY NEJMENSI ################################ jeste_nevim: ble $t0,$t1,druh2 # t0 < t1 nop bge $t0,$t1,dx2 # t0 > t1 nop d2: ble $s1,$t2,druhx2 # s0 < t2 nop bge $s1,$t2, d2x # s0 > t2 nop druh2: move $s1, $t0 j d2 nop dx2: move $s1, $t1 j d2 nop druhx2: j other nop d2x: move $s1, $t2 j other nop ############################ DRUHY NEJVETSI ######################################## other: ble $t0,$t1,nejvic2 # t0 < t1 nop bge $t0,$t1,nejvic2x # t0 > t1 nop other2: ble $s3,$t2,nejvic22 # s1 < t2 nop bge $s3,$t2, nejvic2xx # s1 > t2 nop nejvic2: move $s3, $t1 j other2 nop nejvic2x: move $s3, $t0 j other2 nop nejvic2xx: j uprav2 nop nejvic22: move $s3, $t2 j uprav2 nop ####################### UPRAV PO DRUHE ############################# uprav2: beq $s1,$t0, s1 nop beq $s1,$t1, s2 nop beq $s1,$t2, s3 nop s1: move $t0, $t1 move $t1, $t2 move $t2, $zero j uprav3 nop s2: move $t1, $t2 move $t2, $zero j uprav3 nop s3: move $t2, $zero j uprav3 nop uprav3: beq $s3,$t0, s4 nop beq $s3,$t1, s5 nop s4: move $t0,$t1 move $t1,$zero move $s2, $t0 j vypis nop s5: move $t1, $zero move $s2, $t0 j vypis nop ################################################### #Vypsani textu "Posoupnost: " vypis: li $v0,4 la $a0,hodnoty syscall li $v0, 1 move $a0, $s0 syscall li $v0,4 la $a0,carka syscall li $v0, 1 move $a0, $s1 syscall li $v0,4 la $a0,carka syscall li $v0, 1 move $a0, $s2 syscall li $v0,4 la $a0,carka syscall li $v0, 1 move $a0, $s3 syscall li $v0,4 la $a0,carka syscall li $v0, 1 move $a0, $s4 syscall li $v0,4 la $a0,konec_z syscall #Vypsani "Prumer: " med: li $v0,4 la $a0,radek syscall nop li $v0,4 la $a0,prumer syscall nop #Vypsani prumeru li $v0, 1 move $a0, $s2 syscall li $v0,4 la $a0,radek syscall addi $s5,$s5,1 beq $s5,1, prvni nop beq $s5,2, druhy nop beq $s5,3, treti nop beq $s5,4, ctvrty nop beq $s5,5, paty nop