Умножение матриц в сборке

Это использует easy68K. Привет, я умножаю две матрицы вместе. Я объявляю константы линейным способом в нижней части кода. Но в основном у меня есть две матрицы, 2 х 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 ответов

Другие вопросы по тегам