Ассемблер и программирование для IBM PC


         

Обратное внимание на перенос единичного


0 + 0 = 0 1 + 0 = 1 1 + 1 = 10 1 + 1 + 1 = 11
Ассемблер для IBM PC 4
Обратное внимание на перенос единичного бита в последних двух операциях. Теперь, давайте сложим 01000001 и 00101010. Букву A и символ *? Нет, число 65 и число 42:
Двоичные Десятичные
01000001 65 00101010 42 01101011 107
Проверьте, что двоичная сумма 01101011 действительно равна 107. Рассмотрим другой пример:
Двоичные Десятичные
00111100 60 00110101 53 01110001 113
Отрицательные числа
Все представленные выше двоичные числа имеют положитель ные значения, что обозначается нулевым значением самого левого (старшего) разряда. Отрицательные двоичные числа содержат единичный бит в старшем разряде и выражаются двоич ным дополнением. Т.е., для представления отрицательного двоичного числа необходимо инвертировать все биты и прибавить 1. Рассмотрим пример:
Число 65: 01000001 Инверсия: 10111110 Плюс 1: 10111111 (равно -65)
Если прибавить единичные значения к числу 10111111, 65 не получится. Фактически двоичное число считается отрицатель ным, если его старший бит равен 1. Для определения абсолют ного значения отрицательного двоичного числа, необходимо повторить предыдущие операции: инвертировать все биты и прибавить 1:
Двоичное значение: 10111111 Инверсия: 01000000 Плюс 1: 01000001 (равно +65)
Сумма +65 и -65 должна составить ноль:
01000001 (+65) 10111111 (-65) (1)00000000
Ассемблер для IBM PC 5
Все восемь бит имеют нулевое значение. Перенос единичного бита влево потерян. Однако, если был перенос в знаковый pазряд и из разрядной сетки, то результат является кор ректным. Двоичное вычитание выполняется просто: инвентируется знак вычитаемого и складываются два числа. Вычтем, например, 42 из 65. Двоичное представление для 42 есть 00101010, и eго двоичное дополнение: - 11010110:
65 01000001 +(-42) 11010110 23 (i)00010111
Результат 23 является корректным. В рассмотренном примере произошел перенос в знаковый разряд и из разрядной сетки. Если справедливость двоичного дополнения не сразу понят на, рассмотрим следующие задачи: Какое значение необходимо прибавить к двоичному числу 00000001, чтобы получить число 00000000? В терминах десятичного исчисления ответом будет -1. Для двоичного рассмотрим 11111111:

Содержание  Назад  Вперед