Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- .data
- A: .space 1024
- B: .space 1024
- r1: .space 4
- r2: .space 4
- r3: .space 4
- wynik: .space 1024
- str1: .asciiz "Podaj liczbe kolumn macierzy A / liczbe wierszy macierzy B: "
- str2: .asciiz "Podaj liczbe wierszy macierzy A: "
- str3: .asciiz "Podaj liczbe kolumn macierzy B: "
- str4: .asciiz "Podaj wartosci A:"
- str5: .asciiz "Podaj wartosci B:"
- str6: .asciiz " "
- str7: .asciiz "\n"
- str8: .asciiz "Macierz A*B\n"
- .text
- .globl main
- main:
- li $v0, 4
- la $a0, str1
- syscall
- li $v0, 5
- syscall
- sw $v0, r1
- li $v0, 4
- la $a0, str2
- syscall
- li $v0, 5
- syscall
- sw $v0, r2
- li $v0, 4
- la $a0, str3
- syscall
- li $v0, 5
- syscall
- sw $v0, r3
- li $v0, 4
- la $a0, str4
- syscall
- la $a0, A
- lw $a1, r1
- lw $t0, r2
- mul $a1, $a1, $t0
- jal wczytaj
- lw $a1, r1
- lw $a2, r2
- jal wypisz
- li $v0, 4
- la $a0, str5
- syscall
- la $a0, B
- lw $a1, r1
- lw $t0, r3
- mul $a1, $a1, $t0
- jal wczytaj
- lw $a1, r3
- lw $a2, r1
- jal wypisz
- la $s0, A
- la $s1, B
- lw $s2, r1
- lw $s3, r2
- lw $s4, r3
- la $s5, wynik
- jal licz
- li $v0, 4
- la $a0, str8
- syscall
- la $a0, wynik
- lw $a1, r3
- lw $a2, r2
- jal wypisz
- la $v0, 10
- syscall
- # s0 - adres pierwszej mac
- # s1 - adres drugiej
- # s2 - szer 1 / wys 2
- # s3 - wys 1
- # s4 - szer 2
- # s5 - adres wyn
- licz:
- li $t0, 0 # licznik wys wyn
- l1:
- beq $t0, $s3, e1
- li $t1, 0 # licznik szer wyn
- l2:
- beq $t1, $s4, e2
- li $t2, 0
- li $t3, 0 # aij
- l3:
- beq $t2, $s2, e3
- mul $t4, $s2, $t0
- add $t4, $t4, $t2
- sll $t4, $t4, 2
- add $t4, $t4, $s0
- lw $t5, 0($t4)
- mul $t4, $s4, $t2
- add $t4, $t4, $t1
- sll $t4, $t4, 2
- add $t4, $t4, $s1
- lw $t6, 0($t4)
- mul $t5, $t5, $t6
- add $t3, $t3, $t5
- add $t2, $t2, 1
- j l3
- e3:
- mul $t2, $t0, $s4
- add $t2, $t2, $t1
- sll $t2, $t2, 2
- add $t2, $t2, $s5
- sw $t3, 0($t2)
- add $t1, $t1, 1
- j l2
- e2:
- add $t0, $t0, 1
- j l1
- e1:
- jr $ra
- wczytaj:
- li $t0, 0
- loop:
- beq $t0, $a1, end
- li $v0, 5
- syscall
- mulo $t2, $t0, 4
- add $t2, $t2, $a0
- sw $v0, 0($t2)
- add $t0, $t0, 1
- j loop
- end:
- jr $ra
- # a0 - adres, a1 - liczba kolumn, a2 - liczba wierszy
- wypisz:
- li $t1, 0 #licznik wierszy
- move $t2, $a0
- loop1:
- li $t0, 0 #licznik kolumn
- beq $t1, $a2, end1
- loop2:
- beq $t0, $a1, end2
- mul $t3, $t1, $a1
- add $t3, $t3, $t0
- mulo $t3, $t3, 4
- add $t3, $t3, $t2
- lw $a0, 0($t3)
- li $v0, 1
- syscall
- la $a0, str6
- li $v0, 4
- syscall
- add $t0, $t0, 1
- j loop2
- end2:
- la $a0, str7
- li $v0, 4
- syscall
- add $t1, $t1, 1
- j loop1
- end1:
- jr $ra
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement