Студопедия
Главная страница | Контакты | Случайная страница

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Процедури обслуговування переривань.

Читайте также:
  1. VI. ДОГЛЯД ТА ОБСЛУГОВУВАННЯ СПЕЦІАЛЬНОГО ОДЯГУ, СПЕЦІАЛЬНОГО ВЗУТТЯ ТА ІНШИХ ЗАСОБІВ ІНДИВІДУАЛЬНОГО ЗАХИСТУ
  2. Внутрішні процедури та труднощі
  3. Судові процедури

4. Процедури роботи з датою і часом.

5. Процедури і функції перевірки стану диску.

6. Процедури і функції роботи з файлами.

7. Процедури і функції різного призначення.

ФУНКЦІЇ УПРАВЛІННЯ ОПЕРАЦІЙНИМ СЕРЕДОВИЩЕМ

Програма, написана на мові Pascal 7.0 має можливість отримувати від MS-DOS інформацію про оточення (environment). Дані про оточення зберігаються в визначеній області операційної системи і представляють собою набір текстових рядків, в яких описані змінні оточення. Значення одних змінних встановлюється системою по замовчуванню, значення інших задаються користувачем чи прикладною програмою. Кожний опис в області оточення представляє собою рядок виду:

Ім'я = Значення

Ім'я – це ім'я змінної, Значення – текстовий рядок.

Змінні оточення призначені для зберігання визначеної системної інформації, яка необхідна різним прикладним програмам, які використовують її в своїх цілях. Довжина текстового рядка, який визначає змінну оточення, не може перевищувати 128 байт.

Для того щоб встановити змінну оточення, використовується команда операційної системи SET, наприклад:

SET COMSPEC=C:\DOS\COMMAND.COM;

Якщо вказати команду SET без аргументу, то на екрані буде виданий список змінних оточення. В Turbo Pascal міститься три функції для роботи з змінними оточення:

FUNCTION EnvCount: INTEGER;

FUNCTION EnvStr (index: INTEGER): STRING;

FUNCTION GetEnv (EnvVar: STRING): STRING;

Функція EnvCount не має параметрів і повертає загальне число змінних оточення. Функція EnvStr має один параметр і повертає рядок, який містить ім'я і значення змінної, яка відповідає значенню вказаного індексу. Індекс найпершої змінної – 1. якщо вказаний індекс менше 1 чи більше EnvCount, функція EnvStr повертає пустий рядок.

Функція GetEnv дозволяє по імені змінної оточення отримати її значення. При виклику функції вказується один параметр – ім'я змінної оточення.

ПРОЦЕДУРИ УПРАВЛІННЯ ПРОЦЕСАМИ

Використовуючи спеціальні засоби мови Pascal, можна організувати виклик з програми будь-якої іншої програми, яку називають програмою-нащадком. Важливо пам’ятати, що для того, щоб програма-нащадок успішно завантажилася в пам'ять і почала виконуватися, необхідно забезпечити виділення їй потрібного об’єму пам'яті. Так як програма, яка виконується в даний момент, по замовчуванню захоплює всю вільну динамічну пам'ять (кучу) системи, то для завантаження програми-нащадка просто немає місця. Для того щоб виділити для програми-нащадка достатньої кількості вільної пам'яті, необхідно на початку програми вказати за допомогою директиви компілятора $M мінімальний розмір виділеної програмі пам'яті, а якщо в програмі не використовується динамічна пам'ять, то зовсім не виділяти її.

Виклик програми-нащадка відбувається за допомогою процедури

Exec (Path, CmLine: STRING);

Параметр Path – це повний чи скорочений шлях до командного файлу і його ім'я, а CmLine – параметр, в якому можна передати викликаній програмі командний рядок. Якщо виклик програми не відбувся, то це ніяк не відіб’ється на роботі викликаної програми, тобто вона буде вести себе однаково як при успішному, так і при неуспішному виклику. Для того щоб визначити, як пройшов виклик, використовується системна змінна DosError, яка описана в модулі Dos. Зразу після виклику процедури Exec необхідно перевірити значення змінної DosError. Якщо вона рівна 0, то це означає, що виклик пройшов успішно. Не нулеві значення свідчать про помилку. Значення цієї змінної відповідає кодам, виробленими операційною системою, і можуть бути наступними

код помилки Значення
  нормальне завершення
  файл не знайдений
  шлях не знайдений
  надто багато відкритих файлів
  доступ закритий
  порушена інформація в полях файлу чи в системних областях
  недостатньо пам'яті
  несумісні параметри оточення
  нерозпізнаний формат диску
  немає більше файлів

Коли викликається програма нащадок, бажано, щоб ця програма виконувалася в оточенні DOS, що відповідає тому оточенні, яке забезпечує операційна система. Однак програма, написана на Турбо Паскалі, звичайно не виконує ці умови. При запуску вона завжди перевизначає деякі переривання для особистих цілей. Тому перед викликом програми нащадка потрібно відновити початкову адресу обробника переривань, а після завершення роботи викликаної програми встановити адресу об робітника Турбо Паскаля. Ці дії виконує процедура Swap Vectors, яка не має параметрів.

Використовуючи механізм виклику незалежних програм, можна створити складні програмні комплекси, в яких програма-диспечер, займає чи не великий об’єм пам'яті, проводить виклик необхідних (в тому числі і системних) програм. В такому випадку може виникнути необхідність передачі інформації з програми-нащадка у викликаючи програму чи навпаки. Нажаль, можливості MS-DOS по здійсненню таких обмінів невеликі. Якщо програма що викликається, написана на мові Турбо Паскаль, то доступ до командного рядка здійснюється за допомогою функцій ParamStr і ParamCount.

Стандартним способом передачі інформації в програму, що викликається, являється процедура HALT, яка має один параметр і через нього передає код завершення, який, в свою чергу, може бути використаним в програмі, що викликається, за допомогою функції

DosExitCode: WORD;

Ця функція повертає значення типу WORD, в молодшому байті якого міститься код повернення, переданий через процедуру завершення, а в старшому – ознака того, як завершилася програма.

ПРОЦЕДУРИ ОБСЛУГОВУВАННЯ ПЕРЕРИВАНЬ

Не дивлячись на те, що Турбо Паскаль має великий набір інструментальних засобів для використання можливостей MS-DOS, в багатьох випадках виникає необхідність прямого звертання до функцій MS-DOS для використання деяких специфічних засобів операційної системи, для організації обміну інформацією в оперативній пам'яті. Для більш повного використання можливостей MS-DOS в модулі DOS знаходиться дві процедури: Intr і MsDos.

В процедурі

Intr (IntNo: BYTE; VAR Regs: REGISTERS);

яка виконує задане програмне переривання, IntNo – номер програмного переривання; REGISTERS являється типом запису, визначеним в модулі DOS наступним чином:

TYPE

REGISTERS = RECORD

CASE INTEGER OF

0: (AX, BX, CX, DX, BP, SI, SI, DS, ES, Flags: WORD);

1: (AL, AH, BL, BH, CL, CH, DL, DH: BYTE);

END;

Поля запису відповідають регістрам процесора.




Дата добавления: 2015-09-11; просмотров: 74 | Поможем написать вашу работу | Нарушение авторских прав

Release(p); | Формування. | Readln(a); | New(q); | USES CRT; | Заголовок. | Xx: real; | Rewrite (Output); | Процедура | Процедура |


lektsii.net - Лекции.Нет - 2014-2025 год. (0.006 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав