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

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

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

Я складываю числа разными способами и вдруг получаю разные ответы:
    .model flat 
    .code
public main
main proc
    ; здесь все четко
    mov     eax, 4292870144
    lea     eax, [eax+4294951040+4294967168]    
        
        ; и здесь все без нареканий
    mov     ebx, 4292870144
    add     ebx, 4294951040
    add     ebx, 4294967168
 
        ; НО ЗДЕСЬ МОЙ РАЗУМ ОСТАВЛЯЕТ МЕНЯ
    mov     esi, 4292870144
    mov     ecx, 4294951040
    mov     edx, 4294967168
    lea     ecx, [esi+ecx+edx]  ; здесь ошибка ecx <> eax = ebx

    xor eax, eax
    ret
main endp
end
lea используется механизм блока адресации процессора (а не арифметико-логического блока) и что он настолько плох, что считать не умеет??

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

textual
Листинг программы
    mov     eax, 1
011F103B  mov         eax,1  
    mov     ecx, 2
011F1040  mov         ecx,2  
    mov     edx, 3
011F1045  mov         edx,3  
    lea     ecx, [edx+ecx+eax]  
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
Похожие ответы