Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Asm: Общие вопросы > деление в дополнительном коде


Автор: rezanov 8.10.2011, 21:08
Учебная задача для программирования микропроцессора.

Задача:  Поделить отрицательное число, записанное в дополнительном коде и результат записать в регистр.
В младшем байте аккумулятора у нас записано число -122.  (регистр A=10000110) -122 здесь записано в дополнительном двоичном коде. Получено в результате предыдущей операции. Необходимо разделить на число 6. Оно записано в регистре R4(R4=110) в прямом двоичном коде.  
-122 / 6 = 20.3333333
В регистр R5 записываем результат

Код:

Код

    DIV A,R4
    MOV R5,A


Но результат получается неверный... Как делятся числа в дополнительном коде? Или может быть надо перевести число из дополнительного кода, а потом делить? И куда тогда денется знак числа? Вообщем, как в ассемблере поделить отрицательное число, записанное в 1 байте.(8бит)в дополнительном коде?
 smile 

Автор: iff 9.10.2011, 16:42
У процессоров семейства x86 есть инструкции DIV и IDIV. Первая работает с беззнаковыми числами, вторая - со знаковыми.

Автор: Korod 24.10.2011, 13:15
Если в системе команд однокристаллки есть команда NEG, меняющая знак, то надо сделать число положительным, затем разделить, ну а логикой присвоить соответствующий знак результату

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)