Отладка приложений

Манипуляции с указателями


  •  LEA   загрузить эффективный адрес

LEA загружает целевой регистр адресом исходного операнда. Следующий фрагмент кода содержит два примера с инструкцией LEA. Первый показывает, как следует назначать адрес целому указателю, а второй — как извлекать адрес локального символьного массива с помощью инструкции LEA и передавать адрес как параметр API-функции GetwindowsDirectory.

void LEAExamples ( void ) 

{



int * pint ;

int iVal ;

// Следующие инструкции эквивалентны С-коду

// pint = siVal ;.

_asm

{

LEA EAX , iVal

MOV [pint] , EAX

}

///////////////////////////////////////////////////////////////////

char szBuff [ MAX_PATH ] ;

// Другой пример доступа к указателю через LEA.

// Эта последовательность инструкций идентична С-коду

// GetWindowsDirectory ( szBuff , МАХ_РАТН ) ;.

_asm

{

PUSH 104h // Поместить МАХ_РАТН в стек как

// второй параметр.

LEA ЕСХ , szBuff // Получить адрес szBuff. 

PUSH ECX // Поместить адрес szBuff в стек как

// первый параметр.

CALL DWORD PTR [GetWindowsDirectory]

 } 

}



Содержание раздела