2010-05-29 3 views
1

J'ai l'adresse de mon tableau (passé comme un pointeur vers la fonction) dans le registre esi. Comment puis-je accéder à une cellule particulière du tableau? i.e:Accéder au tableau dans MASM

my_array[a + b * c] 

c est constante.

Répondre

3

Look Up instructions telles que LEA

penser de cette façon:

LEA edx,[esi+ebx*4] 
+0

Le lien est mort. – ApproachingDarknessFish

+0

Correction du lien. –

1

Vous pouvez directement déplacer comme suit également:

MOV EDX, [ESI + 4*EBX] 

Pour un tableau statique, vous pouvez utilise en réalité deux registres à la fois pour l'indexer, mais en utilisant l'adresse de base du tableau comme déplacement de 32 bits dans the addressing mode. Cela ne fonctionne que pour le code indépendant de la position.

MOV EDX, my_array[ECX + 4*EBX] 

Au lieu d'utiliser deux registres différents, vous pouvez utiliser le même registre deux fois pour simuler un facteur d'échelle de 3 (ebx + ebx*2), 5 ou 9.