Команда lea вводит меня в недоуменее - Assembler

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

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

Я складываю числа разными способами и вдруг получаю разные ответы:
Листинг программы
  1. .model flat
  2. .code
  3. public main
  4. main proc
  5. ; здесь все четко
  6. mov eax, 4292870144
  7. lea eax, [eax+4294951040+4294967168]
  8. ; и здесь все без нареканий
  9. mov ebx, 4292870144
  10. add ebx, 4294951040
  11. add ebx, 4294967168
  12. ; НО ЗДЕСЬ МОЙ РАЗУМ ОСТАВЛЯЕТ МЕНЯ
  13. mov esi, 4292870144
  14. mov ecx, 4294951040
  15. mov edx, 4294967168
  16. lea ecx, [esi+ecx+edx] ; здесь ошибка ecx <> eax = ebx
  17.  
  18. xor eax, eax
  19. ret
  20. main endp
  21. end
lea используется механизм блока адресации процессора (а не арифметико-логического блока) и что он настолько плох, что считать не умеет??

Решение задачи: «Команда lea вводит меня в недоуменее»

textual
Листинг программы
  1.     mov     eax, 1
  2. 011F103B  mov         eax,1  
  3.     mov     ecx, 2
  4. 011F1040  mov         ecx,2  
  5.     mov     edx, 3
  6. 011F1045  mov         edx,3  
  7.     lea     ecx, [edx+ecx+eax] 
  8. 011F104A  lea         ecx,[eax+ecx]

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

  1. mov eax, 1
  2. mov ecx, 2
  3. mov edx, 3
  4. lea ecx, [edx+ecx+eax] В данном коде используются следующие переменные: — eax, ecx, edx (регистры процессора) Постановка задачи: выполнить сложение переменных eax, ecx и edx и сохранить результат в переменной ecx. Обратите внимание, что в данном коде есть непонятные моменты: — Почему используется команда lea, а не mov для сложения? — Откуда берется значение переменной eax в команде lea?

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


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

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

8   голосов , оценка 3.75 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы