PROBLEMA [ASSEMBLY] Programma modulare conta bit uguali

Mr.Cobra

Nuovo Utente
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?

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:

Entra

oppure Accedi utilizzando