Команда lea вводит меня в недоуменее - Assembler
Формулировка задачи:
Я складываю числа разными способами и вдруг получаю разные ответы:
lea используется механизм блока адресации процессора (а не арифметико-логического блока) и что он настолько плох, что считать не умеет??
.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 вводит меня в недоуменее»
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]
Объяснение кода листинга программы
- mov eax, 1
- mov ecx, 2
- mov edx, 3
- lea ecx, [edx+ecx+eax] В данном коде используются следующие переменные: — eax, ecx, edx (регистры процессора) Постановка задачи: выполнить сложение переменных eax, ecx и edx и сохранить результат в переменной ecx. Обратите внимание, что в данном коде есть непонятные моменты: — Почему используется команда lea, а не mov для сложения? — Откуда берется значение переменной eax в команде lea?
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д