PDA

View Full Version : PROGRAMMA ASSEMBLY MC68000


davideblancone1995
14-06-2016, 20:12
Qualcuno potrebbe genitilmente dirmi se il seguente programma, che conteggia il numero di volte che è presente 100 in un vettore è giusto? Se non è così perchè? Non saprei dove potrei aver sbagliato e allo stesso tempo non posso controllare che sia giusto.

ORG $8000
START MOVE.L #V,A0
MOVE #7,D0
CLR D1
MOVE #100,D2
LOOP CMP D2,(A0)+
BNQ $801E
ADD #1,D1
ADD #-1,D0
DBRA D0,LOOP
MOVE D1,RIS
END START
V DC.L 1,100,39,100,71,100,45,100
RIS DS 1

GREENMERCURY
15-06-2016, 05:56
Qualcuno potrebbe genitilmente dirmi se il seguente programma, che conteggia il numero di volte che è presente 100 in un vettore è giusto? Se non è così perchè? Non saprei dove potrei aver sbagliato e allo stesso tempo non posso controllare che sia giusto.

ORG $8000
START MOVE.L #V,A0
MOVE #7,D0
CLR D1
MOVE #100,D2
LOOP CMP D2,(A0)+
BNQ $801E
ADD #1,D1
ADD #-1,D0
DBRA D0,LOOP
MOVE D1,RIS
END START
V DC.L 1,100,39,100,71,100,45,100
RIS DS 1

Prima di tutto se vuoi una mano un programma deve essere commentato riga per riga. Poi l' assembly 68000 non è cosi comune nell' insegnamento scolastico, universitario si ancora, e a livello prof. è quasi morto se non per i microcontrollori.
BNQ che salto è?

cdimauro
15-06-2016, 20:09
BNQ non esiste nell'assembly 68000: si sarà sbagliato con BNE (Branch if Not Equal/zero).
Qualcuno potrebbe genitilmente dirmi se il seguente programma, che conteggia il numero di volte che è presente 100 in un vettore è giusto? Se non è così perchè? Non saprei dove potrei aver sbagliato e allo stesso tempo non posso controllare che sia giusto.
Come fai a dire che non puoi controllare se sia giusto? Evidentemente il programma non l'hai scritto tu.

Comunque quando si posta codice è meglio racchiuderlo sempre usando il tag CODE:
ORG $8000
START MOVE.L #V,A0
MOVE #7,D0
CLR D1
MOVE #100,D2
LOOP CMP D2,(A0)+
BNE $801E
ADD #1,D1
ADD #-1,D0
DBRA D0,LOOP
MOVE D1,RIS
END START
V DC.L 1,100,39,100,71,100,45,100
RIS DS 1

davideblancone1995
16-06-2016, 11:45
si scusate era BNE.. a parte questo il programma è scritto bene?

davideblancone1995
16-06-2016, 11:46
perchè ho dei problemi con la configurazione del simulatore del mc68000. Il programma l ho scritto io ed è un esercizio che ho fatto

cdimauro
16-06-2016, 21:10
si scusate era BNE.. a parte questo il programma è scritto bene?
Cosa intendi con questo?

La sintassi, con la mia correzione, sembra a posto, ma il BNE salta a un indirizzo assoluto anziché a un'etichetta: correggilo.

GREENMERCURY
16-06-2016, 21:36
Devi stare attento che la configurazione del simulatore sia conforme, ossia come considera gli indirizzi, la porzione di memoria per lo stack etcc . Avevamo 2 simulatori per il 6809 e avevano funzioni molto diverse, sul terminale andava bene comunque ma nel sistema reale l' insieme delle periferiche e relativi indirizzi e altro combinavano un casino bestiale.Tu organizzi il programma a partire dalla celle di ram 8000 che viene considerata 0000, pero l' insieme delle istruzioni più i dati credo che occupino ben più di 100 celle da cio forse cè una sovraposizione del codice sorgente con i dati anche perche la cpu emulata non avendo mmu non credo faccia distinzioni in aree.

davideblancone1995
16-06-2016, 21:59
Grazie mille per il tempo dedicatomi :)