windlx汇编 矩阵乘法 代码

 

.data 
s1: .float 1.02
s2: .float 2.001
MA: .space 64
MB: .space 64
MC: .space 64

a: .asciiz "result=\n"
b: .asciiz "\n"
c: .asciiz "%f\t"
	.align 2
d: .word c

Fdizhi: .space 8
dizhi: .space 4
		.text
		.global main
main:

addi r1,r0,a
sw dizhi,r1
addi r14,r0,dizhi
trap 5


addi r1,r0,MA
addi r3,r2,MB
addi r11,r1,#64 ;MA的末地址
lf f1,s1
lf f2,s2

init:
sf 0(r1),f1 ;将f1赋值给MA
sf 0(r3),f2 ;将f2赋值给MB
addi r1,r1,#4
addi r3,r3,#4
slt r2,r1,r11
bnez r2,init

addi r21,r0,#16 ;常量16
addi r22,r0,#4 ;常量4
addi r23,r0,#4 ;常量4
addi r29,r0,#0 ;常量0

addi r7,r0,0   ;i=0

loop1:
addi r8,r0,0 ;j=0

loop2:
addi r9,r0,0 ;k=0
movi2fp f0,r29 ;data=0

loop3:
multu r11,r7,r21  ;r11=i*40
multu r1,r9,r23   ; r1=k*4
addu r11,r11,r1   ;计算出MA[i][k]的位置
ld f2,MA(r11)

multu r13,r9,r21   ;r13=i*16
multu r1,r8,r23    ;r1=j*4
addu r13,r13,r1    ;MB[k][j]
ld f4,MB(r13)
multf f6,f2,f4 
addf f0,f0,f6
addi r9,r9,#1 ;k<4?
slt r2,r9,r22
bnez r2,loop3

sd Fdizhi,f0   ;输出结果
addi r14,r0,d
trap 5

multu r13,r7,r21  ;r13=i*16
multu r1,r8,r23   ;r1=j*4
addu r13,r13,r1   ;MC[i][j]
sf MC(r13),f0

addi r8,r8,#1
slt r2,r8,r22   ;j<4?
bnez r2,loop2

addi r1,r0,b
sw dizhi,r1
addi r14,r0,dizhi ;输出换行符
trap 5

addi r7,r7,#1   ;i<4?
slt r2,r7,r22
bnez r2,loop1

trap 0

 

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值