2010-10-16 6 views
7

Je suis un peu confus quant à exactement ce segment est utilisé lorsque vous avez assembleur x86 comme ci-dessous (syntaxe Intel):Quel segment est utilisé par défaut dans l'adressage indirect x86?

mov ax, [di]

Je suis certain que ce n » t être le segment de code, je pense soit le segment de données ou la pile? (Ou est la partie pile du segment de données?)

+3

Habituellement 'DS' (le segment de données). La pile ferait partie de 'SS' - le segment Stack. 'SP' et (je pense)' BP' sont ceux qui par défaut 'SS' tandis que la plupart des autres opérations par défaut' DS'. –

+0

Ok, c'est logique. Ne supposez pas que vous sauriez à quoi l'adressage direct dans cette ligne indiquerait? \t appel loin ptr 2480h: 0DB0h – PeterBelm

+0

Cela dépend très fortement du mode dans lequel vous programmez. Mode réel? Mode protégé? –

Répondre

10

DS est la valeur par défaut, sauf avec l'indexation BP, puis SS est utilisé. Cette exception est de faciliter l'utilisation d'une trame de pile (instructions ENTER/LEAVE). Les instructions de chaîne ont également une utilisation spécifique du segment.

+3

'SP' aussi indexe le' SS'. –

+1

Pouvez-vous citer une référence pour cela? Je sais que c'est vrai, mais je ne peux pas le localiser dans le manuel de référence IA-32 n'importe où. –

+0

En plus d'être familier avec toutes les instructions, le meilleur endroit pour regarder est le début du Vol.2, Chapitre 2. Spécifiquement, Tableau 2-1 à 2-3. (Au moins dans le manuel que je regarde.) – bitRAKE

Questions connexes