在汇编中乘以矩阵

时间:2015-03-02 18:52:09

标签: assembly matrix easy68k

这是使用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

请帮忙!我对装配知之甚少,而且很难。 提前谢谢!

0 个答案:

没有答案