Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

Linguaggio Assembly

Linguaggi e sistemi

Moderatori: Foto UtentePaolino, Foto Utentefairyvilje

0
voti

[1] Linguaggio Assembly

Messaggioda Foto Utenteireon » 11 feb 2013, 23:01

Allora ho il seguente codice in Assembler:

Codice: Seleziona tutto
segment byte at 80-FF 'RAM'
segment byte at E0000-FFDF 'ROM'
segment 'RAM'
Result DS.W 4
Flag DS.B 1
Ptr DS.B
segment 'ROM'
PtrC DC.B Result
Data DC.W 1,2,3,4
LD X, #$00
LD A, PtrC
LD Ptr, A


Allora avrei dei dubbi, inizialmente vengono dichiarati i segmenti di memoria utilizzati come RAM e come ROM, poi vengono dichiarate delle variabili alle quali viene riservata una locazione di memoria RAM con la direttiva DS (Define Storage), quindi per la variabile Result di tipo Word verranno riservate 4 word quindi 8 byte, per la variabile Flag 1 byte e per la variabile Ptr si sa solo che è di tipo Byte, ma non gli viene riservato nessuno spazio in memoria. A questo punto il codice comincia a lavorare sul segmento ROM con la direttiva DC (Define Constant) e la memoria viene effettivamente riempita. Quindi la locazione di memoria per la variabile PtrC di tipo Byte viene riempita con la variabile Result quindi con 8 byte, mentre la variabile Data di tipo Word non ho capito come viene riempita, cioè vengono rispettivamente allocate 4 word rispettivamente da 2 byte,4 byte, 6 byte e 8 byte? Come va interpretato il comando Data DC.W 1,2,3,4?
Infine il registro indice X viene caricato con l'indirizzo 00 attraverso un salto immediato (#$), il registro A viene caricato con il contenuto di PtrC, e la variabile Ptr viene caricata con il contenuto del registro A. Ho interpretato correttamente il codice?
Ultima modifica di Foto Utentesimo85 il 11 feb 2013, 23:57, modificato 1 volta in totale.
Motivazione: Corretto titolo ed inserito codice tra i tag [code]
Avatar utente
Foto Utenteireon
14 1 2 6
Frequentatore
Frequentatore
 
Messaggi: 237
Iscritto il: 24 ott 2010, 12:21

0
voti

[2] Re: Linguaggio Assembly

Messaggioda Foto Utentesimo85 » 11 feb 2013, 23:56

Il linguaggio si chiama Assembly, l'assembler è il compilatore, ossia quel programma che "traduce" il codice scritto a mano in linguaggio macchina, binario o come vuoi.

Secondo, a quale architettura si sta facendo riferimento?
Avatar utente
Foto Utentesimo85
30,9k 7 12 13
Disattivato su sua richiesta
 
Messaggi: 9927
Iscritto il: 30 ago 2010, 4:59

0
voti

[3] Re: Linguaggio Assembly

Messaggioda Foto Utenteireon » 11 feb 2013, 23:58

Il codice è basato su un core ST7 con un'architettura a 8 bit e un indirizzamento a 16 bit. Comunque il comando:
Codice: Seleziona tutto
Ptr DS.B
in realtà dovrebbe servire ad allocare degli zeri in fondo alla coda, quindi in teoria dopo questo comando dovrei tornarmi un indirizzo con:
Codice: Seleziona tutto
00
come valore di byte.
Il mio dubbio più grande però riguarda la direttiva:
Codice: Seleziona tutto
Data DC.W 1,2,3,4

poiché non riesco a capire quanto spazio viene allocato in memoria.
Avatar utente
Foto Utenteireon
14 1 2 6
Frequentatore
Frequentatore
 
Messaggi: 237
Iscritto il: 24 ott 2010, 12:21

0
voti

[4] Re: Linguaggio Assembly

Messaggioda Foto Utenteireon » 12 feb 2013, 21:29

Poi ho un altro dubbio, se definisco la variabile Ptrc come DC.B Result, come faccio a riempire la memoria con Result che era solamente uno spazio vuoto riservato nella RAM?
Avatar utente
Foto Utenteireon
14 1 2 6
Frequentatore
Frequentatore
 
Messaggi: 237
Iscritto il: 24 ott 2010, 12:21

0
voti

[5] Re: Linguaggio Assembly

Messaggioda Foto Utentesimo85 » 12 feb 2013, 21:33

Ciao ireon,

Purtroppo io non ho esperienza con l'Assembly ST7, ma penso che QUI e QUI tu possa trovare le info che cerchi, se non li avevi già consultato i PDF linkati.
Avatar utente
Foto Utentesimo85
30,9k 7 12 13
Disattivato su sua richiesta
 
Messaggi: 9927
Iscritto il: 30 ago 2010, 4:59


Torna a PC e informatica

Chi c’è in linea

Visitano il forum: Nessuno e 23 ospiti