Ciao, ragazzi, mi date una mano con alcuni esercizi dell' assembly 68000,magari nel caso suggerendomi codici alternativi modifiche da apportare? Scrivere i sottoprogramma assembly che eseguono le strutture indicate di seguito:
1) IF indice == D0 THEN
(contenuto della memoria ($8200 + indice))D1 + D0
ELSE
(contenuto della memoria ($8200 +D0))=D1+indice
END
2) Contare quanti numeri dispari maggiori di D0 e minori di D1 sono memorizzati nelle locazioni
di memoria da $810E a $811A.
1
ORG $8000
INIZIO JSR SUBROUTINE
STOP #$2200
ORG $8100
INDICE DC 10
ORG $8200
X DC 6
ORG $8300
SUBROUTINE MOVEM.L D0/D1/D2/D3/A0,-(SP)
MOVE #3,D0
MOVE #4,D1
MOVE INDICE,D2
MOVE.L #$8200,A0
MOVE (A0),D3
CMP D2,D0
BEQ THEN
ELSE ADD D1,D2
ADD DO,D3
MOVE D2,D3
JMP FINE
THEN ADD D1,D0
ADD D2,D3
MOVE D0,D3
FINE MOVEM.L (SP)+,DO/D1/D2/D3/A0
RTS
END INIZIO
2
ORG $8000
INIZIO JSR SUBRUTINE
STOP #$2200
ORG $8300
ARRAY DC 1,4,3,10,5,8,9,11,7,2,12,13
CONT DS 1
ORG $8400
SUBROUTINE MOVEM.L
MOVE #3,D0
MOVE #25,D1
MOVE CONT,D4
LEA ARRAY,A0
MOVE.L #810E,A1
MOVE.L $811A,A2
SUB A1,A2
MOVE A2,D2
SUB #1,D2
FOR CMP #0,D2
BEQ FINE
CMP (A0)+,DO
BLT DOPO
BTST #0,D3
BNE DISPARI
DISPARI ADD #1,D4
JMP FOR
DOPO CMP (A0)+,D1
BGT FOR
BTST #0,D3
BNE DISPARI
DBRA D2,FOR
FINE MOVEM.L
RTS
END INIZIO
Suggerimenti per migliorare il codice??