2012-07-26 14 views
5

Ho appena iniziato a imparare il linguaggio dell'assembler. Mi sono inventato il concetto di EQU. All'inizio ha perfettamente senso fino a quando sono arrivato a DC.B. Qual è la differenza tra DC.B e EQU? Non puoi semplicemente usare EQU per ogni costante? Grazie per l'aiuto.EQU vs DC.B. Qual è la differenza?

+0

Con quale assemblatore si sta lavorando, su quale sistema operativo? Per quale processore? –

+0

HC12? EQU definisce solo un simbolo costante, DC riserva spazio per una variabile (.B lo rende un byte). – harold

risposta

12

Non ho familiarità con la sintassi specifica dell'assemblatore, quindi questa risposta è un'ipotesi plausibile.

La direttiva EQU è utilizzata per indicare l'assemblatore che si desidera avere una costante simbolica di nome (spesso calcolata da altri valori assembler incluse altre definizioni EQU) che è possibile fare riferimento a in altri luoghi nel testo di partenza assemblaggio. Si deve sempre scrivere

symbolname EQU constantexpression 

Questo permette di scrivere symbolName al posto del constantexpression in altri posti nel testo di partenza. Ma questo nome di per sé non ha alcun effetto diretto sui dati binari del programma assemblato finale.

"DB.B" (presumo 'define constant (byte)' è usato per dire all'assembler che tu con il programma assemblato finale di avere un byte di dati incorporato in esso nella posizione relativa nel file sorgente " . Scrive

optionalname DB.B constantexpression 

per avere il valore calcolato dell'espressione costante collocato in un byte di dati nei dati binari del programma assemblato.

Quindi, si potrebbe scrivere

AnEvenNumber EQU 2 
MyEvenNumber DB.B AnEvenNumber 

La prima riga produce solo una costante denominata e senza la seconda non ha alcun effetto sul file binario. La seconda riga produce un byte nel tuo binario, che contiene il valore indicato dalla costante simbolo denominata.

Si noti che la direttiva DB.B consente anche un nome opzionale; questo simbolo può essere utilizzato anche in altri punti del codice. A seconda della sofisticazione del vostro assemblatore, si può essere in grado di definire

LocationOfEvenNumber EQU MyEvenNumber 

e

 DW.W LocationOfEvenNumber 

ora producendo una parola nel file binario che "punti" sul tuo byte di dati binari.

+0

Questa è un'ipotesi molto buona, anzi, vorrei dire quanto segue: questo è il +1 – Durandal

+0

Sto lavorando con il microcontroller HCS12 usando Codewarrior. Grazie per la spiegazione. È stato molto utile – eemamedo

Problemi correlati