→ Пошук по сайту       Увійти / Зареєструватися
Знання Асемблер

Асемблер. Вступ

Мікропроцесори корпорації Intel і персональні комп'ютери на їх базі пройшли не дуже довгий в часі, але значний по суті шлях розвитку, впродовж якого кардинально змінювалися і можливості і навіть самі принципи їх архітектури. В той же час, внесення до мікропроцесора принципові зміни, розробники були вимушені постійно мати на увазі необхідність забезпечення сумісти мости нових моделей із старими, щоб не відлякувати потенційного покупця перспективою повної заміни освоєного або розробленого їм програмного забезпечення. В результаті сучасні мікропроцесори типу Pentium, забезпечуючи такі можливості, як 32-бітову адресацію майже необмежених об'ємів пам'яті, багатозадачний режим з одночасним виконанням декількох програм, апаратних засоби захисту операційної системи і прикладних програм один одного, багатий набір додаткових ефективних команд і способі адресації, в той же час можуть працювати (і часто працюють) в режимі перших мікропроцесорів типу 8086, використовуючи всього лише 1 мегабайт оперативної пам'яті, 16-розрядні операнди (тобто числа в діапазоні до 216 - 1 = 65535) і обмежений склад команд. Оскільки програмування на мові асемблера безпосередньо зачіпає апаратні можливості мікропроцесора, перш за все слід з'ясувати, в якому ступені програміст може використовувати нові можливості мікропроцесорів в своїх програмах і які проблеми програмної несумісності можуть при цьому виникнути.

Перші персональні комп'ютери корпорації IBM, що з'явилися в 1981 р. і отримали назву IBM РС, використовували як центральний обчислювальний вузол 16-розрядний мікропроцесор з 8-розрядною зовнішньою шиною Intel 8088. Надалі в персональних комп'ютерах почав використовуватися і інший варіант мікропроцесора, 8086, який відрізнявся від 8088 тим, що був повністю 16-розрядним. З тих пір його ім'я стало прозивним, і в програмах, що використовують тільки можливості процесорів 8088 або 8086, говорять, що вони працюють в режимі 86-го процесора.

У 1983 р. корпорацією Intel був запропонований мікропроцесор 80286, в якому був реалізований принципово новий режим роботи, що отримав назву захищену. Проте процесор 80286 міг працювати і в режимі 86-го процесора, який почали називати реальним.

Надалі на зміну процесору 80286 прийшли моделі 80386, i486 і, нарешті, різні варіанти процесора Pentium. Всі вони можуть працювати і в реальному, і в захищеному режимах. Хоча кожна наступна модель була значно досконало попередньою (зокрема, майже на два порядки зросла швидкість роботи процесора, починаючи з моделі 80386 процесор став 32-розрядним, а в процесорах Pentium реалізований навіть 64-розрядний обмін даними з системною шиною), проте з погляду програміста всі ці процесори вельми схожі. Основною їх якістю є наявність двох режимів роботи - реального і захищеного. Строго кажучи, в сучасних процесорах реалізований ще і третій режим - віртуального 86-го процесора, або V86, проте в плані використання мови асемблера цей режим не відрізняється від звичайного режиму 86-го процесора, ми його стосуватися не будемо.

Реальний і захищений режими перш за все принципово розрізняються способом звернення до оперативної пам'яті комп'ютера. Метод адресації пам'яті, використовуваний в реальному режимі, дозволяє адресувати пам'ять лише в межах 1 Мбайт; у захищеному режимі використовується інший механізм (із-за чого, зокрема, ці режими і виявилися повністю несумісними), що дозволяє звертатися до пам'яті об'ємом до 4 Гбайт. Інша важлива відмінність захищеного режиму полягає в апаратній підтримці багатозадачності з апаратним же (тобто реалізованою в самому мікропроцесорі) захистом завдань один від одного.
Реальний і захищений режими мають пряме відношення до роботи операційної системи, встановленої на комп'ютері.

В даний час на персональних комп'ютерах типу IBM РС використовуються в основному два класи операційних систем (обидва - розробки корпорації Microsoft): однозадачна текстова система MS-DOS і багатозадачна графічна система Windows. Операційна система MS-DOS є системою реального режиму; іншими словами, вона використовує тільки засоби процесора 8086, навіть якщо вона встановлена на комп'ютері з процесором Pentium. Система Windows - це система захищеного режиму; вона значно більш повно використовує можливості сучасних процесорів, зокрема, багатозадачність і розширений адресний простір. Зрозуміло, система Windows не могла б рабо-тать з процесором 8086, оскільки в нім не був реалізований захищений режим.

