Programma per memorizzare numeri pari o dispari .E fatto bn?

di il
6 risposte

Programma per memorizzare numeri pari o dispari .E fatto bn?

Salve , questo codice
*Programma che salva  numeri pari in un registro  , idem quelli dispari
	ORG	$8000
N	DC.W	10,6,7,5,4,2,1
PAR	DS.W	1
DISP	DS.W	1
	ORG	$8200
START	CLR	D2
	CLR	D3
	MOVEA.W	#N,A0
LOOP	MOVE.W	(A0)+,D0
	TST	D0
	BEQ	FINE
	BTST	#0,D0
	BNE	PARI
DISPA	MOVE.W	D0,D2
	
	MOVE.W	D2,DISP
PARI	MOVE.W	D0,D1
	TST	D1
	MOVE.W	D1,PAR
	BNE	LOOP
FINE	STOP	#$2000
	END	START
	
va bene , cioè per la traccia che mi si da? Vorrei anche provarlo con la Subroutine ma vorrei la certezza che l'ho fatto bene . Grazie

6 Risposte

  • Re: Programma per memorizzare numeri pari o dispari .E fatto bn?

    Ma il codice l'hai scritto tu? L'hai provato? Funziona? Che dubbi hai, di preciso?
  • Re: Programma per memorizzare numeri pari o dispari .E fatto bn?

    Si l'ho scritto io ma il dubbio è che vorrei cambiarlo per far si che scambi i numeri di posto pari con quelli di posto dispari. Ad esempio se ho A = 14,7,8,9,6 e B=15,12,3,2,1 vorrei scambiare 7 con 12 e 14 con 15 per esempio, come posso fare?grazie
  • Re: Programma per memorizzare numeri pari o dispari .E fatto bn?

    Ciao
    no ha diversi errori
    devi specificare il tipo di operando delle istruzioni CLR di solito è CLR.W
    inoltre non scorri il vettore cosi facendo avrai pari o dispari solo il primo elemento.
    sinceramente non ho capito la condizione di uscita dal loop.
    poi nella label dispari una volta eseguita l'operazione devi tornare in loop non andare in sequenza perchè altrimenti copierai anche nei pari un valore che invece deve andare solo nei dispari.
    correggi i problemi.
  • Re: Programma per memorizzare numeri pari o dispari .E fatto bn?

    Scusami ma non capisco perchè mi dici che avrò pari o dispari solo il primo elemento, scorrendo con postincremento testo il primo dopodichè passo al secondo. Mentre per uscire dal loop testo se d0 è uguale a 0, se si (beq) salto a fine dove metto il processore in stato di stop.
  • Re: Programma per memorizzare numeri pari o dispari .E fatto bn?

    Allora
    
    LOOP   MOVE.W   (A0)+,D0 * qui c'è l'incremento
       TST   D0 * test qui manca l'attributo (.B=byte, .W=word, .L=long)
       BEQ   FINE
       BTST   #0,D0
       BNE   PARI
    DISPA   MOVE.W   D0,D2  *questa istruzione è inutile perchè puoi fare direttamente MOVE.W   D0,DISP
       MOVE.W   D2,DISP 
    *qui manca la jmp che va all'incremento di D0
    *cosi come è ti esegue pure i pari cosa che credo non debba fare 
    
    qui invece
    PARI   MOVE.W   D0,D1 *questa istruzione è inutile perchè puoi fare direttamente MOVE.W   D0,PAR
       TST   D1 *la condizione non serve perchè  la tieni già nella label LOOP
       MOVE.W   D1,PAR
       BNE   LOOP * al posto della BNE va posta una JMP
    
    ti posto un link che ti può essere molto utile
    http://www.freescale.com/files/archives/doc/ref_manual/M68000PRM.pdf
  • Re: Programma per memorizzare numeri pari o dispari .E fatto bn?

    Ok capito cmq per i suffissi byte word e longword sul libro di testo non li usa quando fa gli esempi e il programma funziona la stesso XD io li mettevo ma un ragazzo che ha già sostenuto l'esame ha detto so inutili in condizioni di test boh
Devi accedere o registrarti per scrivere nel forum
6 risposte