Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #suma elementelor de pe diagonala
- .data
- matrice: .word 1, 2, 3, 4
- .word 5, 6, 7, 8
- .word 9, 10, 11, 12
- .word 13, 14, 15, 16
- dimensiuneArray: .word 4
- suma: .word 0
- lungimeWord = 4 #valoare constanta - un word are 4 octeti
- .text
- .globl main
- main:
- la $a0, matrice #incarca adresa de inceput a matricii
- lw $a1, dimensiuneArray #stocheaza dimensiunea matricii
- #cheama functia
- jal sumaDiagonala
- #afiseaza rezultatul
- move $a0, $t0
- li $v0, 1
- syscall
- #exit
- li $v0, 10
- syscall
- .end main
- .globl sumaDiagonala
- sumaDiagonala:
- #valori initiale pentru suma si indice bucla
- li $t0, 0
- li $t1, 0
- bucla: #pentru calcularea sunet
- mul $t2, $t1, $a1 # indice rand * dimensiune rand
- add $t2, $t2, $t1 #+ indice coloaana
- mul $t2, $t2, lungimeWord #multiplica valoarea obtinuta anterior cu dimensiunea unui word
- add $t3, $a0, $t2 #aduna valoarea la adresa de inceput
- lw $t4, ($t3) # incarca valoarea din str indicata de adresa nou obtinuta
- add $t0, $t0, $t4 #aduna elemntul la valoarea curenta a sunet
- add $t1, $t1, 1 #incrementeaza indice
- blt $t1, $a1, bucla #continua bucla
- jr $ra
- .end sumaDiagonala
- #calcularea functiei x*y
- .data
- x: .word 3
- y: .word 2
- .text
- .globl main
- main:
- lw $a0, x #incarca x si y
- lw $a1, y
- jal power #jump and link catre functia (eticheta) power
- #afiseaza valoarea calculata
- move $a0, $t1
- li $v0, 1
- syscall
- #exit
- li $v0, 10
- syscall
- .end main
- #functia care calculeaza x*y
- .globl power
- power:
- #valori de start pentru bucla
- li $t1, 1
- li $t0, 0
- bucla:
- mul $t1, $t1, $a0
- add $t0, $t0, 1
- blt $t0, $a1, bucla
- jr $ra
- .end power
- .text
- .globl main
- main:
- subu $sp, $sp, 4
- sw $ra, 0($sp)
- move $s0, $zero
- move $s1, $zero
- loop:
- mul $t0, $s0, $s0
- addu $s1, $s1, $t0
- addu $s0, $s0, 1
- ble $s0, 4, loop
- li $v0, 4
- la $a0, str
- syscall
- li $v0, 1
- move $a0, $s1
- syscall
- li $v0, 4
- la $a0, newline
- syscall
- lw $ra, 0($sp)
- addu $sp, $sp, 4
- jr $ra
- .data
- str:
- .asciiz "\n Suma valorilor i^2 cu t = 1 .. 4 este "
- newline:
- .asciiz "\n"
- .data
- sir: .word 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
- lungime: .word 10
- nl: .asciiz "\n"
- space: .asciiz " "
- .text
- .globl main
- main:
- la $t0, sir
- li $t1, 0
- lw $t2, lungime
- citire:
- lw $a0, ($t0)
- li $v0, 1
- syscall
- li $v0, 4
- la $a0, space
- syscall
- add $t1, 1
- add $t0, $t0, 4
- blt $t1, $t2, pop
- la $t0, sir
- li $t1, 0
- push:
- lw $t4, ($t0)
- subu $sp, $sp, 4
- sw $t4, ($sp)
- add $t1, $t1, 1
- add $t0, $t0, 4
- blt $t1, $t2, push
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement