Программа неправильно выполняет последнюю операцию деления - Assembler
Формулировка задачи:
Почему программа не правильно выполняет последнюю операцию деления a4 / (-a3)? Нужна помощь!
Решение задачи: «Программа неправильно выполняет последнюю операцию деления»
textual
Листинг программы
;a4/(-a3) ; xor edx, edx ; mov eax, a4 ; xor ebx, ebx ; mov bx, a3 ; div ebx ; neg eax ; mov res_4, eax mov ax, a3 cwde neg eax mov ebx, eax mov eax, a4 cdq idiv ebx mov res_4, eax
Объяснение кода листинга программы
- Устанавливаются значения двух регистров: edx = 0 и eax = a4.
- Выполняется операция деления eax на bx, результат сохраняется в eax.
- Результат деления сохраняется в переменной res_4.
- Загружается значение переменной a3 в регистр ax.
- Выполняется преобразование регистра ax в десятичное значение и сохраняется в eax.
- Регистр ebx устанавливается равным eax.
- Загружается значение переменной a4 в регистр eax.
- Выполняется преобразование регистра eax в десятичное значение и сохраняется в eax.
- Регистр eax используется как индекс для обращения к памяти и сохранения результата в переменную res_4.
- Выполняется операция деления eax на ebx, результат сохраняется в eax.
- Результат деления сохраняется в переменной res_4.