Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Контрольна робота№1.doc
Скачиваний:
1
Добавлен:
18.12.2018
Размер:
441.86 Кб
Скачать

Лабораторна робота №2

Мета роботи:

  • Освоєння стандартних способів вводу-виводу DOS.

  • Розробка програм по обробці символьної інформації з використанням стрічкових команд.

Короткі теоретичні відомості Стандартні способи вводу-виводу dos

Для того щоб написати просту, але завершену програму, необхідно знати три речі - як вводити дані, як виводити результат і як зупинити виконання програми. В мовах високого рівня є спеціальні оператори вводу/виводу, які дозволяють в зручній формі реалізувати ці функції. У системі команд процесора Ix86 також є команди вводу/виводу, але вони реалізовують ці операції на самому низькому, фізичному рівні, тобто забезпечують звертання до портів вводу/виводу за конкретними адресами. Для забезпечення вводу/виводу інформації на цьому рівні програміст повинен знати номери портів кожного пристрою, а також протоколи або алгоритми обслуговування цих пристроїв. Операційна система MS DOS реалізовує множину сервісних функцій вводу/виводу на логічному рівні, які виступають як пронумеровані функції переривання Int 21h. Прикладна програма користувача повинна повідомити необхідні для даної функції параметри і передати управління DOS, яка і здійснить всі необхідні операції по управлінню пристроєм на фізичному рівні, а потім поверне управління прикладній задачі, повідомивши, чи успішно завершилася операція, або ж була допущена помилка.

Функції інформаційного обміну MS DOS в своєму розвитку змінювалися від спеціалізованих програм обміну для кожного типу пристрою на основі блоку управління файлами FCB( див. Л.[3, 6, 7]), до уніфікації обміну на основі могутньої файлової системи (починаючи з DOS 3.0) через дескриптори. Дескриптор або логічний номер файла ідентифікує файл або пристрій, з яким повинна працювати прикладна програма. Це спрощує програмування операцій вводу/виводу, так як дозволяє здійснювати обмін інформацією незалежно від файла (пристроя). Існує п'ять стандартних дескрипторів файлів, які надаються прикладній програмі:

0^ стандартний ввід ( звичайно клавіатура ),

1 ^ стандартний вивід ( звичайно екран дисплея ),

2 ^ пристрій виводу помилок ( завжди дисплей ),

3 ^ зовнішній пристрій обміну AUX ( асинхронний адаптер COM1),

4 ^ стандартний принтер (перший паралельний порт LPT1).

При виклику будь-якої функції DOS код функції вміщується в регістр AH, додаткові параметри розташовуються в інших регістрах ЗП. Інформація, що повертається міститься в регістрі AL або AX, якщо прапор CF=0. Прапор CF встановлюється в 1, якщо сталася яка-небудь помилка, код якої заноситься в регістр AX (код повернення помилки). Можливі коди помилок наводяться в керівництві по DOS і в літературі, наприклад в [4].

Стандартний ввід (як і стандартний вивід) можна перенаправляти засобами DOS на будь-який пристрій або в файл, а стандартна помилка завжди пов'язана з екраном (звичайно дескриптор 2 використовують для виведення діагностичних повідомлень ).

Перенаправлення вводу або виводу здійснює командний процесор COMMAND.COM. Якщо, допустимо, в програмі PROG передбачений ввід даних через дескриптор стандартного вводу 0, а вивід через дескриптор виводу 1, то при звичайному запуску програми командою

PROG.EXE

програма буде вимагати вхідні дані з клавіатури, і виводити результати своєї роботи на екран. Якщо, однак, при запуску програми використати символ перенаправлення

PROG.EXE>FILE.TXT

система сама створить файл FILE.TXT, і весь вивід буде записаний в цей файл. Ввід як і раніше буде здійснюватися з клавіатури. Запуск програми командою

PROG.EXE < FILE.DAT

приведе до того, що програма всю необхідну їй інформацію спробує ввести з файла FILE.DAT. Тому цей файл повинен бути підготовлений користувачем зазделегідь. Вивід знову буде здійснено на екран. Нарешті команда

PROG.EXE < FILE.DAT > FILE.TXT

змусить програму виконуватися в режимі вводу інформації з файла FILE.DAT і виводу в файл FILE.TXT. Ні екран, ні клавіатура використовуватися не будуть. Сама програма нічого не знає про ці перенаправлення - вона у всіх випадках звертається до стандартного пристрою вводу для вводу даних і до стандартного пристрою виводу для їх виводу. Просто DOS так як би підставляє їй на вході і виході інші пристрої.