Не знала куда лучше ету тему запостить. Извините если не туда куда надо. Нужен совет по Assembly 6800. код я написала , он не не работает так как надо. Задание било такое -- в матрице можно передвигаться только по нулям, записивать в каком ряду и месте наиден ноль ,а затем переписат ь етот ноль на 9 и спринтовать всю матрицу уже с девятками вместо нулеи. Помогите кто сможет в чем ошибка данного кода?
m EQU 8
n EQU 13
MOVE.W #m,D2 8 rows
MOVE.W #n,D3 13 colomns
LEA ROW1,A0
SUBQ.L #1,D2
MULU #n,D2
SUBQ.L #1,D3
ADD.L D3,D2
ADDA.L D2,A0
MOVE.B (A0),D4
MOVE.L #0,D5
MOVE.L #0,D6
MOVE.L #1,D7
CMP.B #0,D4
BEQ NEXT
NEXT BSR LOOP1
LOOP1 LEA str1A,A1
MOVE.W #1,D1
MOVE.B #1,D0
TRAP #15
MOVE.W D5,D1
MOVE.B #3,D0
TRAP #15
LEA str2A,A1
MOVE.W #1,D1
MOVE.B #1,D0
TRAP #15
MOVE.W D6,D1
MOVE.B #3,D0
TRAP #15
LEA str3A,A1
MOVE.W #1,D1
MOVE.B #1,D0
TRAP #15
CMP.B #104,D7
BNE PRINT
PRINT LEA str4A,A1
MOVE.W #2,D1
MOVE.B #1,D0
TRAP #15
ADD.L #1,D6
MOVE.B #9,D4
MOVE.B (A0)+,D4
CMP.B #0,D4
BEQ LOOP1
LOOP2 ADD.L #1,D5
MOVE.B #0,D6
MOVE.W 13(A0),D4
CMP.B #0,D4
BEQ LOOP1
MOVE.W 14(A0),D0
ADD.L #1,D6
CMP.B #0,D4
BEQ LOOP1
MOVE.W -(A0),D4
SUB.L #1,D6
CMP.B #0,D4
BEQ LOOP2
ORG $1000
ROW1 DC.B 0,1,1,1,1,1,1,1,1,1,1,1,1
ROW2 DC.B 1,0,0,1,1,0,1,1,0,1,1,1,1
ROW3 DC.B 1,1,0,0,0,1,0,1,1,0,0,0,1
ROW4 DC.B 1,1,1,0,1,1,1,1,1,1,1,1,1
R0W5 DC.B 1,1,1,1,0,1,1,1,1,1,1,1,1
ROW6 DC.B 1,1,1,1,1,0,0,0,0,0,0,1,1
ROW7 DC.B 1,1,1,1,1,1,1,1,1,1,1,0,1
ROW8 DC.B 1,1,1,1,1,1,1,1,1,1,1,1,0
str1A DC.B '('
str2A DC.B ','
str3A DC.B ')'
str4A DC.B '->'
END $400
Assembly code- what is the problem?
-
- Уже с Приветом
- Posts: 2462
- Joined: 26 Jan 2003 06:39
- Location: SFBA