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






Основы компьютерных вычислений


    В этой главе разъясняются свойства компьютеров.  Она расскажет вам
    как компьютеры работают и почему они делают это именно так.  Неко-
    торые положения могут оказаться знакомыми вам.  Если у вас нет опы-
    та программирования на языке ассемблера, то многие операции будут
    для вас новыми.


    Все компьютеры используют для хранения информации двоичную систему.
    Это значит, что каждый элемент хранимой информации может иметь
    только два состояния.  Эти состояния обозначаются как "включен" и
    "выключен", "истина" и "ложь", или "1" и "0".  Компьютер хранит эти
    значения в виде уровней напряжения.  К счастью у нас нет нужды свя-
    зываться с напряжением.  При написании программ мы имеем дело
    только с числами.  Используя простейшие числа 0 и 1, можно
    выполнять очень сложные вычисления.  Из-за двоичного представления
    данных компьютеры используют в своих вычислениях арифметику с
    двоичным основанием.  Арифметика с основанием 2 пользуется только
    двумя цифрами:  0 и 1.  Мы обычно применяем систему исчисления по
    основанию 10.  В десятичной арифметике употребляется десять
    различных цифр - от 0 до 9.  Двоичную арифметику можно представить
    себе как систему для людей, имеющих только два пальца.
 
      Ограничение лишь десятью цифрами в десятичной арифметике не ме-
    шает нам представлять более крупные числа.  Мы пользуемся
    многозначными числами, в каждой позиции которых стоят разные
    степени 10.  Самая правая цифра любого числа обозначает число
    едениц, соседняя слева - количество десятков, следующая - число
    сотен и т.д.  Прогрессия справа налево выстраивается такая:
    10**0, 10**1, 10**2 и т.д.      Число 2368 в дейстительности
    представляет 2 тысячи, 3 сотни, 6 десятков и 8 едениц.  Фиг.  2.1
    показывает ,говоря матическим языком, разложение числа 2368.
 
      _____________________________________________________
      2368 = 2 * 10**3 + 3 * 10**2 + 6 * 10**1 + 8 * 10**0
           = 2000    +     300    + 60    +    8
      _____________________________________________________
                Фиг. 2.1 Десятичное представление
 
      Арифметика с основанием 2 или двоичная система аналогична деся-
    тичной, за исключением того, что разряды числа здесь соответствуют
    степеням 2 а не 10.  Числа больше 1 представляются многозначными
    числами, так же как в десятичной арифметике многозначное представ-
    ление получают числа больше 9.  Каждая цифра в двоичной системе
    называется бит от Binary digIT (двоичная цифра).  Позиция каждого
    бита в числе соответствует некоторой степени 2.  Фиг.  2.2
    показывает значение двоичного числа 101101B.
       101101B = 1*2**5 + 0*2**4 + 1*2**3 + 1*2**2 + 0*2**1 + 1*2**0
             =   32     +   0 +   8        +   4    +   0    +   1
             =  45
       ____________________________________________________________
              Фиг. 2.2 Двоичное представление
 
      Мы будем пользоваться суффиксом "B" для обозначения чисел в
    двоичном представлении.  Этим они будут отличаться от десятичных,
    не имеющих суффикса.  Например, 2368 - это десятичное число, а
    101101B - двоичное.  В математической литературе для обозначения
    системы исчисления обычно используется индекс.  Мы будем
    пользоваться символом "B", поскольку ассемблер IBM для обозначения
    двоичных чисел применяет именно его.
 
      В таблице Фиг.    2.3 для представления максимального десятичного
    числа требуется 4 бита.  Для более крупных чисел потребуется еще
    больше бит.  Двоичным числом состоящим из n бит можно изобразить
    число величиной 2**n-1.  То есть двоичное число в n бит длиной
    может
 
                       Десятичное   Двоичное
                      -----------------------
                         1          1
                         2           10
                         3           11
                         4          100
                         5          101
                         6          110
                         7          111
                         8         1000
                         9         1001
                        10         1010
                      -----------------------
                     Фиг. 2.3 Первые 10 целых
 
    единственным образом представить любое целое от 0 до 2**n-1.  Для
    4-х битового примера на Фиг 2.3 самое большое такое число равно 15
    (2**4-1).
 
      Для каждого конкретного микропроцессора сществует максмальный
    размер двоичных чисел, которые могут быть в нем представлены.  Для
    микропроцессора 8088, используемого в IBM PC, внутренние операции
    производятся над числами длиной 16 бит.  Максимальное целое, кото-
    рое можно представить в 16 битах, равно 2**16-1 или 65 535.  Однако
    такая беззнаковая арифметика допускает числа только от 0 до 65 535.
    Для обозначения отрицательных чисел нам потребуются изменения в
    этой схеме.