Энциклопедия Turbo Pascal. Главы 1-4 Страница 46. Внутренние форматы данных и соглашения о связях в языке Турбо Паскаль
|
Страница 46 из 60
Внутренние форматы данных и соглашения о связях в языке Турбо Паскаль Прежде чем писать подпрограмму на ассемблере для использова- ния ее в программе на языке Турбо Паскаль необходимо понять , как данные представляются в программе и как они передаются между подпрограммами. Для версии ИБМ все глобальные переменные и конс- танты хранятся в сегменте данных и доступ к ним осуществляется с использованием регистра 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. Представление данных в памяти
|