Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
lect1_ass.DOC
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
318.46 Кб
Скачать

Лекція 1

Курс “Програмування на Асемблері” розрахований на 2 семестри 54 годин лекцій та 68 годин лабораторних занять, а також передбачено виконання курсової роботи у другому семестрі навчання.

Література: 1) П.И. Рудаков, К.Г. Финогенов Язык АССЕМБЛЕРА: уроки программирования. М., ДИАЛОГ-МИФИ, 2001. – 640с., 2) Т.Сван. Освоение Turbo Assembler. К.-М.-С.Пб. Диалектика. 1996. – 544с., 3) В.Юров. ASSEMBLER. Учебник. С.Пб. Питер, 2001. – 624 с., 4) Зубков С.В. ASSEMBLER для DOS, Windows и UNIX. – М.: ДМК Пресс, 2000. 608 с., 5) В.И.Пустоваров. Ассемблер: программирование и анализ корректности машинных программ. – К. – BHV, 2000 – 480 с..

Мова Асемблер відноситься до машинно-орієнтованих мов програмування і являє собою символічну мову машинних команд МП. Асемблер використовується компіляторами мов високого рівня (системні програми, що перетворюють програму на мові програмування високого рівня в низку машинних команд) як проміжна мова. Дуже часто при створенні програм найбільш критичні частки цих програм створюються на мові Асемблер. Таким чином програми, що створені на деяких мовах програмування, можуть об’єднуватися (компонуватися) з асемблерними вставками. Для того, щоб створити програму на мові Асемблер, необхідно добре знати архітектуру і систему команд МП, на основі якого створений персональний комп’ютер. Технологія створення програм на мові Асемблер складається з таких кроків: створення тексту програми на мові Асемблер, обробка цієї програми транслятором з Асемблера, компоновка окремих асемблерних модулів та бібліотечних модулів у єдиний програмний модуль, що може бути використаний для виконання. Готова програма може бути налагоджена за допомогою спеціальної програми налагоджувача. При цьому створена програма може бути виконана покомандно, або трасуватись. В результаті виявляються помилки, після чого вносяться зміни у програму до остаточного налагоджування. Схематично цей процес може бути зображений у вигляді, як показано малюнку.

Архітектура МП

На макрорівні комп’ютер складається з процесора, пам’яті та пристроїв введення/виведення. Щоб функціонувати різні компоненти мають взаємодіяти між собою. Виділимо такі 4 основні структурні компоненти комп’ютера:

Мікропроцесор. Здійснює контроль за діями комп’ютера. В ньому виконуються усі операції обробки даних.

Головна пам’ять. В ній зберігається коди команд (програми) та дані. Ця пам’ять є тимчасовою, її називають оперативною, дійсною. Тимчасова вона тому, що при вимиканні живлення уся інформація в ній зникає.

Пристрої введення/виведення. Здійснюють обмін даними між комп’ютером та зовнішніми пристроями (термінали, зовнішня пам’ять на дисках, комунікаційне обладнання).

Системна шина. Набір електричних ліній в сукупності з певними структурами та механізмами, що забезпечують взаємодію між МП, головною пам’яттю та зовнішніми пристроями введення/виведення.

З точки зору програміста процесор складається з кількох груп регістрів в якому виконуються усі команди МП, арифметико-логічного пристрою, (регістри загального призначення, через які виконуються основні команди; регістри управління та стану: програмний лічильник IP, регістр прапорців, який зберігає інформацію про стан виконання попередніх команд; сегментні регістри для управління системною шиною; додаткові регістри управління: для управління віртуальною пам’яттю, кеш-пам’яттю, перемиканням задач, прискорення вибірки команд, тощо).

ПУ – він видає комп’ютеру усі необхідні тактові сигнали, та сигнали управління; пристрою управління системою шиною, що призначений для обрахування дійсної (реальної) адреси для кодів команд та даних і зв’язком МП з головною пам’яттю та зовнішніми пристроями через так звані контролери введення/виведення. МП серії Intel останніх моделей мають такі режими роботи: режим реальних адрес (в цьому режимі працює операційна система MS DOS), захищений режим віртуальних адрес (в цьому режимі працюють операційні системи (Windows, Linux та інші)) та режим віртуального процесора V 86. Останній режим призначений для запуску програм, що створені для режиму реальних адрес, в захищеному режимі. Ці програми були створені в основному для МП І8086 – ранньої моделі МП. Тому розгляд системи команд ми розпочнемо саме з цієї моделі.

