|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Sep 2007
Messaggi: 351
|
[Assembler] Domande su programmi
Ciao a tutti,
volevo fare un po'di domande riguardo l'assembler. Premetto innanzitutto un paio di cose: per i modi di indirizzamento definiamo l'operando immediato (la parola che segue l'istruzione contiene il dato), l'indirizzo assoluto (la parola che segue l'istruzione contiene l'indirizzo del dato), e l'indirizzo in regsitro (l'indirizzo del dato è contenuto nel registro indicato). Quando scrivo I mi riferisco al primo, con A al secondo e con R al terzo. Quindi si hanno tre modi per caricare una word LDWI, LDWA, LDWR. Stavo vedendo questo programma: Codice:
N: word 3
DATA: byte 7
byte 2
byte 9
START: LDWA R1 N
LDWI R2 DATA
LDWI R10 0
LOOP: LDBR R11 R2
ADD R11 R10
INC R2
DEC R1
JMPNZ LOOP
HALT
Però certi passaggi non mi sono del tutto chiari. Partiamo da start: la prima istruzione dovrebbe caricare 3 in R1 giusto?? La seconda, di operando immediato, perchè è scritta così??? DATA è un etichetta, e quindi non contiene un indirizzo??? Non dovrebbero esserci un LDWA??? Grazie a tutti dei chiarimenti |
|
|
|
|
|
#2 | |
|
Junior Member
Iscritto dal: Aug 2007
Messaggi: 26
|
Quote:
DATA non credo sia un'etichetta... è un vettore formato da 3 elementi da 8 bit ciascuno... esattamente come N!! Ti torna il ragionamento!? |
|
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Sep 2007
Messaggi: 351
|
si ok mi torna che sia un vettore, ma potresti aiutarmi a capire cosa fa ciascun tipo di istruzione??
Ad esempio, ok per la prima parte viene definita N come una word che vale 3, poi viene "dichiarato" il vettore DATA costituito da tre elementi, il primo elemento di valore 5 all'indirizzo rappresentato da DATA, gli altri in celle adiaicenti giusto??? STRAT: LDWA R1 N carica con l'indirizzo assoluto, ovvero la parola che segue l'istruzione contiene l'idnrizzo del dato c'è scritto: questo signifia che in R1 ho il valore 3, mica l'indirizzo dell'etichetta N no??? LDWI R2 DATA carica con oprando immediato (quello che nel c corrisponde a x=5 ad esempio). In R2 cosa c'è?? L'indirizzo del primo elemento di DATA??? grazie |
|
|
|
|
|
#4 | |
|
Junior Member
Iscritto dal: Aug 2007
Messaggi: 26
|
Quote:
Sempre se ho capito bene come funzionano queste due routine: LDWA R1 N --> mette in N l'indirizzo della locazione di memoria che contiene il "numero N" LDWI ---> mette in R2 i valori del vettore DATA che sono sempre memorizzati in locazioni di memoria adiacenti (consecutive). In questo caso utilizzi 3 locazioni da 1 byte ciascuna. L'unica cosa che non capisco è da dove prendi R2... dovrebbe essere anch'esso un vettore di 3 elementi... o quanto meno dovrebbe essere dichiarato stile --> R2: .FILL 3,1 (quindi non inizializzato).... |
|
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Sep 2007
Messaggi: 351
|
ho trovato un esempio che corrisponde al seguente programmino in c:
Codice:
int main()
{ int n,x=10,y=11;
n=x+y+3;
return EXIT_SUCCESS;
}
Codice:
n: word 0
x: word A
y: word B
START: LDWI R0 3
LDWA R1 x
ADD R1 R0
LDWA R1 y
ADD R1 R0
STWA R0 n
HLT
Però non capisco quando devo usare LDWR Inoltre l'ultima istruzione STWA è definita come: STWA s A store byte dove s=source (read only) e A indica un numero qualunque. Non capisco la differenza fra memorizzare un valore e caricarlo, ovvero la differenza fra STWA e LDWA grazie |
|
|
|
|
|
#6 | ||
|
Junior Member
Iscritto dal: Aug 2007
Messaggi: 26
|
Quote:
Quote:
Load: è un'operazione che da memoria carica (copia) in un registro. Inoltre ho capito che le variabili Rx non devi definirle (forse sono integrate nella routine). Quindi nell'ultimo esempio: Metti il valore "3" in R0 Metti il valore di x in R1 Sommi R1 e R0 (modificando R0 (che contiene quindi la somma dei due numeri) Usando sempre R1 (tanto il valore di x non ti serve piu) metti il valore di y in R1 Sommi R1 e R0 ( cioè Somma= R1 + R0 ma R0= x+3 e R1=y ---> Somma=y+x+3 ) Capito ora? So che è un po ingarbugliato!! |
||
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Sep 2007
Messaggi: 351
|
Perfetto grazie mille
|
|
|
|
|
|
#8 |
|
Junior Member
Iscritto dal: Aug 2007
Messaggi: 26
|
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 21:32.




















