Ho anche provato a svolgere l'esercizio completo, posizione del primo vettore compreso, ma ASIMTOOL mi dà il seguente errore :
POSPRIMO DC.B 3
ERROR: Symbol value differs between first and second pass
Vi posto anche l'esercizio completo ma, ahimè, sbagliato
codice:
*AREA OFFSET PARAMETRI
CONT_OFF EQU 12
POSPRIMO_OFF EQU 10
DIM_OFF EQU 08
V1_OFF EQU 04
RIT_OFF EQU 00
*PROGRAMMA PRINCIPALE
ORG $8000
MAIN
MOVE CONT,-(A7)
MOVE POSPRIMO,-(A7)
MOVE DIM,-(A7)
MOVE.L #V1,-(A7)
JSR COMPRESO
MOVE (A7)+,POSPRIMO
MOVE (A7)+,CONT
FINE JMP FINE
*SUBROUTINE
COMPRESO MOVEA.L RIT_OFF(A7),A3
MOVEA.L V1_OFF(A7),A1
MOVE DIM_OFF(A7),D0
MOVE #0,D2 conta elementi compresi
MOVE #0,D3 mantiene indice posizione
LOOP MOVE.B (A1)+,D1
CMP.B MAX,D1
BGT DIVR
CMP.B MIN,D1
BLT DIVR
ADD #1,D3
BTST #0,D3
MOVE D3,POSPRIMO_OFF(A7)
ADD #1,D2
DIVR SUB #1,D0
BNE LOOP
MOVE D2,CONT_OFF(A7)
ADDA.L #CONT_OFF-2,A7
JMP (A3)
*AREA DATI
ORG $8500
V1 DC.B 1,-2,-4,7,8,3,10,-3
DIM DC.W 8
MIN DC.B -2
MAX DC.B 5
CONT DS.W 1
POSPRIMO DC.B 3
END MAIN