Відповідно двом типам операційних систем, і все програмне забезпечення персональних комп'ютерів підрозділяється на два класи: програми, призначені для роботи під управлінням MS-DOS (їх часто називають додатками DOS) і програми, призначені для системи Windows (додатки Windows). Природно, додатки DOS можуть працювати тільки в реальному режимі, а додатки Windows - тільки в захищеному.

Таким чином, вирази "програмування в системі MS-DOS", "програмування в реальному режимі" і "програмування 86-го процесора" фактично є синонімами. При цьому слід підкреслити, що хоча процесор 8086, як мікросхема, вже давно не використовується, його архітектура і система команд цілком увійшли до сучасних процесорів. Лише відносно невелике число команд сучасних процесорів спеціально призначені для організації захищеного режиму і розпізнаються процесором, тільки коли він працює в за щенном режимі. Тому вивчення мови асемблера доцільно починати з вивчення архітектури процесора 8086 або, точніше, того гіпотетичного процесора, який як би об'єднує частину архітектури засобів сучасних процесорів, призначених для використання в реальному режимі, і відповідних архітектурі процесора 8086. називатимемо цей гіпотетичний процесор МП 86. Вивченню архітектури і програмування МП 86 присвячено перші три розділи.

Ділення програм на додатки DOS і додатки Windows вичерпують питання про можливі типи програм. Річ у тому, що ряд додаткових засобів, наявних в сучасних процесорах, цілком можна використовувати і в реальному режимі (хоча сама операційна система MS-DOS, розроблена ще в епоху процесора 8088, ними користується). До цих засобів відноситься розширений склад команд процесорів і, головне, їх 32-розрядна архітектура.

Сучасні процесори (починаючи з 80386), на відміну від свого попередника 8086, є 32-розрядними. Це дає можливість програмістові використовувати в програмі 32-разядниє операнди (тобто числа в діапазоні до 232-1= 4294 967 295), що у багатьох випадках дозволяє спростити алгоритм програми і підвищити її швидкодію. Програма, що припускає працювати з 32-розрядними операндами, повинна мати в своєму складі одну з директив .386, .486 або .586, які дозволяють транс тору використовувати додаткові засоби відповідного процесі. Включення в програму цієї директиви одночасно відкриває доступ і до додаткових команд і способів звернення до пам'яті, відсутнім в процесорі 8086, що також розширює можливості програмування. Ці засоби описані в розділі, присвяченою розширеним можливостям сучасних процесорів.

Особлива ситуація виникає, якщо програміст хоче використовувати не тільки 32-бітові дані, але і 32-розрядні адреси елементів пам'яті. Програми такого роду називаються 32-розрядними застосуваннями (на відміну від 16-розрядних, в яких всі адреси 16-розрядні, хоча дань може мати розмір 32 битий). Для створення 32-розрядного застосування до складу програми необхідно включити (у відповідному місці) описувач use32. Проте слід мати на увазі, що MS-DOS не дозволяє пускати 32-розрядні застосування, які, таким чином, винні 6ить додатками Windows. В той же час додатку Windows зазвичай складаються не на мові асемблера, а на одній з мов високого рівня - Паськаль, З або C++, де тип створюваної програми (16-розрядна або 32-розрядна) визначається налаштуваннями компілятора. Тому питання розробки 32-розрядних застосувань на мові асемблера не увійшли до справжньої книги.

Як відомо, система Windows допускає запуск додатків DOS (програм реального режиму), організовуючи для цього так званий сеанс DOS, в якому програми фактично виконуються в режимі 86-го процесора. Окрім цього, в Windows передбачена можливість завантаження комп'ютера в режимі емуляції DOS, коли комп'ютер працює під уп-равленієм варіанту DOS, вбудованого в систему Windows. Нарешті, грудку-п'ютер можна конфігурувати так, щоб він дозволяв завантажувати як Windows, так і "чисту" DOS (наприклад, MS-DOS 6.22), без всякої Windows. Яким варіантом завантаження комп'ютера користуватися при опрацьовуванні справжньої книги - справа смаку і звичок читача. Приклади, що наводяться в книзі, в своїй більшості прості, не зачіпають якихось спеціальних системних засобів і працюватимуть в будь-якому режимі. Останнє зауваження не відноситься тільки наприклад програми захищеного режиму, що приводиться в гл. 4, а також до обробника переривань від миші, що розглядається в гл. 3. Ці програми слід запускати на "чистій" DOS.

загрузка...
Сторінки, близькі за змістом