Команда 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?
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д