Студопедия

КАТЕГОРИИ:

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


Практичне завдання 1




ЗМІСТ

 

ВСТУП. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

 

Практичне завдання 1. Представлення інформації у цифровому вигляді. . . . 6

 

Практичне завдання 2. Програмування мовою Assembler. . . . . . . . . . .9

 

Практичне завдання 3. Порівняння мов програмування С/С++ та Паскаль. . . 13

 

Практичне завдання 4. Використання функцій ВІOS. . . . . . . . . . . . . . .25

 

Практичне завдання 5. Використання портів для обміну даними. . . . . . . . 38

 

Практичне завдання 6. Використання можливостей Win-32 API. . . . . . . . .52

 

Практичне завдання 7. Використання функцій вводу-виводу. . . . . . . . . . 62

 

Практичне завдання 8. Використання функції DeviceIoControl. . . . . . . . . 66

 

Практичне завдання 9. Використання драйвера. . . . . . . . . . . . . . . . . .71

 

Практичне завдання 10. Недокументований доступ до портів. . . . . . . . . .75

 

Додаток А. Програмні коди функцій користувача, які можуть використовуватися при читанні і записі інформації на зовнішніх пристроях. .82

 

Додаток Б. Функції користувача для читання сектора з диску і запису на диск

з використанням функції DeviceIoControl. . . . . . . . . . . . . . . . . . . . . 85

 

Додаток В. Класи для читання і запису інформації з використанням драйвера для роботи в Windows 98/ME з портами. . . . . . . . . . . . . . . . . . . . . . 88

 

Додаток Г. Приклади програм класів недокументованого доступу до портів в операційних системах Windows 95/98/ME. . . . . . . . . . . . . . . . . . . . . 91

Список використаних джерел. . . . . . . . . . . . . . . . . . . . . . . . . . . .96

 


Вступ

Перед тим, як приступити до курсу практичних робіт з системного програмування, перейти до програмування системних функцій та апаратного програмування пристроїв в операційних системах сімейства Windows, потрібно насамперед розібратися в основних принципах доступу до апаратної частини комп’ютера під цими системами. А вони, на превеликий жаль, досить дещо збіднені і, я б сказав, однобокі. Існують як мінімум чотири офіційних способи прямого доступу до комп’ютерного устаткування, якщо так можна назвати на даному рівні:

1. Перший полягає в звичайному використанні набору функцій вводу-виводу: _outp, _outpw, _outpd, _inp, _inpw, _inpd. Вони входять до складу бібліотеки часу виконання, але їх використання досить сильно залежить від операційної системи. Практично всі нові системи Windows не дозволяють працювати з цими функціями в вільно доступному режимі програмування.

2. Другий спосіб базується на застосуванні універсальної ресурсної функції вводу-виводу DeviceIoControl. Головна перевага при її застосуванні полягає в однозначній підтримці даної функції всіма системами Windows, починаючи Windows95 і закінчуючи останніми версіями - Windows SR3 Windows Vista. Але у цієї функції є один серйозний недолік – це дуже обмежений діапазон її застосування. Не дивлячись на те, що вона дозволяє здійснювати роботу з дисковою системою і з новітніми інтерфейсами передачі даних, отримати прямий доступ до пристроїв за її допомогою не вдається.

3. Третій спосіб полягає в банальному створенні драйвера (наприклад, віртуального драйвера пристрою), що дозволяє отримати необмежений доступ до всіх пристроїв в системі. Крім того, даний варіант прекрасно буде працювати у всіх операційних системах Windows. Основний недостаток цього методу полягає у відносній складності написання програмного коду самого драйвера, а також необхідність створення окремого варіанта драйвера для кожної операційної системи зокрема. Наприклад, якщо програма написана під Windows 98 і Windows 2000, то доведеться писати два різні драйвери під кожну систему.

4. Останній спосіб полягає в використанні «вмонтованого» в (Visual) C++ макроасемблера. Він не дозволяє застосовувати переривання, тому що Windows буде зависати, проте зовсім непогано працює з апаратними портами.

Оскільки кожен із підходів заслуговує уваги в області системного програмування, розробляючи наш курс методичного посібника, ми будемо посилатися на усі ці підходи. Зразу слід відмітити, що вибір того чи іншого підходу із вищепредставлених варіантів буде цілком залежати, в першу чергу, від версії операційної системи, а потім тільки від поставлених завдань програмування. Із цим потрібно примиритися, так як обійти його практично неможливо. Це полягає в тому, що фірма Microsoft з кожним роком, розробляючи нові версії операційної системи Windows, все менше і менше залишає можливостей прямого доступу до пристроїв. Це можна зрозуміти, знаючи, що такий підхід веде до підвищення надійності операційної системи, з однієї сторони, але з іншої сторони,- блокується розвиток конкурентного і часто більш якісного програмного забезпечення.

Протягом висвітлення методичного матеріалу ми розберемо базові підходи самих інструментів системного програмування на практиці, тобто елементи асемблера, базові знання з мови програмування С/С++ та їх застосування на практиці програмування, а потім звернемося до альтернативних варіантів програмування апаратних засобів за допомогою уже згаданих інструментів програмування, можливостей операційної системи Windows та її базових понять. Слід наголосити, що ця задача не буде виконуватися в широкомасштабному варіанті програмування для всіх зовнішніх пристроїв, так як такий курс є набагато тривалішим в розподілі часу, а тільки для пристрою клавіатури як одного із головних терміналів вводу інформації. Додамо, що інші пристрої апаратури комп’ютера програмуються такими ж підходами із застосуванням тих же мовних інструментів програмування, набору ресурсів та функції.


 

Практичне завдання 1

 


Поделиться:

Дата добавления: 2015-08-05; просмотров: 54; Мы поможем в написании вашей работы!; Нарушение авторских прав





lektsii.com - Лекции.Ком - 2014-2024 год. (0.007 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав
Главная страница Случайная страница Контакты