
- •"Програмне забезпечення автоматизованих систем"
- •1. Оперативна пам'ять
- •2. Регістри
- •3. Прапори
- •1. Переходи
- •2. Безумовні переходи
- •3. Умовні переходи
- •4. Команди керування циклом
- •1. Подання даних арифметичні операції
- •2. Цілі числа без знака
- •3. Цілі числа зі знаком
- •4. Особливості виконання арифметичних операцій
- •5. Подання символів і рядків
- •6. Подання адрес
- •7. Директиви визначення даних
- •1. Структура команд. Виконавчі адреси
- •2. Формати команд
- •3. Запис команд в masm
- •1. Сегменти пам’яті, сегментні регістри
- •2. Сегментні регістри по домовленості
- •3. Сегментування, базування й індексування адрес
- •4. Програмні сегменти. Директива assume
- •5. Початкове завантаження сегментних регістрів
- •6. Посилання вперед
- •1. Строкові операції
- •1. Стек
- •2. Основні стекові команди
- •1. Організація процедур та переривань
- •2. Передача параметрів процедурам через регістри, через стек, через таблиці, через глобальні області
- •3. Передача параметрів по ссылке
- •4. Передача параметрів по повернутому значенню
- •5. Передача параметрів в стеку
- •6. Локальні змінні
- •1. Процеси і потоки
- •1.1 Розподіл часу між потоками
- •1.2 Динамічна зміна рівня пріоритету потоку
- •2. Робота із процесами й потоками в Win32 api
- •1. Адресний простір процесу
- •2. Керування віртуальною пам'яттю. Vmm
- •3. Файли даних, що проектуються на згадку
- •4. Взаємодія процесів через загальну область даних. Когерентність
- •5. Купи
- •1. Визначення вікна. Компоненти й параметри вікон
- •2. Клас вікна
- •3. Ієрархія вікон
- •1. Обмін даними між процесами
- •2. Вилучений виклик процедур (rpc - Remote Procedure Call)
- •3. Синхронізація потоків
- •1. Загальний порядок обробки виключень
- •2. Фільтри й оброблювачі виключень
- •1. Загальна структура системного реєстру
- •2. Робота додатків із системним реєстром
- •1. Файлові структури
- •2. Робота з томами й каталогами
- •3. Синхронна робота з файлами
- •4. Асинхронна робота з файлами
- •1. Системні файли ntfs
- •2. Master File Table (mft)
- •3. Цілісність даних і здатність до самовідновлення.
- •4. Організація й керування дисками
Міністерство освіти і науки України
Херсонський національний технічний університет
Кафедра інформаційних технологій
Конспект лекцій
з дисципліни "Системне програмування та операційні системи"
для студентів 3 курсу денної форми навчання
спеціальності 6.080403 –
"Програмне забезпечення автоматизованих систем"
Херсон, 2008
Конспект лекцій з дисципліни "Системне програмування та операційні системи" для студентів спеціальності 6.080403 "Програмне забезпечення автоматизованих систем". / А.А. Григорова, к. т. н., доцент, О.М. Ляшенко, викладач-стажер. – Херсон: Херсонський національний технічний університет, 2008. – с. 102.
Рецензентк.т.н., доцент. В.Й. Гнатюк
Затверджено
на засіданні кафедри
інформаційних технологій
Зав.каф Ходаков В.Є.
Відповідальний за випуск В.Є. Ходаков, д.т.н., професор, завідувач кафедри ІТ
Зміст
Лекція 1 Оперативна пам’ять, регістри, прапори
Лекція 2 Безумовні переходи. Умовні переходи. Команди керування циклом
Лекція 3-4 Типи даних у процесорі. Представлення цілих чисел. Знакові та беззнакові числа. Представлення символів та рядків. Кодування чисел. Арифметичні операції. Особливості виконання арифметичних операцій. Двоїчні арифметики. Представлення адрес. Директиви визначення даних
Лекція 5 Структура команд. Виконавчі адреси
Лекція 6 Сегментування
Лекція 7 Операції з рядками
Лекція 8 Стек
Лекція 9 Процедури
Лекція 10 Процеси і потоки
Лекція 11 Архітектура пам'яті в Win32 API
Лекція 12 Вікна
Лекція 13 Взаємодія процесів. Обмін даними між процесами. Синхронізація потоків
Лекція 14 Структурна обробка виключень
Лекція 15 Системний реєстр
Лекція 16 Робота з файлами
Лекція 17 Файлова структура NTFS
Лекція 18 Загальна модель безпеки в Microsoft Windows NT
Література
Лекція 1
Тема: Оперативна пам’ять, регістри, прапори
1. Оперативна пам'ять
Обсяг оперативної пам'яті ПК - 2^20 байтів (1 Мб). Байти нумеруються починаючи з 0, номер байта називається його адресою. Для посилань на байти пам'яті використаються 20 розрядні адреси: від 00000 до FFFFF (в 16-рич-ной системі).
Байт містить 8 розрядів (бітів), кожний з яких може приймати значення 1 або 0. Розряди нумеруються праворуч ліворуч від 0 до 7:
-і-і-і-і-і-і-і-і-
| | | | | | | | |
-і-і-і-і-і-і-і-і-
7 6 5 4 3 2 1 0
Байт - це найменша комірка пам'яті, що адресується. У ПК використаються й більші осередки - слова й подвійні слова. Слово - це два сусідніх байти, розмір слова - 16 бітів (вони нумеруються праворуч ліворуч від 0 до 15). Адресою слова вважається адреса його першого байта (з меншою адресою); ця адреса може бути парним і непарним. Подвійне слово - це будь-які чотири сусідніх байти (два сусідніх слова), розмір такого осередку 32 біта; адресою подвійного слова вважається адреса його першого байта.
Байти використаються для зберігання невеликих цілих чисел і символів, слова - для зберігання цілих чисел й адрес, подвійні слова - для зберігання "довгих" цілих чисел і т.зв. адресних пар (сегмент: зсув).
2. Регістри
Крім осередків оперативної пам'яті для зберігання даних (правда, короткочасного) можна використати й регістри - осередку, що входять до складу процесора й доступні з машинної програми. Доступ до регістрів здійснюється значно швидше, ніж до комірок пам'яті, тому використання регістрів помітно зменшує час виконання програм.
Всі регістри мають розмір слова (16 бітів), за кожним з них закріплене певне ім'я (AX, SP і т.п.). По призначенню й способу використання регістри можна розбити на наступні групи:
- регістри загального призначення (AX, BX, CX, DX, BP, SI, DI, SP);
- сегментні регістри (CS, DS, SS, ES);
- лічильник команд (IP);
- регістр прапорів (Flags).
(Розшифровка цих назв: A - accumulator, акумулятор; B - base, база; C - counter, лічильник; D - data, дані; BP - base pointer, покажчик бази; SI - source index, індекс джерела; DI - destination index, індекс приймача; SP - stack pointer, покажчик стека; CS - code segment, сегмент команд; DS - data segment, сегмент даних; SS - stack segment, сегмент стека; ES - extra segment, додатковий сегмент, IP - instruction pointer, лічильник команд.)
Регістри загального призначення можна використати у всіх арифметичних і логічних командах. У той же час кожен з них має певну спеціалізацію (деякі команди "працюють" тільки з певними регістрами). Наприклад, команди множення й розподілу вимагають, щоб один з операндів перебував у регістрі AX або в регістрах AX й DX (залежно від розміру операнда), а команди керування циклом використають регістр CX як лічильник циклу. Регістри BX й BP дуже часто використаються як базові регістри, а SI й DI - як індексні. Регістр SP звичайно вказує на вершину стека, апаратно підтримуваного в ПК.
Регістри AX, BX, CX й DX конструктивно влаштовані так, що можливо незалежний доступ до їх старшої й молодшої половин; можна сказати, що кожний із цих регістрів складається із двох байтових регістрів, позначуваних AH, AL, BH і т.д. (H - high, старший; L - low, молодший):
-і-і-і-і-і- -і-і-і-і-і- -і-і-і-і-і- -і-і-і-і-і-
AX | AH | AL | BX | BH | BL | CX | CH | CL | DX | DH | DL |
-і-і-і-і-і- -і-і-і-і-і- -і-і-і-і-і- -і-і-і-і-і-
15 8 7 0
Таким чином, з кожним із цих регістрів можна працювати як з єдиним цілим, а можна працювати й з його "половинками". Наприклад, можна записати слово в AX, а потім уважати тільки частина слова з регістра AH або замінити тільки частина в регістрі AL і т.д. Такий пристрій регістрів дозволяє використати їх для роботи й із числами, і із символами.
Всі інші регістри не діляться на "половинки", тому вважати або записати їхній уміст (16 бітів) можна тільки цілком.
Сегментні регістри CS, DS, SS й ES не можуть бути операндами ніяких команд, крім команд пересилання й стекових команд. Ці регістри використаються тільки для сегментування адрес (див. 1.4).
Лічильник команд IP завжди містить адреса (зсув від початку програми) тієї команди, що повинна бути виконана наступної (початок програми зберігається в регістрі CS). Уміст регістра IP можна змінити тільки командами переходу.