Информация по команде LEA - Assembler

Узнай цену своей работы

Формулировка задачи:

Привет. Недавно наткнулся на такую хорошую команду. Часть информации по ней почерпнул отсюда (lea VS offset) Но возник вопрос: зачем в данной команде квадратные скобки, то бишь разыменование адреса?
lea ecx,[eax+ebx] ;ecx:=eax+ebx
Команда интерпритируется так: 1) значение eax складывается со значением ebx 2) результат суммы разыменовывается (получается, что вычисленная ранее сумма является адресом) 3) в ecx заносится значение? ячейки памяти по адресу eax + ebx, а не их сумма Можете это объяснить?

Решение задачи: «Информация по команде LEA»

textual
Листинг программы
lea edi,[ebx*4+ecx ]           ;загружает в регистр EDI адрес, 
                               ;вычисленный как EDI=ЕВХ*4+ЕСХ

Объяснение кода листинга программы

  1. *lea edi,[ebx4+ecx]* — загружает в регистр EDI адрес, вычисленный как EDI = ЕВХ 4 + ЕСХ В данном коде используется команда LEA (Load Effective Address), которая загружает в указанный регистр (в данном случае EDI) адрес, вычисленный по формуле, указанной в скобках. В формуле [ebx4+ecx] первые два символа [ebx4] обозначают, что нужно взять значение регистра EBX, умножить его на 4 и затем прибавить к полученному результату значение регистра ECX. ECX и EBX — это регистры общего назначения, которые могут использоваться для хранения любых данных в процессе выполнения программы. В итоге, после выполнения команды LEA, в регистре EDI будет содержаться адрес, который вычисляется как EDI = EBX * 4 + ECX.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 4.333 из 5