Il mio problema è molto semplice siano dati due Byte agli indirizzi di memoria A e B trovare i bit uguali usando l'istruzione EOR il mio codice assembly è basato sull'architettura Motorola 6800 ma non riesco come risolvere questo problema mi aiutate?
Ho capito che gli indirizzi 8000 e 80001 sono troppo vicini per poter allocare le variabili A e B ma come faccio a fare un displacement in questo caso?
00008808 302E 8000 23 MOVE A(A6),D0
ERROR: Displacement out of range
0000880C 322E 8001 24 MOVE B(A6),D1
ERROR: Displacement out of range
Codice:
ORG $8000
A DC.B %11001010
B DC.B %11101101
RIS DS.B 1
ORG $8400
MAIN ADDA #-2,SP
MOVE #A,-(SP)
MOVE #B,-(SP)
JSR BITCOUNT
ADDA #4,SP
MOVE (SP)+,RIS
JMP $8008
ORG $8800
OLD_FP EQU 0
RET_ADDR EQU 4
A_OFF EQU 8
B_OFF EQU 12
RIS_OFF EQU 16
BITCOUNT LINK A6,#0
MOVEM.L D0-D3,-(SP)
MOVE A(A6),D0
MOVE B(A6),D1
EOR D0,D1
MOVE.B #7,D2
CLR D3
LOOP BTST D2,D1
BNE DEC
ADDQ #1,D3
DEC DBRA D2,LOOP
MOVE.B D3,RIS_OFF(A6)
MOVEM.L (SP)+,D0-D2
UNLK A6
RTS
END MAIN
Ho capito che gli indirizzi 8000 e 80001 sono troppo vicini per poter allocare le variabili A e B ma come faccio a fare un displacement in questo caso?
00008808 302E 8000 23 MOVE A(A6),D0
ERROR: Displacement out of range
0000880C 322E 8001 24 MOVE B(A6),D1
ERROR: Displacement out of range
Ultima modifica: