Энциклопедия Turbo Pascal. Главы 1-4
Страница 46. Внутренние форматы данных и соглашения о связях в языке Турбо Паскаль


Внутренние форматы данных и соглашения о связях в языке Турбо Паскаль

     Прежде чем писать подпрограмму на ассемблере для использова-
ния ее в программе на языке Турбо Паскаль необходимо понять , как
данные  представляются  в  программе  и  как они передаются между
подпрограммами.  Для версии ИБМ все глобальные переменные и конс-
танты  хранятся в сегменте данных и доступ к ним осуществляется с
использованием регистра DS. Все локальные переменные помещаются в
стек и доступ к ним осуществляется с применением регистра ВР, ко-
торый используется для индексации стека. Рис.19 показывает способ
хранения для данных каждого типа. Следует иметь в виду, что байты
указателей задаются в обратном порядке. Следовательно, указатель,
имеющий смещение В000 и сегмент 0010, будут храниться в следующем
виде:

    -------¬   -------¬   -------¬   -------¬
    ¦  10  ¦   ¦  00  ¦   ¦  00  ¦   ¦  B0  ¦
    L-------   L-------   L-------   L-------
        Сегмент                 Смещение

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

----------------------------------------------------------------
  Тип       Длина                     Комментарии
данного    данного
----------------------------------------------------------------
двоичный   1 байт
однобай-   1 байт
товый
символьный 1 байт
целый      2 байта
целый ко-  1 байт
роткий
целый      4 байта
длинный
слово      2 байта
вещест-    6 байт    Первый байт содержит мантиссу, следующий
венный               байт является младшим и последний байт
                     является старшим
одиночный  4 байта   Стандартный формат числа с плавающей
                     запятой
двойной    8 байт    Стандартный формат числа с плавающей
                     запятой и с двойной точностью
расширен-  10 байт   Стандартный формат числа с плавающей
ный                  запятой и повышенной точностью
для вы-    3 байт    Дополнительный код числа с плавающей
числений             запятой
строка     перемен-  Первый байт содержит текущую длину строки;
           ная       следующий байт является первым символом
                     строки
множество  перемен-  Поскольку каждый элемент использует один
           ная       бит и максимальное число элементов равно
                     256, то максимальная длина множества равна
                     32 байта
Указатель  4 байта   Два младших байта содержат смещение, а
                     старшие байты содержат сегмент. Байты
                     хранятся в обратном порядке. Нулевое
                     значение занимает 4 байта
Массивы    перемен-  Значения с меньшим индексом имеют меньший
           ная       адрес памяти
Записи     перемен-  Первое поле имеет наименьший адрес,
           ная       последнее поле имеет самый старший адрес
---------------------------------------------------------------

             Рис.19. Представление данных в памяти

 
« Предыдущая статья