- •Історична довідка
- •Характеристика й особливості мови
- •Алфавіт мови
- •Службові (зарезервовані) слова.
- •Структура програми мови Turbo Pascal
- •Процедури введення-виведення. Деякі вбудовані функції Турбо-Паскаля.
- •Функції числових параметрів.
- •Базові управляючі конструкції Турбо-Паскаля Оператори умовного переходу.
- •Оператори циклів у Паскалі
- •Концепція типів даних. Типи даних в мові Pascal
- •Дійсні типи
- •Бульовий (логічний) тип
- •Символьні і рядкові змінні
- •1. Символьний тип
- •2. Рядковий тип
- •Перерахований та обмежений типи
- •1. Перерахований тип
- •2. Обмежений тип
- •1. Поняття масиву. Одномірні масиви
- •2. Багатомірні масиви
- •3. Сортування і пошук
- •Множинний тип
- •Тип запис
- •Процедури і функції
- •Формальні і фактичні параметри. Механізм параметрів
- •Параметри - значення
- •Параметри-змінні
- •Безтипові параметри
- •Приведення типів.
- •Процедурні типи
- •Рекурсія Рекурсивні визначення
- •Рекурсивні підпрограми
- •Алгоритми з поверненням. Розв’язок задачі про рух коня
- •Алгоритми з поверненням. Розв’язок задачі про вісьмох ферзів
- •Модулі в Турбо Паскалі
- •Модуль crt
- •1. Керування екраном
- •2. Робота з клавіатурою
- •3. Інші можливості
- •Графіка в Турбо Паскалі
- •1. Включення і вимикання графічного режиму.
- •2. Побудова елементарних зображень
- •3. Виведення текстової інформації.
- •Файли в мові програмування Pascal
- •Установчі і завершальні операції
- •Операції введення-виведення
- •Обробка помилок введення-виведення
- •Переміщення по файлу
- •Спеціальні операції
- •Текстові файли
- •Двійкові файли
- •Статичні і динамічні змінні
- •Покажчики
- •Стан покажчика
- •Установка розмірів динамічної пам'яті
- •Сумісність і перетворення посилкових типів
- •Динамічні структури даних
- •Динамічні змінні: інші види списків, стек і черга.
- •1. Інші види списків
- •2. Стек і черга
- •Дерева і пошук у деревах
- •1. Визначення й описи структур даних
- •2. Алгоритми
- •Змішані таблиці
- •Об’єктно-орієнтоване програмування. Що таке об’єктно-орієнтоване програмування
- •Інкапсуляція
- •Спадкування
- •Віртуальні методи і поліморфізм
- •Конструктори, динамічні об'єкти і деструктори
- •Поля і методи: сховані і загальнодоступні
- •Системно- залежні розширення
- •Налагодження змінних
- •Оверлеї
- •Переривання і системні виклики
- •Доступ до пам'яті і портів
- •Перевизначення переривань
Переривання і системні виклики
Стандартні модулі системи Turbo Pascal містять дуже великий набір засобів для різних застосувань, що використовують більшість можливостей операційної системи MS-DOS. Проте в багатьох випадках виникає необхідність прямого звертання до MS-DOS як для одержання більшої ефективності програми, так і з метою використання деяких специфічних засобів операційної системи.
Для цих цілей у системному модулі Dos маються дві стандартні процедури. Перша процедура має ім'я Intr і дозволяє безпосередньо викликати програмні переривання, через які і реалізується доступ до всіх ресурсів операційної системи. Заголовок цієї процедури виглядає в так:
Intr ( IN : byte; var Regs: Registers )
Зміст параметрів наступний:
- IN - номер програмного переривання, яке необхідно викликати (0..255);
- Regs – запис за допомогою якого передаються параметри зазначеного переривання. Тип цього запису Registers визначається в модулі Dos так:
type
Registers = record
case integer of 0:(AX,BX,CX,DX,BP,SI,DI,DS,ES,
Flags:word);
l:(AL,AH,BL,BH,CL,CH,DL,DH:byte)
end;
Структура цього запису моделює набір регістрів центрального процесора (варіанти в цьому записі відбивають той факт, що з першими чотирма регістрами можна працювати або як з єдиними словами, або з їх старшими і молодшими частинами по окремості).
При виконанні процедури Intr значення полів AX, BX, СХ, DX, ВР, SI, DІ, DS і ЕS запису-параметра завантажуються в однойменні регістри ЦП. Після цього процедура реалізує виклик переривання з номером IN. Після того, як переривання буде виконане, новий уміст цих регістрів записується в запис Regs (цей запис передається в процедуру як параметр-змінна) у ті ж поля, а вміст регістрів прапорів розташовується в поле Flags. Таким чином, у програмі стають доступними результати виклику переривання.
Ця процедура не може використовуватися для виклику тих переривань, що вимагають завдання визначених значень регістрів SP чи SS чи змінюють значення цих регістрів. Для роботи з процедурою Intr потрібно детальне знання семантики, параметрів і результатів викликуваного переривання. Ці відомості містяться в технічних посібниках no операційній системі MS-DOS. Нижче приводиться простий приклад використання процедури Intr для визначення розмірів основної і розширений (extended) оперативної пам'яті ЕОМ. Параметрами процедури TotalMemory є змінні DosMemory і ExtMemory, у которі будуть поміщений розмір пам'яті, що адресується DOS, в одиницях по lК, і розмір розширеної оперативної пам'яті (з адресами, більшими 1 МБ). Процедура використовує переривання із шістнадцятьковими номерами $12 і $15, які, власне, і реалізують відповідні запити до операційної системи.
procedure TotalMemory(var DosMemory,ExtMemory :word);
var
Regs ; Registers;
begin
with Regs do
begin
Intr($12,Regs);
DosMemory:= АХ;{у полі АХ повертається розмір основної пам'яті};
AX:=$8800;{параметр виклику}
Intr{$15,Regs); ExtMemory:= АХ {у полі АХ повертається розмір розширеної пам'яті}
end
end;
Ця процедура може бути використана, наприклад, так:
uses
Dos ; var
DosM, ExtM: word;
procedure TotalMemory (varDosMsmory,ExtMamory : word);
begin
TotalMemory(DosM,ExtM);
Writeln('Ocновна пам'ять DOS = ',Dos,'K');
Writeln('Pозширена пам'ять = ',Ext,'K') end.
Друга процедура, використовувана для звертання до операційної системи, має ім'я MsDos і реалізує виклик конкретного переривання із шістнадцятьковим номером $21. Справа в тім, що дане переривання виконує велику кількість дій, об'єднаних під загальною назвою "функції MS-DOS". Тому для більш комфортабельного звертання до цих функцій доступ до переривання $21 виділений в окрему процедуру.
Єдиним параметром процедури MsDos є запис типу Registers.
MsDos ( var Regs : Registers )
Результат звертання до процедури MsDos буде той же самий, що і звертання до функції Intr з номером переривання $21.
Простий приклад використання процедури MsDos приведений нижче. Програма використовує функцію з номером 9 (цей номер передається через регістр АН) для виведення на екран тексту вітання. Через регістри DS і DX передається адреса першого байта виведеного рядка, що повинний завершуватися символом '$'.
program UseMsDos; uses
Dos; const
Msg : string = 'Привіт!$'; var
Regs : Registers; begin
with Regs do begin АН := 9; DS := Seg>(Msg), DX := Ofs(Msg[l]) end;
MsDos(Regs) end.