📄 matrix_mpys.sa
字号:
.global _matrix_mpys
.text
_matrix_mpys: .cproc a_mtrx,b_mtrx,c_mtrx,m,n,k,resultmax
.reg src1,src2,dst,rst
.reg i,z,mm,nn,kk
.reg temp1,temp2,temp3,temp4,temp5
.reg max,x,i_max,j_max
.no_mdep
;reverse direction
zero max
mv m,mm
mpy m,k,temp3
sub temp3,1,temp3 ;position storing
loop3:.trip 10
mv k,kk
mvk 1,z
loop2:.trip 10
mpy mm,n,temp1
sub temp1,1,temp1 ;position end of A[m][n]
mpy n,k,temp2
sub temp2,z,temp2
add z,1,z ;position end of B[n][k]
mv n,nn ;number of dotp in loop1
zero i
zero rst
loop1:.trip 30
sub temp1,i,temp5 ;position src1
mpy i,k,temp4
sub temp2,temp4,temp4 ;position src2
ldh *a_mtrx[temp5],src1
ldh *b_mtrx[temp4],src2
mpy src1,src2,dst
add dst,rst,rst
add i,1,i
sub nn,1,nn ;number of loop1
[nn] b loop1
cmpgt rst,max,x
[x] mv rst,max ;maximum number of C array
[x] mv mm,i_max
[x] mv kk,j_max ;position of maximum number
stw rst,*c_mtrx[temp3] ;store result
sub temp3,1,temp3
sub kk,1,kk
[kk] b loop2
sub mm,1,mm
[mm] b loop3
stw max,*resultmax++ ;store the max
stw i_max,*resultmax++
stw j_max,*resultmax++ ;store the position of the max
.endproc
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -