 
        
        Системне програмування, доц. І.І. Мітасов, 2010р. Лекція 2, 10 сторінок
Тема 1. Архітектура процесора і мова асемблера: Апаратне і програмне забезпечення соі
ЛЕКЦІЯ 2. Апаратно-програмні елементи СОІ
Питання лекції:
- Пам’ять, сегментація пам'яті, зміщення в сегментах.
- Операційна система, завантаження програм; 
- Стек; 
- Регістри процесора; 
 
 1. Пам'ять, сегментація пам'яті, зміщення в сегментах
Зазвичай мікрокомп'ютер має внутрішню пам'ять двох типів: перший тип – це постійна пам'ять (ПЗП) або ROM (read-only memory). ROM є спеціальною мікросхемою, з якої (як це випливає з назви) можливо лише читання. Оскільки дані в ROM спеціальним чином "прошиваються" вони не можуть бути модифіковані.
Основним призначенням ROM є підтримка процедур початкового завантаження: при включенні живлення комп'ютера ROM виконує різні перевірки і завантажує в оперативну пам'ять (RAM) дані з системної дискети (наприклад, DOS). Для цілей програмування найбільш важливим елементом ROM є BIOS (Basic Input/Output System) - базова система введення/виведення, яка буде розглянута пізніше. (Basic - тут звичайне англійське слово, а не мова програмування). ROM крім того підтримував інтерпретатор мови Бейсик і форми для графічних символів.
Пам'ять, з якою має справу програміст, є RAM (Random Access Memory) або ОЗП, тобто оперативна пам'ять, доступна як для читання, так і для запису. RAM можна розглядати як робочу область для тимчасового зберігання програм і даних на час виконання. Оскільки вміст RAM втрачається при відключенні живлення комп'ютера, необхідна зовнішня пам'ять для збереження програм і даних. Якщо встановлена дискета з операційною системою або є жорсткий диск типу вінчестер, то при включенні живлення ROM завантажував програми DOS в RAM. (Завантажувалась лише основна частина DOS, а не повний набір програм DOS). Потім необхідно було відповісти на запрошення DOS для установки дати і можна вводити запити DOS для виконання конкретних дій. Однією з таких дій може бути завантаження програм з диска в RAM. Оскільки DOS не займає всю пам'ять, то в ній є (зазвичай) місце для призначених для користувача програм. Призначена для користувача програма виконується в RAM і зазвичай здійснює виведення на екран, принтер або диск. Після закінчення можна завантажити іншу програму в RAM. Попередня програма зберігається на диску і нова програма при завантаженні може накластися (затерти) попередню програму в RAM.
У таблиці. 2.1 показана структура внутрішньої пам'яті для РС з процесором і8086. З першого мегабайта пам'яті 640 Кбайт – основна оперативна пам'ять, більша частина якої доступна для безпосереднього використання.
Таблиця 2.1 – Структура внутрішньої пам'яті для РС
| Початок (десятковий) 
 | Адреса (16-кова) 
 | Об'єм 
 | Призначення 
 | |
| 960 К | F0000 
 | 64 K 
 | Основний ПЗП системи 
 | |
| 768 К 
 | C0000 
 | 192 K 
 | Розширена область ПЗП 
 | |
| 640 К 
 | A0000 
 | 128 K 
 | Відеопам'ять ОЗП 
 | |
| 1,25 К 
 | 00500 | 
 | 
 640 К 
 | ОЗП 
 | 
| 1 К 
 | 00400 | 256 байт 
 | Область даних BIOS 
 | |
| 0 | 00000 | 1 К 
 | Таблиця векторів переривань 
 | |
Виділення пам'яті. Оскільки будь-який сегмент має об'єм до 64К і є чотири типи сегментів, то це передбачає загальну кількість доступної пам'яті RAM: 4 х 64К = 256К. Проте, допускається будь-яка кількість сегментів. Для того, щоб адресувати інший сегмент, необхідно всього лише змінити адресу в сегментному регістрі.
RAM (ОЗП) включає перші три чверті пам'яті, а ROM (ПЗП) -останню чверть. Зазвичай перші 256К RAM пам'яті знаходяться на системній платі. Оскільки одна область в RAM зарезервована для відеобуфера, то є 640К доступних для використання програмістом, принаймні в поточних версіях DOS. ROM починається за адресою 768К і забезпечує підтримку операцій введення/виведення на такі пристрої як контролер жорсткого диску. ROM, що починається за адресою 960К, управляє базовими функціями комп'ютера, такими як тест при включенні живлення, точкові образи графічних символів і автозавантажувач з дискет.
При подальших згадуваннях RAM будемо використовувати загальний термін - пам'ять.
Адресація. Всі комірки пам'яті (КП) пронумеровані послідовно від 00000Н - мінімальної адреси пам'яті. Процесор забезпечує доступ до байтів або слів в пам'яті. Розглянемо десяткове число 1025. Для запису в пам'ять 16-кового представлення цього числа - 0401Н потрібно два байти або одне слово. Воно складається із старшої частини - 04 і молодшій частині - 01. Система зберігає слово даних в КП в зворотній послідовності: молодший байт за меншою адресою, а старший – за більшою адресою. Припустимо, що процесор записує 0401Н з регістра в КП з адресами 05612Н і 05613Н. Це станеться таким чином:
 
	регістр
- 
				 04 0401 
 
  
	пам’ять
- 
				Рис.2.1 – Адресація даних в пам’яті 0104 
комірка 05612Н комірка 05613Н
молодший байт старший байт
Процесор вважає, що байти числових даних в пам'яті представлені в зворотній послідовності (у інверсному порядку) і обробляє їх відповідним чином. Не дивлячись на те, що ця властивість повністю автоматизована, слід завжди пам'ятати про цей факт при програмуванні і відладці асемблерних програм.