Отже, сучасні ПК являють собою апаратну реалізацію машин Фон Неймана (за прізвищем відомого німецького математика), яка передбачає розміщення кодів команд (програми) та даних різного типу в головній пам’яті. Ця модель передбачає також послідовне виконання програми по командно, одна за одною. І так розглянемо коротко основні складові МП.

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

AX - регістр-акумулятор

DX - регістр даних

CX - регістр-лічильник

BX - базовий регістр

BP - додатковий базовий регістр

SP – регістр-вказівник стеку

SI - регістр індексу джерела

DI - регістр індексу приймальника

IP - регістр – лічильник команд

FLAGS - регістр прапорців

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

CS – сегментний регістр команд

DS - сегментний регістр даних

ES – додатковий сегментний регістр даних

SS - сегментний регістр стеку

FS - системний сегментний регістр даних

GS – додатковий системний сегментний регістр даних

В реальному режимі роботи мікропроцесора в сегментному регістрі записані початкові адреси блоку (сегменту) програми, сегменту стеку або сегменту даних.

При цьому фізична адреса формується за схемою:

Лічильник команд, регістри прапорців

Регістр-лічильник команд IP (PC) вказує на адесу поточної команди. Після виконання команди поточної команди він збільшується на довжину поточної команди в разі природного виконання команд. В разі виконання команд розгалуження в ньому примусово встановлюється адреса переходу.

В регістрі прапорців FLAFS існує 6 ознак результату, які встановлюються після виконання попередніх команд, а також 3 прапорці, які встановлюються програмно. Призначення цих прапорців розглянемо пізніше.

O

D

I

T

S

Z

A

P

C

перенос

парність

допоміжний перенос

нуль

знак

покрокове виконання

заборона/дозвіл зовнішнього переривання

напряму

переповнення

АЛП – використовується для виконання в ньому основних команд. У найпростішому вигляді обробка команд здійснюється через такі дві стадії: вибірка команд з оперативної пам’яті та запуск команд на виконання. Виконання програми, таким чином являє собою повторення процесу вибірки команд та їх наступне виконання. Для виконання однієї команди тож знадобиться кілька так званих циклів, які являють собою послідовність мікрокоманд в залежності від семантики самої команди. Набір дій, що виконається для виконання однієї команди має назву машинного циклу. Спрощено виконання програми за машинний циклом має такий вигляд.

Після виконанні чергової поточної команди лічильник команд збільшується на довжину цієї команди в байтах. Наприклад після виконання деякої команди, довжина якої складає 4 байти, за 16-річною адресою1000Н лічильник програм IP збільшується на 4 і буде містити значення 1004Н. На загал схема виконання команди показана на малюнку нижче.

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

Пристрій управління системною шиною. Призначений для формування фізичних адрес при доступі до команд та даних.

Прямий доступ до пам’яті (ПДП, DMA). Реалізований для швидкого обміну даними між швидкісними зовнішніми пристроями (дисками) та оперативною пам’яттю. При цьому обмін даними здійснюється безпосередньо між процесором та диском через спеціальну мікросхему – контроллер DMA. В процесі обміну в контроллер DMA заноситься з основного процесора адреса буфера в оперативній пам’яті, через який здійснюватимиться обмін, номер циліндра, номер поверхні та номер сектора на диску.

Співпроцесор. Головна оперативна пам’ять складається з множини комірок (по одному байту), що пронумеровані. Ці номери мають назву фізичних адрес і використовуються для доступу до комірок даних в кодах команд.

Технологія створення програм на мові Assembler:

  1. Створення тексту програми в текстовому редакторі.

  2. Обробка цієї програми за допомогою транслятора мови Assembler.

  3. Компонування окремих модулів в єдиний модуль для виконання (.exe або .com).

  4. Налагодження програми за допомогою налагоджувача. (TD)

  5. Виявлення помилок. Якщо помилок немає, то закінчення.

  6. Внесення змін у текст програми.

  7. Перехід на перший крок.

