87 lines
2.2 KiB
NASM
87 lines
2.2 KiB
NASM
N =, 3
|
|
M =, 4
|
|
.data
|
|
matriceA:
|
|
.word 0xAB317811, 0xCD514229, 0xEF832040, 0xA1346269
|
|
.word 0xB2178309, 0xC3524578, 0x65702887, 0x59227465
|
|
.word 0x14930352, 0x24157817, 0x39088169, 0x63245986
|
|
matriceB:
|
|
.word 0x39916800, 0x47900160, 0x62270208, 0x87178291
|
|
.word 0xA7674368, 0xB2092278, 0xC3556874, 0xD6402373
|
|
.word 0xE1216451, 0x24329020, 0x51090942, 0x11240007
|
|
matriceC:
|
|
.space N * M * 4
|
|
|
|
.text
|
|
.globl main
|
|
.ent main
|
|
main:
|
|
subu $sp, $sp, 4
|
|
sw $ra, ($sp)
|
|
la $a0, matriceA
|
|
la $a1, matriceB
|
|
la $a2, matriceC
|
|
li $a3, N
|
|
li $t0, M
|
|
subu $sp, $sp, 4
|
|
sw $t0, ($sp)
|
|
jal MediaMatrice
|
|
addiu $sp, $sp, 4
|
|
lw $ra, ($sp)
|
|
addiu $sp, $sp, 4
|
|
jr $ra
|
|
.end main
|
|
|
|
.ent MediaMatrice
|
|
MediaMatrice:
|
|
|
|
mult $a3, $t0
|
|
mflo $a3
|
|
|
|
li $t1, 0
|
|
loop_colonna:
|
|
|
|
li $t2, 0
|
|
loop_riga:
|
|
|
|
addu $t3, $t1, $t2
|
|
sll $t3, $t3, 2
|
|
addu $t3, $t3, $a0
|
|
lw $t3, ($t3)
|
|
|
|
addu $t4, $t1, $t2
|
|
sll $t4, $t4, 2
|
|
addu $t4, $t4, $a1
|
|
lw $t4, ($t4)
|
|
|
|
slt $t5, $t3, $0
|
|
slt $t6, $t3, $0
|
|
xor $t5, $t5, $t6
|
|
|
|
bne $t5, $0, opposto
|
|
addu $t4, $t3, $t4
|
|
srl $t4, $t4, 1
|
|
|
|
li $t5, 0x80000000
|
|
and $t3, $t3, $t5
|
|
or $t4, $t4, $t3
|
|
|
|
j salva_media
|
|
opposto:
|
|
add $t4, $t3, $t4
|
|
sra $t4, $t4, 1
|
|
|
|
salva_media:
|
|
addu $t3, $t1, $t2
|
|
sll $t3, $t3, 2
|
|
addu $t3, $t3, $a2
|
|
sw $t4, ($t3)
|
|
|
|
addiu $t2, $t2, 1
|
|
bne $t2, $t0, loop_riga
|
|
|
|
addu $t1, $t1, $t0
|
|
bne $t1, $a3, loop_colonna
|
|
|
|
jr $ra
|
|
.end MediaMatrice |