Системне програмування, доц. І.І. Мітасов, 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
01
пам’ять
-
Рис.2.1 – Адресація даних в пам’яті
0104
комірка 05612Н комірка 05613Н
молодший байт старший байт
Процесор вважає, що байти числових даних в пам'яті представлені в зворотній послідовності (у інверсному порядку) і обробляє їх відповідним чином. Не дивлячись на те, що ця властивість повністю автоматизована, слід завжди пам'ятати про цей факт при програмуванні і відладці асемблерних програм.