2010-08-04 3 views
28

qualcuno può darmi una descrizione completa della direttiva ORG?
Quando e perché viene utilizzato nelle applicazioni scritte di assemblaggio?Cosa fa l'istruzione di assemblaggio ORG?

Utilizzo di Nasm su x86 o AMD64.

+2

Suggerimento: esiste più di un'architettura CPU ampiamente utilizzata e più di un assemblatore per almeno alcune di queste architetture. Se si specificasse quale assemblatore per quale linguaggio macchina, potremmo essere più utili. –

+0

Nasm per x86 e amd64 – sepisoad

risposta

24

ORG viene utilizzato per impostare il contatore di posizione dell'assemblatore. Questo può o non può tradurre in un indirizzo di caricamento al momento del collegamento. Può essere usato per definire indirizzi assoluti, ad es. quando si definisce qualcosa come i vettori di interrupt che potrebbero dover essere in un indirizzo fisso, oppure può essere usato per introdurre il padding o generare un allineamento specifico per il codice seguente.

+3

Si noti inoltre che il significato della direttiva 'ORG' può variare tra gli assemblatori. Ad esempio, utilizzandolo per produrre padding come menzioni di Paolo funzionerà su MASM, ma [non su NASM] (http://developer.apple.com/mac/library/documentation/DeveloperTools/nasm/nasmdo10.html#section-10.1 .3). – bcat

+11

'ORG 'è un'abbreviazione per" origine ". – starblue

+1

@starblue buon complemento per la comprensione –

-1

è la posizione in memoria in cui si desidera caricare il programma binario, se presente.

Preferisco non utilizzare org e rilasciare direttamente opcode/valore all'hardware. è sempre possibile memorizzare i valori in ax e trasferire tra bx, cx, dx.

sto scrivendo il mio assemblatore di servire fuori codice operativo/valore senza doversi preoccupare di inviarlo alla memoria prima prima di eseguire,

Il suo modo molto più veloce solo per eseguire codici operativi sul posto come sono di essere leggere, piuttosto che cercare di memorizzarli nella cache rischiando di sovraccaricare lo stack che potrebbe bruciare la CPU

+0

L'offset nella memoria ram si desidera caricare il programma da 0x00000000h. ORG 100h = inserisce il mio codice binario in memoria nella posizione 0x00000000h + 100h o 0x00000100h su macchine a 64 bit. – Jason

+4

La prima frase è corretta. Il resto mi sembra un'assurdità. L'uso di registri o memoria per memorizzare valori non ha nulla a che fare con l'uso di 'org'. E sei consapevole del fatto che il puntatore dell'istruzione nella CPU punta sempre su una posizione _memory_? E che la cpu legge gli opcode sempre dalla memoria o dalla cache? – hirschhornsalz

6

ORG è semplicemente un'indicazione su dove inserire il prossimo pezzo di codice/dati, relativo al segmento corrente.

Non è utile utilizzarlo per gli indirizzi fissi, poiché l'indirizzo finale dipende dal segmento che non è noto al momento dell'assemblaggio.

2
 During the assemble time ORG directive resets the MLC (memory location counter) to the address specified in the ORG directive. 

Sintassi: ORG nota: può essere un valore assoluto senza segno o di qualsiasi simbolo o il simbolo +.

esempio: - per osservare questa istruzione di lavoro è necessario un elenco di montaggio che utilizzi la direttiva ORG.

posizione
0000A4 00 89 TAB DC 256AL1 (* - TAB)
0001A4 00.000.194 90 ORG TAB + 240
000194 F0F1F2F3F4F5F6F7 91 DC C'1234567'

Qui nel sopra il simbolo TAB è assegnato all'indirizzo MLC 0A4. nella successiva istruzione ORG imposta la posizione di indirizzo da MLC a TAB + 240 che è x'194 '(~ x'A4' + 240 in decimale). In pratica questa configurazione è impostata su una tabella con lunghezza 256 e dalla posizione 240 per memorizzare alcune costanti di caratteri in modo che possa essere utilizzata per l'istruzione TR.

-1

ORG imposta il percorso dal quale è previsto il caricamento del programma. Caricando questo programma in una posizione defferent rifreterà l'indirizzo di memoria errato e causerà problemi.

+0

Non vedo la necessità di una risposta aggiuntiva poiché le informazioni in esso contenute sono già state citate. Oltre a ciò, descrive anche lontano da un caso tipico. – usr2564301