Reputation: 1
I'm trying to prepare for a university exam which involves assembly programming for the Motorola 6800, in which there is the mandatory use of subroutines via stack, in my code, the addresses of vectors A and B are not passed correctly
ORG $8000
A DC.W 2,2,1,0,4,4,2,11,1,2
X DC.W 2
N DC.W 2
R DS.W 1
B DS.W 10
T DS.W 1
'OFFSETS FOR THE STACK'
BOFF EQU 4
AOFF EQU 8
XOFF EQU 12
TOFF EQU 14
NOFF EQU 16
ROFF EQU 18
ORG $8100
MAIN SUBA #2,SP *SPAZIO PER R
MOVE.W N,-(SP)
SUBA #2,SP *SPAZIO PER T
MOVE.W X,-(SP)
MOVE.L #A,-(SP)
MOVE.L #B,-(SP)
JSR SUBR
ADD #16,(SP)
MOVE.W (SP)+,R
FINITO JMP FINITO
ORG $8200
SUBR MOVEA.W BOFF(SP),A0
MOVEA.W AOFF(SP),A1
MOVE.W XOFF(SP),D0
MOVE.W ROFF(SP),D1
MOVE.W TOFF(SP),D2
MOVE.W NOFF(SP),D3
CLR D4 *VARIABILE CICLICA
CLR D5 *CONTA QUANTE VOLTE X APPARE
LOOP CMPI #10,D4
BEQ ESCI
CMP (A1)+,D0
BNE NON
ADDI #1,D5
ADDI #1,D4
BRA LOOP
NON MOVE (A1),(A2)+
ADDI #1,D2
ADDI #1,D4
BRA LOOP
ESCI CMP D5,D3
BNE NON2
ADDI #1,D1
NON2 MOVE #0,D1
RTS
END MAIN
Upvotes: 0
Views: 30