这是使用easy68K。嗨,我将两个矩阵相乘。我在代码的底部以线性方式声明常量。但基本上我有两个矩阵,2 x 2.我在矩阵D中保存,它有一个已定义的存储空间。当我上去一个地址进入第二个循环时,我收到一个错误:
地址错误:1028处的指令访问地址1063执行 停止
这是一张图片:
http://i1107.photobucket.com/albums/h385/Nazariy1995/Problem.png
这是我的代码:
r EQU 2 ;number of rows
c EQU 2 ;number of columns
ORG $1000
START: MOVEA.L #A,A0
MOVEA.L #B,A1
MOVEA.L #D,A2
MOVE.W #r,D3 ;used for rows
CLR.W D0 ;offset for A
CLR.W D1 ;offset for B
CLR.W D2 ;offset for D
CLR.W D5 ;calculating the sum
CLR.W D6 ;calculaing the multiplication
CLR.W D7 ;used for number of repeats
L2 MOVE.W #c,D4 ;used for columns mainly for first matrix
L1 CLR.W D5
MOVE.W (A0,D0.W),D5
MULU (A1,D1.W),D5
ADD.W D5,D6
ADD.W #1,D0
ADD.W #c,D1 ;we are moving down a column and thus are adding column to the offset in B
SUB.W #1,D4
BNE L1
MOVE.W D6,(A2,D2.W)
ADD.W #1,D2 ;increment counter for C
ADD.W #1,D7 ;increment repeat
CMP.W #c,D7 ;number of repeats should be equal to column number
BNE RE
CLR.W D7 ;clear repeats because we are moving on to a new row
CLR.W D1 ;set offset for B to 0
SUB.W #1,D3 ;find out through how many rows we went through
BNE L2
STOP #$2700
RE SUB.W #c,D0 ;got at the beginning of a row in A
MOVE.W D7,D1
CLR.W D6
BSR L2
* Put program code here
SIMHALT ; halt simulator
* Put variables and constants here
A DC.W 1,2,0,1
B DC.W 1,0,2,1
D DS.W 4
END START ; last line of source
请帮忙!我对装配知之甚少,而且很难。 提前谢谢!