Некорректный результат умножения - Assembler
Формулировка задачи:
Скажите пожалуйста, если ставлю переменную 130 [sx], то эффективный адрес после умножения eax получается не правильный 12594, а должно 78130. Если ставлю 100 в [sx], то эффективный адрес eax будет правильный 60100. Почему, заранее благодарю.
push eax xor eax,eax push esi xor esi,esi mov eax, 601 mul [sx] mov si,[sy] add esi,eax pop eax push esi xor esi,esi push ebx xor ebx,ebx push eax xor eax,eax lea ebx, [a3] mov al,1 mov [ebx+esi],al pop eax pop ebx pop esi
Решение задачи: «Некорректный результат умножения»
textual
Листинг программы
sx dd 130 ;------------- mov eax,601 mul [sx]
Объяснение кода листинга программы
- Переменная
sx
содержит значение 130. - Код выполняет операцию умножения, используя регистр
eax
как источник данных и переменнуюsx
как множитель. - Результат умножения сохраняется в регистре
eax
.