web-dev-qa-db-fra.com

Que fait l'instruction de montage ORG?

quelqu'un peut-il me donner une description complète de la directive ORG?
Quand et pourquoi est-il utilisé dans les applications écrites de l'Assemblée?

Utilisation de Nasm sur x86 ou AMD64.

39
sepisoad

ORG est utilisé pour définir l'assembleur compteur d'emplacement. Cela peut ou non se traduire par une adresse de chargement au moment de la liaison. Il peut être utilisé pour définir des adresses absolues, par ex. lors de la définition de quelque chose comme des vecteurs d'interruption qui peuvent avoir besoin d'être à une adresse fixe, ou il peut être utilisé pour introduire un remplissage ou générer un alignement spécifique pour le code suivant.

35
Paul R

ORG est simplement une indication sur l'endroit où placer le prochain morceau de code/données, lié au segment en cours.

Il ne sert à rien de l'utiliser pour des adresses fixes, car l'adresse éventuelle dépend du segment qui n'est pas connu au moment de l'assemblage.

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

Syntaxe: ORG note: peut être une valeur absolue non signée ou n'importe quel symbole ou symbole +.

exemple: - pour observer le fonctionnement de cette instruction, vous avez besoin d'une liste d'assemblage qui utilise la directive ORG.

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

Ici, ci-dessus, le symbole TAB est affecté à l'adresse MLC 0A4. dans l'instruction suivante, ORG définit le MLC sur l'emplacement d'adresse TAB + 240 qui est x'194 '(~ x'A4' + 240 en décimal). Fondamentalement, cette configuration consiste à configurer une table de longueur 256 et à partir du 240ème emplacement pour stocker des constantes de caractères afin que je puisse l'utiliser pour l'instruction TR.

3
kanthi kiran

ORG définit l'emplacement à partir duquel votre programme doit se charger. En chargeant ce programme dans un emplacement différent, vous réfrencerez une adresse mémoire incorrecte et vous causerez des problèmes.

0
snehm