Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

гос / sp-lect (1)

.pdf
Скачиваний:
18
Добавлен:
16.02.2016
Размер:
2.59 Mб
Скачать

МІНІСТЕРСТВО ОСВІТИ І НАУКИ, МОЛОДІ ТА СПОРТУ УКРАЇНИ КРЕМЕНЧУЦЬКИЙ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ

ІМЕНІ МИХАЙЛА ОСТРОГРАДСЬКОГО

Факультет електроніки і компютерної інженерії Кафедра компютерних та інформаційних систем

КОНСПЕКТ ЛЕКЦІЙ З НАВЧАЛЬНОЇ ДИСЦИПЛІНИ

«СИСТЕМНЕ ПРОГРАМУВАННЯ»

ДЛЯ СТУДЕНТІВ ДЕННОЇ ТА ЗАОЧНОЇ ФОРМ НАВЧАННЯ ЗА НАПРЯМОМ 6.050102 – « КОМП'ЮТЕРНА ІНЖЕНЕРІЯ» (У ТОМУ ЧИСЛІ СКОРОЧЕНИЙ ТЕРМІН НАВЧАННЯ)

КРЕМЕНЧУК 2012

Конспект лекцій з навчальної дисципліни «Системне програмування» для студентів денної та заочної форм навчання за напрямом 6.050102 – «Комп'ютерна інженерія» (у тому числі скорочений термін навчання).

Укладач: старш. викл. Ю.В. Зілінський Рецензент __________________________

Кафедра компютерних та інформаційних систем

Затверджено методичною радою Кременчуцького національного університету

імені Михайла Остроградського

 

 

 

 

 

Протокол №

від

«

 

»

 

 

 

20__ р.

Заступник голови методичної ради

 

 

 

доц. С. А. Сергієнко

 

ЗМІСТ

 

1 Вступ..........................................................................................................................

8

1.1

Структура курсу ................................................................................................

8

1.2

Призначення курсу............................................................................................

9

1.3

Використовувані програмні засоби.................................................................

9

1.3.1 Засоби розробки..........................................................................................

9

1.3.2 Інші програмні засоби..............................................................................

10

2 Засоби розробки......................................................................................................

10

2.1

Установка й настроювання засобів розробки...............................................

10

2.2

Склад асемблерів Microsoft Macro Assembler ..............................................

11

2.3

Склад і взаємозвязок файлів проекту...........................................................

12

2.4

Етапи розробки проекту .................................................................................

13

2.5

Структура вихідного тексту програми для асемблеру MASM...................

16

2.5.1 Вихідний текст 32-розрядного додатку ОС Windows NT ....................

17

2.5.2 Вихідний текст 64-розрядного додатку ОС Windows NT ....................

23

2.6

Трансляція і компонування проекту .............................................................

25

2.7

Основи використання засобів розробки........................................................

27

3 Програмна модель базового мікропроцесору......................................................

33

3.1

Режими роботи.................................................................................................

33

3.2

Типи оброблюваних даних.............................................................................

34

3.2.1 Апаратно підтримувані типи даних .......................................................

34

3.2.2 Логічна інтерпретація апаратних типів даних ......................................

35

3.2.3 Директиви визначення даних і резервування памяті ..........................

36

3.2.4 Особливості розміщеннями даних у памяті.........................................

39

3.3

Склад, розрядність і призначення регістрів .................................................

41

3.3.1 Регістри загального призначення ...........................................................

42

3.3.2 Сегментні регістри ...................................................................................

44

3.3.3 Регістр стану і управління.......................................................................

47

3.4

Способи адресації операндів машинних команд .........................................

48

3.4.1 Загальна структура машинної команди .................................................

48

3.4.2 Місце знаходження операндів машинних команд................................

49

3.4.3 Регістрова й безпосередня адресація......................................................

50

3.4.4 Адресація операндів у памяті ................................................................

51

3.4.4.1 Базова адресація ................................................................................

52

3.4.4.2 Базова адресація зі зміщенням.........................................................

53

3.4.4.3 Індексна адресація з масштабуванням............................................

53

3.4.4.4 Індексна адресація з масштабуванням і зміщенням......................

53

3.4.4.5 Базово-індексна адресація................................................................

54

3.4.4.6 Базово-індексна адресація зі зміщенням ........................................

54

3.4.4.7 Базово-індексна адресація з масштабуванням ...............................

54

3.4.4.8 Базово-індексна адресація з масштабуванням і зміщенням .........

55

3.4.4.9 Пряма адресація.................................................................................

55

3.4.5 Оператор уточнення типу покажчика на память.................................

56

3.5 Система команд процесору ............................................................................

57

3.5.1 Команди загального призначення ..........................................................

59

3.5.1.1 Команди переміщення даних ...........................................................

59

3.5.1.1.1 Команди пересилання................................................................

59

3.5.1.1.2 Команди обміну..........................................................................

60

3.5.1.1.3 Команди обміну зі стеком .........................................................

61

3.5.1.1.4 Команди завантаження адрес....................................................

64

3.5.1.2 Арифметичні команди ......................................................................

65

3.5.1.3 Логічні команди.................................................................................

73

3.5.1.4 Команди зрушення............................................................................

74

3.5.1.4.1 Команди логічного зрушення ...................................................

75

3.5.1.4.2 Команди арифметичного зрушення .........................................

75

3.5.1.4.3 Команди циклічного зрушення.................................................

76

3.5.1.4.4 Команди циклічного зрушення через прапор CF ...................

77

3.5.1.4.5 Команди подвійного зрушення.................................................

78

3.5.1.5 Команди передачі керування ...........................................................

80

3.5.1.5.1 Команди безумовної передачі керування ................................

82

 

3.5.1.5.2 Команди умовної передачі керування......................................

84

 

3.5.1.5.3 Команди управління циклом.....................................................

88

 

3.5.1.6 Команди обробки ланцюжків...........................................................

89

 

3.5.1.6.1 Особливості адресації ланцюжків ............................................

90

 

3.5.1.6.2 Команди завантаження елементів з ланцюжка.......................

91

 

3.5.1.6.3 Команди збереження елемента в ланцюжку ...........................

92

 

3.5.1.6.4 Команди сканування ланцюжка................................................

92

 

3.5.1.6.5 Команди порівняння ланцюжків ..............................................

93

 

3.5.1.6.6 Команди пересилання ланцюжків ............................................

93

 

3.5.1.6.7 Префікси повторення.................................................................

94

4 Обробка структурованих типів даних..................................................................

95

4.1

Одновимірні масиви........................................................................................

95

4.2

Багатовимірні масиви....................................................................................

101

4.3

Рядки символів...............................................................................................

105

4.4 Записи .............................................................................................................

109

4.5

Структури і обєднання ................................................................................

112

5 Процедурне програмування ................................................................................

117

5.1

Синтаксис оформлення підпрограми ..........................................................

118

5.2

Передавання параметрів в підпрограми......................................................

120

5.2.1 Передавання параметрів в регістрах загального призначення..........

120

5.2.2 Передавання параметрів через стек......................................................

123

6 Макрозасоби Microsoft Macro Assembler ...........................................................

127

6.1

Текстові макро...............................................................................................

129

6.2

Макровизначення ..........................................................................................

130

6.3

Вбудовані макрофункції і рядкові оператори ............................................

136

6.4

Макроблоки повторення...............................................................................

137

6.5

Директиви умовної трансляції і генерації помилок...................................

139

7 Модульне програмування....................................................................................

144

7.1

Концепція модульного програмування.......................................................

144

7.2

Конвенції виклику.........................................................................................

146

7.3 Конвенції іменування....................................................................................

147

7.4 Підпрограма як структурна одиниця модуля..............................................

148

7.5 Статичні бібліотеки.......................................................................................

153

7.5.1 Структура вихідного коду статичних бібліотек..................................

153

7.5.2 Звязування MASM із статичними бібліотеками................................

158

7.5.3 Звязування Microsoft Visual C++ із статичними бібліотеками.........

161

7.6 Динамічні бібліотеки ....................................................................................

163

7.6.1 Концепція динамічних бібліотек..........................................................

163

7.6.2 Методи звязування додатку із динамічними бібліотеками ..............

164

7.6.2.1 Раннє зв'язування.............................................................................

164

7.6.2.2 Пізнє зв'язування.............................................................................

166

7.6.2.3 Порядок пошуку DLL при звязуванні..........................................

167

7.6.3 Розробка динамічних бібліотек ............................................................

168

7.6.3.1 Структура вихідного коду динамічних бібліотек........................

168

7.6.3.2 Файли визначення модуля..............................................................

171

7.6.4 Звязування MASM із динамічними бібліотеками .............................

176

7.6.4.1 Раннє звязування............................................................................

176

7.6.4.2 Пізнє звязування ............................................................................

179

7.6.5 Звязування Microsoft Visual C++ із динамічними бібліотеками ......

183

7.6.5.1 Раннє звязування............................................................................

183

7.6.5.2 Пізнє звязування ............................................................................

185

8 Програмування математичного співпроцесору.................................................

187

8.1 Програмна модель математичного співпроцесору ....................................

187

8.1.1 Типи даних математичного співпроцесора .........................................

188

8.1.2 Склад і призначення регістрів співпроцесора.....................................

189

8.1.3 Система команд співпроцесора ............................................................

194

8.1.3.1 Команди управління........................................................................

194

8.1.3.2 Команди пересилання і обміну ......................................................

197

8.1.3.3 Базові арифметичні команди..........................................................

199

8.1.3.4 Команди обчислення трансцендентних функцій.........................

213

 

8.1.3.5 Команди завантаження констант...................................................

215

 

8.1.3.6 Команди порівняння і аналізу даних.............................................

218

9 Програмування розширення MMX.....................................................................

223

9.1

Програмна модель розширення MMX ........................................................

224

9.2

Типи оброблюваних даних...........................................................................

224

9.3

Склад, розрядність і призначення регістрів ...............................................

225

9.4

Система команд MMX ..................................................................................

226

9.4.1 Команди пересилання ............................................................................

227

9.4.2 Команди перетворення ..........................................................................

228

9.4.3 Арифметичні команди ...........................................................................

230

9.4.4 Логічні команди......................................................................................

238

9.4.5 Команди зрушення .................................................................................

239

9.4.6 Команди порівняння ..............................................................................

239

Список літератури ...................................................................................................

241

1 ВСТУП

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

1.BIOS (Base Input Output System).

2.Операційних систем.

3.Драйверів.

4.Засобів віртуалізації апаратних і програмних середовищ.

5.Засобів розробки програм: трансляторів, лінкерів, компіляторів, інтерпретаторів, налагоджувачів, дизасемблерів, завантажників.

6.Програм обслуговування й діагностики апаратної частини.

7.Систем захисту від несанкціонованого доступу і шкідливих програм. Кожний з перерахованих вище пунктів є самостійним напрямком

розробки системного програмного забезпечення й може бути предметом розгляду окремого багатогодинного курсу. Безумовно, деякі з цих напрямків є взаємозалежними.

1.1 Структура курсу

Курс «Системне програмування» читається в четвертому і п'ятому семестрах з наступним розподілом годин

 

Усього

Усього

 

Аудиторні заняття

Самостійна

Семестр

годин

годин

 

 

 

 

робота

Лекції

 

Лабораторні

Практичні

 

 

 

 

 

роботи

заняття

 

 

 

 

 

 

 

 

 

5

108

64

36

 

28

0

44

 

 

 

 

 

 

 

 

6

108

54

14

 

14

26

54

 

 

 

 

 

 

 

 

4-й семестр залік, 5-й семестр іспит.

 

 

 

 

1.2 Призначення курсу

Курс «Системне програмування» позиціонується як базовий для наступного вивчення курсів «Архітектура комп'ютерів», «Системне програмне забезпечення» і «Периферійні пристрої», які в свою чергу забезпечують вивчення інших дисциплін, таких як «Основи захисту інформації», «Захист інформації в комп'ютерних мережах» та інших.

Мета й основні завдання курсу вивчення основ організації обчислювальних процесів у комп'ютерах на апаратному рівні, вивчення принципів, покладених в основу функціонування програмних засобів комп'ютерів, знайомство із засобами розробки й придбання практичних навичок розробки елементів системних програм.

В курсі розглядаються питання розробки програмних модулів для ОС

Microsoft Windows NT з використанням Microsoft Macro Assembler та організації їх взаємодії з програмними модулями розробленими з використанням Microsoft Visual C/C++.

1.3 Використовувані програмні засоби

1.3.1 Засоби розробки

Основу використовуваних при вивченні курсу засобів розробки, тобто програм, які дозволяють створювати інші програми, складають:

1.Пакет асемблеру побудований на основі Microsoft Macro Assembler зі складу пакету для розробки драйверів Windows Driver Kits (http://www.microsoft.com/ whdc/Devtools/wdk/default.mspx).

2.Налагоджувач OllyDbg (http://www.ollydbg.de/) та/або засоби налагодження зі складу Debugging Tools for Windows (http://www. microsoft.com/whdc/DevTools/Debugging/default.mspx) або Windows Driver Kits.

3.Інтегроване середовище розробки програм RadAsm IDE (http://www. oby.ro/rad_asm/).

1.3.2 Інші програмні засоби

При роботі з рекомендованою літературою з курсу та іншими матеріалами, розміщеними на серверах кафедри, знадобиться додаткове програмне забезпечення, яке можна завантажити як безпосередньо з серверів кафедри, так і за наведеними далі посиланнями на першоджерела.

Для стиснення даних використовується вільно розповсюджуваний архіватор 7-Zip Ігоря Павлова (http://www.7-zip.org/).

Для читання електронної літератури в різних форматах рекомендується наступне вільно розповсюджуване програмне забезпечення:

1.WinDjView (http://windjview.sourceforge.net/ru) для читання документів у форматах DJV/DJVU.

2.FoxitReader (http://www.foxitsoftware.com) або PDF-XChange Viewer (http://www.tracker-software.com) для читання PDF-документів.

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

2 ЗАСОБИ РОЗРОБКИ

2.1 Установка й настроювання засобів розробки

Перепаковані інтегровані інсталятори, що містять увесь необхідний набір програмного забезпечення, яке використовується при вивченні курсів «Системне програмування», «Системне програмне забезпечення», «Периферійні пристрої» і, частково, «Архітектура компютерів» розташовано на FTP-сервері кафедри КІС за адресою ftp://192.168.3.252/pub/

uchebnaya/SPSSWPD/SOFTWARE/ASMSHELL.

В каталозі ASMSHELL серверу представлено декілька версій інсталяторів. Всі інсталятори призначені для «тихої» установки без взаємодії з користувачем і завдання яких не будь параметрів командного рядка. Установка за замовчуванням виконується в кореневий каталог диска С: і передбачає, що він є системним.

Соседние файлы в папке гос