Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Кудря Схемотехника ( дополнить ).docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
97.98 Кб
Скачать

Укладач: канд. техн. наук, доцент Кудря

Володимир Григорович

Посібник розглянуто на засіданні кафедри інформа­ційних систем та мереж

протокол № 2 від " "25 вересня 2008 р.

Завідуюча кафедрою ІСМ,

д.т.н., . Князева И.О.

Затверджені методичною комісією факультету інформаційних технологій

протокол № від " " 2008 р

Голова методичної комісії,

директор ФІТ ' Корнієнко Ю.К.

ЗМІСТ

Передмова

4

Введення

5

Лабораторна робота №1. Дослідження етапів виконання

асемблерної програми

7

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

7

Завдання

12

Лабораторна робота №2. Дослідження циклічних алгоритмів

для формування та виводу на екран АБО І кодованих символів

13

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

13

Завдання

20

Лабораторна робота №3. Дослідження програмного управління

курсором через вкладені асемблерні цикли

20

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

21

Завдання

22

Лабораторна робота №4. Посимвольний ввід з клавіатури.

Аналіз натискання функціональних клавіш та їх комбінацій

24

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

24

Завдання

29

Лабораторна робота №5. Дослідження символьних рядків

(паролю), що вводяться з клавіатури

ЗО

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

ЗО

Завдання

35

Лабораторна робота №6. Асемблерні процедури трансляції

таблиці двійкових даних в символьну форму

37

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

37

Завдання

40

Лабораторна робота №7. Програмування на асемблері

файлового сервісу

42

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

42

Завдання

49

Передмова

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

У кожній роботі розглядається один із засобів системного програмування на асемблері для IBM PC і за допомогою його вирішується яке-небудь практичне завдання. Як інструмент для виконання робіт використовується пакет TASM фірми Borland, приклади наводяться відповідно до режиму компіляції MASM даного пакету.

Виконання кожної лабораторної роботи включає наступні етапи: ознайомлення з коротким теоретичним матеріалом; вибір варіанту завдання; продумування шляхів його рішення; втілення алгоритму за допомогою блок-схеми або програми на псевдомові; побудова ключових фрагментів асемблерної програми на чернетці; повна реалізація програми на робочому місці, включаючи коментування, настройку і відладку; оформлення протоколу, шо містить завдання і текст програми; захист протоколу в зазначений термін.

Введення

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

Команди процесора відповідають окремим мнемонічним інструкціям мови асемблера. Більшість з них орієнтована на обробку двійкових даних, що зберігаються в регістрах усередині процесора або в елементах основної пам'яті. Відповідно до характеру обробки виділяють групи команд: пересилки, арифметичні, логічні, зрушення, передачі управління та інші. Типи оброблюваних даних частіше зв'язуються з розмірами двійкових осередків, що відводяться для їх зберігання, і рідше — з їх смисловим значенням (числа, символи, адреси, команди). Асемблер на рівні інструкцій визначення даних підтримує типи "байт", "слово" (2 байти), "подвійне слово" (4 байти) та інші. При програмуванні в реальному режимі процесора (відповідному процесору 8086) основним типом є 16-бітове слово.

Регістри процесора — його внутрішні двобайтові осередки — використовуються в основному для короткочасного зберігання оброблюваних даних невеликого розміру. Використання регістрів при обробці даних переважно у зв'язку з швидким до них доступом. Звернення до регістрів здійснюється по іменах. Найбільш вільний доступ забезпечується до регістрів загального призначення: АХ, ВХ, СХ, ОХ, БІ, 01, БР і ВР.

Для тривалого розміщення масивів даних і команд програми служить основна (оперативна) пам'ять, що є сукупністю байтових осередків. Звернення до осередків пам'яті проводиться по унікальних номерах осередків — адресах. Мова асемблера дозволяє привласнювати адресам даних і команд імена. Сучасні реалізації асемблерів (зокрема ТАБМ) дозволяють іменувати також ділянки початкового тесту програми і тому є макроасемблерами.

При зверненні до пам'яті використовуються сегменти — ділянки пам'яті з відносною 16-бітовою адресацією. Повна адреса осередку визначається у вигляді пари 16-бітових адрес: сегментної адреси, що визначає положення сегменту в пам'яті, і відносної адреси, що визначає

положення осередку усередині сегмент}'. Сегментні адреси містяться в сегментних регістрах CS, DS, ES і SS і указують відповідно на сегменти команд, даних, додаткових даних і стека. Відносні адреси указуються відповідно до режимів адресації пам'яті. У разі прямої адресації відносна адреса указується у вигляді константи, що поміщається в код машинної команди. У разі непрямої адресації відносна адреса визначається за допомогою одного або двох регістрів загального призначення (у 8086 — тільки ВХ, BP, SI або DI). Повні адреси записуються у вигляді адресних пар "сегментна регистрютносительньїй адреса". В більшості випадків сегментний регістр не указується, мається на увазі за умовчанням.

Окрім регістрів загального призначення і сегментних процесор 8086 має два спеціальні регістри: прапорів (Flags) і покажчик команд (IP). Покажчик команд завжди містить відносна адреса команди (у сегменті команд), що підлягає виконанню. Прапорами є окремі біти, які можуть бути встановлені (= 1) або скинуті (= 0), відображаючи тим самим певний стан результату деякої дії (прапори CF, AF, OF, ZF, PF, SF) або задаючи режим роботи процесора (прапори DF, IF, TF),

Лабораторна робота №1

СТРУКТУРА ЕХЕ-ПРОГРАММЫ НА АСЕМБЛЕРІ. ПІДГОТОВКА ДО ВИКОНАННЯ

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

Початковий текст програми на мові асемблера повинен зберігатися в неформатованому текстовому файлі з коротким ім'ям (до 8 латинських символів) і розширенням ASM. Для його створення або редагування зручно скористатися редактором, вбудованим у файлову оболонку.

Обробка початкового файлу здійснюється програмами асемблер і редактор зв'язків (компонувальник). У пакеті TASM ці програми реалізовані у вигляді утиліт командного рядка (консолі). У простому випадку асемблер-транслятор здійснює переклад мнемонічних команд ASM-файла в об'єктний код (файл з розширенням OBJ), а редактор зв'язків перетворить OBJ-файл в здійснимий файл (ЕХЕ або СОМ). Ці операції називаються асемблюванням (або трансляцією) і компоновкою відповідно. Після завершення роботи асемблер і компонувальник виводять на екран діагностичні повідомлення в текстовому режимі.

Кожна інструкція початкового файлу записується в окремому рядку. У загальному випадку рядок включає ідентифікатор, інструкцію, операнди інструкції і коментарі. Окремі частини рядка розділяються табуляціями, так що утворюються відповідні колонки:

ідентифікатор інструкція операкди ;

коментар

Наприклад, обнуления регістрів даних процесора може виглядати

так: