Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка_СистПрогр_ЛР.DOC
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
2.16 Mб
Скачать

Зміст

Загальні методичні вказівки……………………………………. 5

Лабораторна робота 1. Загальна архітектура ЕОМ. Ресурси мікропроцесора. Команди присвоєння. Відладчик програм Turbo Debugger……………………………………………………………… 6

Лабораторна робота 2. Команди пересилки даних між регістрами…………………………………………………………… 14

Лабораторна робота 3. Команди пересилки даних між регістрами та комірками пам’яті…………………………………. 18

Лабораторна робота 4. Логічні операції. Регістр прапорців… 21

Лабораторна робота 5. Арифметичні операції додавання, віднімання……………………………………………………………. 31

Лабораторна робота 6. Представлення числових значень….. 38

Лабораторна робота 7. Команди зсуву. Множення на константу…………………………………………………………….. 43

Лабораторна робота 8. Команди безумовного та умовного переходів…………………………………………………………….. 49

Лабораторна робота 9. Команди організації циклів ………… 60

Лабораторна робота 10. Команди множення, ділення………. 64

Лабораторна робота 11. Оболонка TASM 2.0………………… 69

Лабораторна робота 12. Підпрограми. Команди роботи зі стеком……………………………………………………………….. 75

Лабораторна робота 13. Вивід на екран…………………….. 81

Лабораторна робота 14. Управління клавіатурою…………. 84

Лабораторна робота 15. використання переривання MS-DOS

для роботи з файлами…………………………………………. 88

Лабораторна робота 16. Визначення конфігурації ЕОМ…… 92

Лабораторна робота 17. Сегменти пам’яті та способи адресації. команди передачі управління………………………….. 95

Лабораторна робота 18. Робота з маніпулятором “миша”… 102

Лабораторна робота 19. Робота з файловою системою FDD та HDD…………………………………………………………………... 106

Лабораторна робота 20. Робота із системним таймером (звуком)……………………………………………………………… 111

Лабораторна робота 21. Резидентні програми……………... 116

Перелік рекомендованих джерел……………………………. 121

Загальні методичні вказівки

Практикум містить лабораторні роботи з курсу “Системне програмування”. В теоретичних відомостях до виконання перших лабораторних робіт детально описуються дії, які необхідно виконати при проведенні роботи. В подальшому детальність опису порядку виконання роботи зменшується, зважаючи на досвід, отриманий студентами при виконанні попередніх робіт.

В процесі виконання лабораторних робіт необхідно реалізувати програму (на мовах Turbo Assembler, відповідно до заданого варіанту), яка забезпечує відповідну взаємодію з апаратним забезпеченням ЕОМ, що можна зробити за допомогою портів та відповідних функцій BIOS та DOS.

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

В результаті проведення робіт студент повинен закріпити отримані теоретичні знання, а також відповідним чином оформити звіт з матеріалами, отриманими при дослідженні складеної програми, який повинен містити:

- титульний листок;

- завдання на лабораторну роботу;

- блок-схему, або опис функціонування програми;

- тексти програм на мові Turbo Assembler;

- висновок.

Текст програми повинен містити коментарі та пояснення до основних функціональних блоків та частин програми.

ЛАБОРАТОРНА РОБОТА №1

ЗАГАЛЬНА АРХІТЕКТУРА ЕОМ. РЕСУРСИ МІКРОПРОЦЕСОРА. КОМАНДИ ПРИСВОЄННЯ. ВІДЛАДЧИК ПРОГРАМ TURBO DEBUGGER

    1. Мета роботи

Вивчити загальну будову ЕОМ та центрального процесора, ознайомитися з ресурсами, які надаються процесором для виконання команд, освоїти використання операцій присвоєння в мові Assembler та ознайомитися з середовищем для налагодження програм Turbo Debugger.

1.2 Теоретичні відомості

Основними елементами, з яких складається комп’ютер, є:

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

  2. Оперативний запам’ятовуючий пристрій (ОЗП, оперативна пам’ять) – лінійний набір однобайтних комірок пам’яті, які використовуються для збереження виконуваних програм та даних. Комірки оперативної пам’яті нумеруються починаючи з нуля. Порядковий номер комірки пам’яті називається її адресою.

  3. Пристрої вводу/виводу – призначені для обміну інформацією між власне комп’ютером та навколишнім середовищем.

  4. Системна шина (магістраль) – набір пристроїв та засобів для зв’язування ЦП, ОЗП та пристроїв вводу/виводу в одне ціле (комп’ютер).

Складовими частинами центрального процесора ЕОМ є:

  1. Арифметико-логічний пристрій – призначений для виконання арифметичних та логічних операцій над даними

  2. Дешифратор команд та блок керування – призначений для управління роботою ЦП та розпізнавання команд мікропроцесора

  3. Набір регістрів – ресурси мікропроцесора, які надаються програмам для виконання тих чи інших операцій. Фізично регістри процесора являють собою комірки пам’яті, які задіюються при виконанні команд процесора. Звернення до регістрів мікропроцесора відбувається по їх назві.

До набору регістрів процесора i8086 входять:

1 Регістри загального призначення – використовуються для зберігання операндів логічних та арифметичних команд, компонентів адрес, показників на комірки пам’яті. До цих регістрів відносяться:

AX (Accumulator register) – регістр-акумулятор. Використовується для зберігання проміжних даних. В деяких командах використання цього регістру обов’язкове.

BX (Base register) – базовий регістр. Використовується для збереження базової адреси деякого об’єкту в пам’яті.

CX (Count register) – регістр-лічильник. Використовується в циклічних командах. Його використання часто відбувається неявно.

DX (Data register) – регістр даних. Використовується для зберігання проміжних даних. В деяких командах використання цього регістру обов’язкове, а в деяких він використовується неявно.

SI (Source Index register) – індекс джерела. Використовується в так званих ланцюжкових операціях для збереження поточної адреси елемента в ланцюжку-джерелі.

DI (Destination Index register) – індекс отримувача. Використовується в ланцюжкових операціях для збереження поточної адреси елемента в ланцюжку-отримувачі.

SP (Stack Pointer register) – регістр показника стеку. Вміщує показник на вершину стека в поточному сегменті стека.

BP (Base Pointer register) – регістр показника бази кадру стека. Призначений для організації довільного доступу до даних всередині стека.

2 Сегментні регістри – використовуються для зберігання адреси сегментів пам’яті виконуваної задачі. До них належать:

CS (Code Segment register) – сегментний регістр коду. Використовується для зберігання адреси сегменту коду поточної задачі.

DS (Data Segment register) – сегментний регістр даних. Використовується для зберігання адреси сегменту даних поточної задачі.

SS (Stack Segment register) – сегментний регістр стеку. Використовується для зберігання адреси сегменту стеку поточної задачі.

3 Регістри стану та управління – це регістри, які вміщують інформацію про стан процесора і виконуваної програми та дозволяють змінювати цей стан. До них належать:

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

  • регістр покажчик команди IP

Всі регістри мікропроцесора i8086 є 16-розрядними. Проте, при роботі з регістрами AX, BX, CX та DX є можливість працювати окремо як з молодшими 8 бітами кожного з цих регістрів, так і зі старшими 8 бітами, тобто кожен з вище приведених регістрів поділяється ще на 2 частини. Регістр AX поділяється на AH (старші 8 біт регістра AX) та AL (молодші 8 біт регістра AX); регістр BX поділяється на BH (старші 8 біт регістра BX) та BL (молодші 8 біт регістра BX); регістр CX поділяється на CH (старші 8 біт регістра CX) та CL (молодші 8 біт регістра CX); регістр DX поділяється на DH (старші 8 біт регістра DX) та DL (молодші 8 біт регістра DX).

До регістрів FLAGS та IP не можна звертатися через їх ім’я. Для зміни значення цих регістрів існують спеціальні команди.

Для занесення деякого значення в регістр чи комірку пам’яті використовують асемблерну команду mov. Синтаксис команди:

mov <приймач> , <джерело>,

де <приймач> – регістр або комірка пам’яті, куди записується значення з джерела; <джерело> – регістр, комірка пам’яті або безпосереднє значення (числова константа).

Особливістю використання цієї команди, як і всіх двохоперандних асемблерних команд процесорів i8086 є те, що один з операндів команди обов’язково повинен бути або регістром, або числовою константою. Звідси можна побачити, що команда mov <комірка пам’яті> , <комірка пам’яті> заборонена.

Операнди команди mov повинні бути однакової розрядності. Для того, щоб явно вказати розрядність операнда в пам’яті використовуються такі модифікатори:

byte ptr[<адреса комірки>]- один байт, який знаходиться в комірці пам’яті заданої значенням [<адреса_комірки>];

word ptr[<адреса комірки>] - два байти починаючи з комірки пам’яті з адресами [<адреса комірки>];

dword ptr[<адреса комірки>] - чотири байти починаючи з комірки пам’яті з адресою [<адреса комірки>];

qword ptr[<адреса комірки>] - вісім байт починаючи з комірки пам’яті з адресою [<адреса комірки>].

Приклади використання команди mov:

mov al, 12h ;занести в регістр al число 12h

mov bh, byte ptr[100] ;занести в регістр bh число з комірки пам’яті з адресою 100

mov word ptr[200], cx ;занести в комірки пам’яті з адресами 200 та 201 число з регістра cx.

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

  • Вікно програми 1. В даному вікні відображаються команди поточної програми.

  • Вікно стану регістрів 2. В даному вікні відображається стан всіх регістрів процесора окрім регістру FLAGS.

  • Вікно сегменту даних 3. В даному вікні відображається дамп поточного сегменту даних 4.

  • Вікно стану прапорців регістру FLAGS 5.

  • Вікно сегменту стеку 6.

Для того, щоб внести команду у вікно програми, необхідно просто набрати цю команду на клавіатурі та натиснути клавішу Enter (одразу після натискання першої клавіші на клавіатурі з’являється вікно для введення команди). Введена команда з’явиться на місці команди, на яку був наведений курсор.

Для виконання однієї команди необхідно натиснути клавішу F7. Таке покомандне виконання програми називається трасуванням програми (trace program). Команда, яка стоїть на черзі виконання (тобто яка виконається при натисканні клавіші F7) позначена значком ►.

Рисунок 1.1 - Інтерфейс програми Turbo Debugger