Мета роботи:
· Освоєння стандартних способів вводу-виводу 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 так як би підставляє їй на вході і виході інші пристрої.