Файл LST – файл лістинга програми (це текстовий файл в якому розташовуються оператори програм, а також коди операторів разом з їх адресами).

.

АРХІТЕКТУРА МІКРОПРОЦЕСОРА

На рівні блоків комп’ютер складається з мікропроцесора, пам’яті та пристроїв введення/виведення. Щоб функціонувати різні компоненти комп’ютера мають взаємодіяти між собою.

Основні складові:

  1. Мікропроцесор (здійснює контроль за діями комп’ютера. В ньому виконуються всі операції по обробкам даних)

  2. Основна пам’ять (призначена для розміщення кодів машинних команд та даних, є тимчасовою – до вимкнення живлення – також має назву оперативна пам’ять)

  3. Пристрої введення/виведення (здійснюють обмін даними через спеціальні мікросхеми (контролери) введення/виведення між процесором та зовнішніми пристроями)

  4. Системна шина (являє собою набір керованих електричних ліній у сукупності з певними структурами та механізмами, що забезпечують взаємодію між мікропроцесором та зовнішніми пристроями)

Системна шина складається з 3 шин:

  • Шина адреси. По ній передається адреса комірки в оперативній пам’яті.

  • Шина даних. По ній передаються дані у мікропроцесор або з нього.

  • Шина управління, яка видає певний набір синхронізуючих сигналів та сигналів управління.

.

.

З точки зору програміста мікропроцесор (МП) складається з кількох регістрів загального призначення (через які виконуються основні машині команди), регістрів управління та регістрів стану: лічильних команд IP, FLAGS – регістр прапорців, сегментних регістрів (CS, SS, DS, ES, FS, GS) через які визначається початкова адреса блоку або сегмента програми даних та стеку, додаткові регістри –

  • для управління віртуальною пам’яттю;

  • для управління КЕШ-пам’яттю;

  • для управління перемикання задач;

  • група регістрів налагоджування та інші.

Пристрої управління – видають усі необхідні тактові сигнали та сигнали управління для пристроїв управління системних шин – для обрахування адреси коду команди в пам’яті або коду даних в пам’яті.

Цей пристрій здійснює зв’язок між головною або основною пам’яттю та мікропроцесором (МП).

Мікропроцесори серії INTEL мають такі режими роботи:

  1. Режим реальних адрес. В цьому режимі працює операційна система MS–DOS;

  2. Захищений режим віртуальних адрес (працюють багатозадачні ОС (Windows, Linux);

  3. Режим призначений для запуску програм, що створений в режимі реальних адрес в захищеному режимі. Такі програми були створені для ранніх процесорів INTEL 8086 – (16-ти розрядний мікропроцесор. Арифметико-логічний пристрій обробляє дані не більше як у 16 розрядів.

Окремим блоком стоїть співпроцесор (СП), що являє собою апаратну реалізацію бібліотеки стандартних підпрограм обробки даних з плаваючою крапкою.

Сучасні персональні комп’ютери (ПК) являють собою апаратну реалізацію моделі фон Неймана. Ця модель передбачає наявність загальної пам’яті, в якій розміщуються коди команд та дані різного типу. Ця модель також передбачає послідовність виконання програми (команда за командою). Команди мають різну довжину і після виконання чергової команди лічильник збільшується на довжину поточної команди, тобто маємо природний порядок виконання команд.

Існує спеціальна група команд, яка порушує послідовний порядок: безумовні переходи, умовні переходи, звернення до підпрограм та повернення з них, переривання.

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

EАХ, АХ (AH, AL) – регістр-аккумулятор (має доступ до молодшого та старшого байтів);

EDX, DX (DH, DL) – регістр даних;

ECX, CX (CH, CL) – регістр-лічильник;

EBX, BX (BH, BL) – перший регістр бази – базовий регістр має доступ до молодших та старших байтів;

EBP, BP – другий регістр бази;

ЕSP, SP – регістр-вказівник верхівки стеку;

ЕSI, SI – індексний регістр операнду джерела;

ЕDI, DI – індексний регістр операнду приймальника.

В лічильнику команд ЕІР (ІР) розміщається адреса поточної команди.

Регістр прапорців:

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]