Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
127
Добавлен:
02.05.2014
Размер:
62.46 Кб
Скачать

Вычитание

0-0=0, 1-0=1, 0-1=1+единица заема;

Умножение

0*0=0, 1*0=0, 0*1=0, 1*1=1.

Сложение многоразрядных целых двоичных чисел производится по описанным выше правилам и с учетом переноса или заема единицы из предыдущего разряда. Если из старшего разряда представления многоразрядного целого числа получается единица переноса, такая ситуация называется переполнением разрядной сетки. Большинство программ обработки информации на языках высокого уровня в такой ситуации выдают и прекращает обработку В программах на Ассемблере программист должен сам в своей программе выявлять такие ситуации переполнения и предусматривать соответствующую обработку. При этом программист должен руководствоваться следующими правилами:

определяется наличие переносов из двух старших разрядов числа

- если переносов нет, то результат операции правильный;

- если есть переносы из обеих разрядов, то результат операции тоже правильный;

- если из одного разряда есть перенос, а из другого нет, то результат операции неверный, фиксируется ситуация переполнения.

При использовании дополнительного кода единица переноса из знакового разряда игнорируется.

Как видно из вышеизложенного, правило определения факта переноса оказывается достаточно сложным. Для его упрощения в ЭВМ часто используют модифицированные коды: для изображения знака числа используются 2 двоичных разряда, при этом знак "+" изображается комбинацией 00, а знак "-" -комбинацией 11. Тогда ситуация переполнения определяется при разных значениях битовых разрядов знака, а именно, если в знаковых разрядах получаются комбинации 01 или 10 - значит, произошло переполнение.

Умножение многоразрядных двоичных чисел производится путем образования частичных произведений и последующего их суммирования. Частичные произведения получаются после сдвигов умножителя. Единственной особенностью является то, что если сомножитель является отрицательным (знаковые разряды равны 11), то перед началом умножения следует приписать к нему слева столько единиц, сколько значащих разрядов у другого сомножителя справа от запятой. Результат произведения всегда получается в дополнительном коде.

Операция деления представляется последовательностью операций вычитания и сдвига делителя.

Следует отметить некоторые особенности выполнения операций над числами с плавающей запятой. При сложении или вычитании чисел с одинаковыми порядками, их мантиссы складываются или вычитаются, а порядку присваивается общее значение. Если порядки исходных чисел разные, то сначала эти порядки выравниваются (число с меньшим порядком приводится к числу с большим порядком), а затем мантиссы складываются или вычитаются. Сумма или разность имеют порядок большего числа. Если при нахождении суммы или разности получается переполнение, то мантисса сдвигается вправо на один разряд, а порядок результата увеличивается на 1.

При умножении чисел с плавающей запятой их мантиссы перемножаются, а порядки складываются.

При делении мантисса делимого делится на мантиссу делителя, а порядок результата получается как разница порядка делимого и делителя. При этом, если мантисса делимого больше мантиссы делителя, то частное окажется больше 1 (происходит переполнение). В этом случае частное сдвигается на 1 разряд вправо, а порядок результата увеличивается на 1.

Соседние файлы в папке Лекции по ассемблеру