Автор Diramur задал вопрос в разделе Другие языки и технологии
Проблема знака при умножении/делении (ассемблер) , MUL, IMUL, DIV, IDIV и получил лучший ответ
Ответ от Ёергей Логинов[гуру]
В предыдущем ответе ссылка не рассматривает результат деления. Надо иметь в виду, что при делении может появиться остаток: он всегда имеет знак делимого. Располагается он в старшей части делимого, в то время как младшая часть содержит частное.
Старшая часть находится в AH или DX или EDX в зависимости от длины операндов (16, 32, 64 бит для делимого и 8, 15, 32 бит для делителя соответственно) . Младшая часть делимого содержит частное (AL, AX, EAX) для тех же случаев.
Код машинной команды определяется ассемблером на этапе трансляции, для разных длин операндов коды разные. Попробуй выполнить интересующие тебя команды в отладчике (дебаггере) какого-либо дизассемблера, которые обычно прилагаются к компиляторам языков высокого уровня (например Си и всех его модификаций) только не бери старые: только начиная с I486 или Р-III (для кратных операций умножения — в Р-III это 4 одновременных умножения).
1 чем отличаются команды MUL и IMUL 2 какую команду расширения нужно использовать при делении на 16-разрядное число
mul - это беззнаковое умножение
imul - знаковое
Если твой ассемблер 16-разрядный, а
подробнее...
ошибочку подскажите(ассемблер, масм32)
не какой-то косяк, а косячище
.CODE
Start:
mov ax,[ x ]
mov cx,[ a ]
imul
подробнее...
Деление отрицательного числа. Ассемблер
Денис Евдоченко, не обижайтесь, но здесь нужно просто правильно применить знаковое деление, а не
подробнее...
Assembler лаба не могу разобраться
Не вижу здесь Ассемблер, вижу Паскаль со встроенным ассемблером, а это не одно и то же.
подробнее...
Assembler
Вопрос 1
Вот макрос, генерирующий случайные числа от 0 до n-1. Алгоритм взят из модуля System
подробнее...