domax93
20-07-2014, 14:23
salve qualcuno potrebbe controllare se questi programmi sono svolti correttamente? li ho fatti personalmente ma non saprei se sono corretti oppure ci sono errori, sarei grato a chiunque possa darmi un consiglio o trovare qualche errore.
il programma è molto banale richiedere di trovare il numero 7 tra gli elementi di un vettore. nel primo caso è svolto molto semplicemente
*dopo aver inserito un vettore di numeri interi, cercare il numero 7 e salvare l'indirizzo di dove si trova la variabile del registro in una variabile
*area dati
*area dati
ORG $8000
VECTOR DC.L 1,2,3,4,53,6,7,0 *IL VETTORE DI ELEMENTI
NUMBER EQU 7 *VALORE DA CERCARE
RIS DC.L 0 *RISULTATO NON INIZIALIZZATO
RIEMP EQU 8
*programma
START MOVEA.L #VECTOR,A0
MOVE.L #RIEMP,D1
LOOP MOVE.L (A0)+,D0
CMP.L #NUMBER,D0
BNE LOOP1
LOOP1 ADD.L #-1,D1
TST D1
BNE LOOP
ADDA.L #-1,A0
MOVE.L A0,RIS
FINE JMP FINE
END START
grazie in anticipo!
versione con subroutine e stack ancora non corretta come il programma sopra
**dopo aver inserito un vettore di numeri interi, cercare il numero 7
*DATI
VECTOR DC.W 1,2,3,4,53,6,7,0 *IL VETTORE DI ELEMENTI
NUMBER EQU 7 *VALORE DA CERCARE
RIS DC.L 0 *RISULTATO NON INIZIALIZZATO
ORG $8000
START MOVE.L #VECTOR,A0
MOVE.L (A0)+,D0
ADDA.L #-2,SP
MOVE.W D0,-(SP) *FORSE NON NECESSARIO
MOVE.W #NUMBER,-(SP)
JSR FOUND
MOVE.W 4(SP),D2
ADD.L #6,SP
MOVE.W D2,RIS
*SUBROUTINE
*DATI
OFF1 EQU 8 *NUMBER
OFF2 EQU 10 *D0=#VECTOR *NON NECESSARIO
OFF3 EQU 12 *OUTPUT
FOUND LINK A6,#0
MOVE.L D0,-(SP)
LOOP CMP.B OFF1(A6),D0
BNE LOOP
ADDA.L #-1,A0
MOVE.W D0,OFF3(A6)
MOVE.L (SP)+,D0
UNLK A6
RTS
END START
il programma è molto banale richiedere di trovare il numero 7 tra gli elementi di un vettore. nel primo caso è svolto molto semplicemente
*dopo aver inserito un vettore di numeri interi, cercare il numero 7 e salvare l'indirizzo di dove si trova la variabile del registro in una variabile
*area dati
*area dati
ORG $8000
VECTOR DC.L 1,2,3,4,53,6,7,0 *IL VETTORE DI ELEMENTI
NUMBER EQU 7 *VALORE DA CERCARE
RIS DC.L 0 *RISULTATO NON INIZIALIZZATO
RIEMP EQU 8
*programma
START MOVEA.L #VECTOR,A0
MOVE.L #RIEMP,D1
LOOP MOVE.L (A0)+,D0
CMP.L #NUMBER,D0
BNE LOOP1
LOOP1 ADD.L #-1,D1
TST D1
BNE LOOP
ADDA.L #-1,A0
MOVE.L A0,RIS
FINE JMP FINE
END START
grazie in anticipo!
versione con subroutine e stack ancora non corretta come il programma sopra
**dopo aver inserito un vettore di numeri interi, cercare il numero 7
*DATI
VECTOR DC.W 1,2,3,4,53,6,7,0 *IL VETTORE DI ELEMENTI
NUMBER EQU 7 *VALORE DA CERCARE
RIS DC.L 0 *RISULTATO NON INIZIALIZZATO
ORG $8000
START MOVE.L #VECTOR,A0
MOVE.L (A0)+,D0
ADDA.L #-2,SP
MOVE.W D0,-(SP) *FORSE NON NECESSARIO
MOVE.W #NUMBER,-(SP)
JSR FOUND
MOVE.W 4(SP),D2
ADD.L #6,SP
MOVE.W D2,RIS
*SUBROUTINE
*DATI
OFF1 EQU 8 *NUMBER
OFF2 EQU 10 *D0=#VECTOR *NON NECESSARIO
OFF3 EQU 12 *OUTPUT
FOUND LINK A6,#0
MOVE.L D0,-(SP)
LOOP CMP.B OFF1(A6),D0
BNE LOOP
ADDA.L #-1,A0
MOVE.W D0,OFF3(A6)
MOVE.L (SP)+,D0
UNLK A6
RTS
END START