Другие языки программирования и технологии
Ассемблер. При выполнении серии умножений происходит переполнение EAX.
При выполнении серии умножений происходит переполнение EAX. Дальше он что-то записывает в EDX. Как сделать корректную программу, чтобы выполнялось бесчисленное количество умножений и решить проблему с переполнением в EAX ?
А что означает корректно? !
Как раз операция умножения задействет два регистра EAX и EDX. И это считается корректным!
Как раз операция умножения задействет два регистра EAX и EDX. И это считается корректным!
Команда:
IMUL источник
IMUL приемник, источник
IMUL приемник, источник1, источник2
Назначение:
Умножение чисел со знаком
Процессор:
8086
80386
80186
Эта команда имеет три формы, различающиеся числом операндов:
IMUL источник: источник (регистр или переменная) умножается на AL, АХ или ЕАХ (в зависимости от размера операнда) , и результат располагается в АХ, DX:AX или EDX:EAX соответственно.
IMUL приемник, источник: источник (число, регистр или переменная) умножается на приемник (регистр) , и результат заносится в приемник.
IMUL приемник, источник1,источник2: источник 1 (регистр или переменная) умножается на источник 2 (число) , и результат заносится в приемник (регистр) .
Во всех трех вариантах считается, что результат может занимать в два раза больше места, чем размер источника. В первом случае приемник автоматически оказывается достаточно большим, но во втором и третьем случаях могут произойти переполнение и потеря старших бит результата. Флаги OF и CF будут равны единице, если это произошло, и нулю, если результат умножения поместился целиком в приемник (во втором и третьем случаях) или в младшую половину приемника (в первом случае) .
Значения флагов SF, ZF, AF и PF после команды IMUL не определены.
Команда:
MUL источник
Назначение:
Умножение чисел без знака
Процессор:
8086
Выполняет умножение содержимого источника (регистр или переменная) и регистра AL, АХ, ЕАХ (в зависимости от размера источника) и помещает результат в АХ, DX:AX, EDX:EAX соответственно. Если старшая половина результата (АН, DX, EDX) содержит только нули (результат целиком поместился в младшую половину) , флаги CF и OF устанавливаются в 0, иначе — в 1. Значение остальных флагов (SF, ZF, AF и PF) не определено.
IMUL источник
IMUL приемник, источник
IMUL приемник, источник1, источник2
Назначение:
Умножение чисел со знаком
Процессор:
8086
80386
80186
Эта команда имеет три формы, различающиеся числом операндов:
IMUL источник: источник (регистр или переменная) умножается на AL, АХ или ЕАХ (в зависимости от размера операнда) , и результат располагается в АХ, DX:AX или EDX:EAX соответственно.
IMUL приемник, источник: источник (число, регистр или переменная) умножается на приемник (регистр) , и результат заносится в приемник.
IMUL приемник, источник1,источник2: источник 1 (регистр или переменная) умножается на источник 2 (число) , и результат заносится в приемник (регистр) .
Во всех трех вариантах считается, что результат может занимать в два раза больше места, чем размер источника. В первом случае приемник автоматически оказывается достаточно большим, но во втором и третьем случаях могут произойти переполнение и потеря старших бит результата. Флаги OF и CF будут равны единице, если это произошло, и нулю, если результат умножения поместился целиком в приемник (во втором и третьем случаях) или в младшую половину приемника (в первом случае) .
Значения флагов SF, ZF, AF и PF после команды IMUL не определены.
Команда:
MUL источник
Назначение:
Умножение чисел без знака
Процессор:
8086
Выполняет умножение содержимого источника (регистр или переменная) и регистра AL, АХ, ЕАХ (в зависимости от размера источника) и помещает результат в АХ, DX:AX, EDX:EAX соответственно. Если старшая половина результата (АН, DX, EDX) содержит только нули (результат целиком поместился в младшую половину) , флаги CF и OF устанавливаются в 0, иначе — в 1. Значение остальных флагов (SF, ZF, AF и PF) не определено.
Похожие вопросы
- Выполнение команд ассемблера в МП
- "mov eax,0" и "xor eax,eax" это ведь коды? Где используются "mov eax,0" и "xor eax,eax"?
- СРОЧНО! Вопрос жизни и смерти Как умножать длинные числа на паскале?! При умножение иногда выдает переполнение ячейки.
- При делении отрицательного числа выводит не правильный ответ (assembler). Если беру числа 127 13 10, пишет переполнение
- Что может ассемблер?
- Почему многие программисты ненавидят ассемблер?Ведь у него куча плюсов!Он позволяет максимально задействовать
- Ассемблер. Помогите решить. Для выполнения в emu8086
- Вопрос по изучению языка Ассемблера под MS DOS. (Нужны советы по программному обеспечению/программированию)
- Ассемблер. В заданном массиве целых чисел найти самую большую серию подряд стоящих чётных элементов.
- С помощью команд fpu вычислить площадь круга, исходя из введѐнного диаметра. Ассемблер...