Assembler для начинающих


Двоичное дополнение



Двоичное дополнение


    Для изображения как положительных, так и отрицательных чисел 8088
    применяет арифметику двоичного дополнения.  В такой знакопеременной
    арифметике самый левый бит целого числа указывает на его знак.  По-
    ложительные числа имеют 0 в старшем бите, а отрицательные - 1.  По-
    ложительные числа имеют одинаковое значение в знаковой и без-
    знаковой арифметике.  У отрицательных же значение иное.  Для того
    чтобы сделать число отрицательным, изменить его знак на минус, оно
    дополняется и результат увеличиваетя на единицу.  В 4-х битовом
    примере 5 имеет значение 0101B, в то время как -5 равно 1011B.
    Пример на Фиг.  2.4 показывает этот метод.
 
      Пример на Фиг.    2.5 показывает единственность нуля в арифметике


    двоичного дополнения.  То есть -0 равен 0.  Для любого n-битового
    числа в системе с двоичным дополнением наибольшее значение сос-
    тавляет 2**(n-1)-1, а наименьшее -2**(n-1).  Ноль - единственен.  В
    4-х битовой системе наибольшее число, как показано на Фиг.    2.6,
    равно 7, а наименьшее -8.
 
    _________________________
      5        =       0101B
 
    Для изменения знака:
     Дополняем           1010B
     Добавляем 1       0001B
                   -----         __________________________________
     -5        =       1011B       0            =       0000B
 
    Для изменеия знака:          Для изменения знака:
     Дополняем           0100B          Дополняем           1111B
     добавляем 1       0001B      Добавляем 1       0000B
                   -----                        -----
      5     =            0101B          -0            =       0000B    =    0
    _________________________    __________________________________
    Фиг. 2.4 Двоичное допол-     Фиг. 2.5  То же самое с нулем
           нение 5
 
      Как мы увидим позднее, процессор 8088 может работать с одним и
    тем же целым как со значением имеющим или не имеющим знак.    Выбор
    оставлен программисту языка ассемблера.  Во всяком случае, когда
    программа работает в арифметике со знаком, процессор 8088 применяет
    при проведении операций двоичное дополнение.
 
      Десятичное  Двоичное        Десятичное    Двоичное
      -------------------------------------------------
          7      0111          -1   1111
          6      0110          -2   1110
          5      0101          -3   1101
          4      0100          -4   1100
          3      0011          -5   1011
          2      0010          -6   1010
          1      0001          -7   1001 Фиг. 2.6 Числа
          0      0000          -8   1000     с  двоичным
      -------------------------------------------------   дополнением




Содержание раздела