2010-05-29 2 views
1

У меня есть адрес моего массива (переданный как указатель на функцию) в регистре esi. Как я могу получить доступ к определенной ячейке массива? то есть:Доступ к массиву в MASM

my_array[a + b * c] 

, где c постоянна.

ответ

3

Посмотрите инструкции, такие как LEA

Думай об этом так:

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

ссылка мертва. – ApproachingDarknessFish

+0

Исправлена ​​ссылка. –

1

Вы можете сразу переместить его следующим образом также:

MOV EDX, [ESI + 4*EBX] 

Для статического массива, вы можете на самом деле используют сразу два регистра для индексации, но используя базовый адрес массива как 32-битное смещение в the addressing mode. Это работает только для независимого от кода кода.

MOV EDX, my_array[ECX + 4*EBX] 

Вместо того чтобы использовать два различных регистров, вы можете использовать один и тот же регистр дважды, чтобы имитировать масштабный коэффициент 3 (ebx + ebx*2), 5 или 9.

Смежные вопросы