Esercizio assembler simcpu
salve a tutti ho appena svolto il seguente esercizio ma ho dei dubbi. potete dirmi cosa ho sbagliato? vi ringrazio. il testo è questo
Si scriva un programma in linguaggio assembler SimCpu che considerando un vettore non ordinato di numeri interi positivi dica quanto è lunga la sequenza numerica composta da tutti numeri uguali consecutivi.
I numeri, tutti di dimensione 1 Byte, sono presenti in memoria a partire dall’indirizzo contenuto nel registro R0 e sono in numero pari al valore contenuto nel registro R1.
Il programma deve memorizzare nel registro R2 la lunghezza della sequenza individuata.
VETTORE: byte ? // Dichiaro un vettore di cui non conosco la dimensione
START: LDBR R10 R0 // carico il contenuto di R0(address) in R10
MV R1 R2 // sposto il contenuto di R1(dimensione vettore) in R2
LOOP: LDBR R20 R10
MV R2 R15 // r15adesso ha la dimensione n del vettore
JMPZ FINE // se la dimensione contenuta in R15 è 0 allora chiudo il programma
// altrimenti esegue queste istruzioni
STBR VETTORE R20 // prendo il primo numero di R20 e lo sposto nel vettore
INC VETTORE // Mi posiziono sulla seconda cella
INC R20
DEC R15 // decremento la dimensione n
JMP LOOP
FINE: HLT
in questo tipo di assembler la mov è diversa mv sorg dest.
Si scriva un programma in linguaggio assembler SimCpu che considerando un vettore non ordinato di numeri interi positivi dica quanto è lunga la sequenza numerica composta da tutti numeri uguali consecutivi.
I numeri, tutti di dimensione 1 Byte, sono presenti in memoria a partire dall’indirizzo contenuto nel registro R0 e sono in numero pari al valore contenuto nel registro R1.
Il programma deve memorizzare nel registro R2 la lunghezza della sequenza individuata.
VETTORE: byte ? // Dichiaro un vettore di cui non conosco la dimensione
START: LDBR R10 R0 // carico il contenuto di R0(address) in R10
MV R1 R2 // sposto il contenuto di R1(dimensione vettore) in R2
LOOP: LDBR R20 R10
MV R2 R15 // r15adesso ha la dimensione n del vettore
JMPZ FINE // se la dimensione contenuta in R15 è 0 allora chiudo il programma
// altrimenti esegue queste istruzioni
STBR VETTORE R20 // prendo il primo numero di R20 e lo sposto nel vettore
INC VETTORE // Mi posiziono sulla seconda cella
INC R20
DEC R15 // decremento la dimensione n
JMP LOOP
FINE: HLT
in questo tipo di assembler la mov è diversa mv sorg dest.