- •Основи програмування на мові асемблер та знайомство з програмним забезпеченням для виконання лабораторних робіт
- •Теоретичні відомості
- •1.1 Особливості архітектури мікропроцесора типу Intel 80х86
- •Головні регістри мп Intel 8086 та їх призначення
- •1.2 Організація обчислень та узагальнена архітектура комп’ютера ibm pc
- •1.3 Основи програмування на мові асемблер та її синтаксис. Позначки, коди команд, операнди та директиви
- •1.4. Перетворення програми з тексту на мові асемблера у виконуваний модуль
- •1.5. Основи роботи з програмою afd
- •1.6. Основи роботи з програмою td
- •2. Порядок виконання роботи
- •4. Контрольні питання:
- •Сегментація програми. Сегменти коду, даних та стеку. Їх розташування в пам’яті еом. Директиви мови асемблера segment та ends.
- •Арифметичні та логічні операції мови асемблер
- •1. Теоретичні відомості
- •Директиви визначення даних
- •1.2. Команда перенесення даних
- •1.3. Арифметичні операції над двійковими числами
- •1.4. Команди логічних операцій
- •1.5. Команди зсуву бітів числа
- •1.6. Команди циклічного зсуву бітів числа
- •1.7. Структура асемблерних програм для com- та exe-модулів. Виклик процедур та стек
- •Таким чином, структура com-програми повинна бути такою:
- •2. Варіанти індивідуальні завдання для лабораторної роботи
- •3. Порядок виконання роботи
- •5. Контрольні питання
- •Структура програми на мові асемблер. Команди вітвлення та циклу
- •1. Теоретичні відомості
- •1.1 Механізми передачі керування та зміна послідовності виконання команд. Їх реалізація у мові асемблера. Типи адресації
- •1.2 Команда безумовного переходу jmp
- •1.3 Команда циклу loop
- •1.4 Команда порівняння cmp
- •1.5. Команди умовного переходу в мові асемблер
- •2. Варіанти індивідуальних завдань
- •3. Порядок виконання роботи
- •Виведення даних на монітор персонального комп’ютера
- •1. Теоретичні відомості
- •1.1. Представлення арифметичних та рядкових даних. Формати ascii та bcd. Команди корекції
- •1.2. Команди обробки рядкових даних мови асемблера
- •1.3. Переведення ascii-формату у двійковий формат та навпаки
- •Починаючи з молодшого байту обробляти число у лівому напрямку.
- •Вилучати трійки з шістнадцятирічних цифр кожного ascii-байту.
- •Множити отримані цифри на ваговий коефіцієнт кожного з розрядів та складати результати.
- •1.4. Введення та виведення даних в мові асемблера
- •1.5. Реалізація екранних операцій у мові програмування асемблер
- •2. Індивідуальні завдання для виконання лабораторної роботи №4
- •3. Порядок виконання роботи
- •5. Контрольні питання
- •Перелік рекомендованої літератури
- •Додаток 1 загальні вимоги до оформлення протоколів лабораторних робіт
- •Додаток 2 головні функції перериваннь bios та операційної системи ms-dos д2.1 переривання bios
- •Int 05h. Друк екрану.
- •Int 10h. Керування монітором (більш досконало функції переривання 10н описані у теоретичних відомостях до лабораторної роботи №4).
- •Int 11h. Запит списку приєднаного обладнання.
- •Д2.2 переривання ms-dos
- •Д2.3 головні функції перивання ms-dos int 21н
- •Додаток 3
1.4. Перетворення програми з тексту на мові асемблера у виконуваний модуль
Для того, щоб програма, написана на мові асемблера, могла бути виконана процесором, вона, як і програма на будь-якій іншій мові, окрім машинної, має бути трансльована (за допомогою асемблера) та скомпонована (за допомогою редактора зв’язків).
Для виконання лабораторних робіт у визначеному нижче вигляді можна застосовувати будь-який асемблер, що використовує синтаксис Intel. Можна використовувати асемблер з іншим синтаксисом, наприклад синтаксисом AT&T, але для цього буде потрібно внести відповідні зміни у наведені нижче приклади та зразки.
Тут ми розберемо послідовність дій, необхідну для трансляції і компонування програм за допомогою транслятора MASM.
Трансляція виконується командою
MASM ім’я_файлу
Інші параметри команди можна подивитися за загальним правилом за допомогою команди
MASM /?
Компонування EXE-програми здійснюється за допомогою команди
LINK об’єктний_модуль
Для компонування COM-програми необхідно додати ключ /TINY:
LINK /TINY об’єктний_модуль
Інші параметри команди можна подивитися за загальним правилом за допомогою команди
LINK /?
Довідку з ассемблера MASM та його мови можна отримати за допомогою команди
QH
1.5. Основи роботи з програмою afd
Програма AFD дозволяє відлагоджувати програми, які написані на мові асемблеру процесорів Intel 8086 та Intel 80286.
Основні можливості програми AFD:
Занесення до пам’яті ЕОМ виконуємих модулей та їх дізасемблювання (переведення тексту програми із двійкових машинних кодів на мову асемблера).
Виконання всієї занесеної програми або її частини.
Виконання окремих інструкцій програми у покроковому режимі.
Аналіз стану всіх регістрів процесора та комірок пам’яті прямого доступу.
Внесення програмістом змін до всіх реєстрів процесора та комірок пам’яті ЕОМ прямого доступу.
Головне меню відладчика AFD (рис. 3) являє собою систему з шести вікон та командної строки. За допомогою клавіш керування курсором та маркер строки переміщується по вікну програми-дізасемблера, а інші функції виконуються за допомогою функціональних клавіш F1...F10 (таблиця 6) та системи команд (таблиця 7).
Г
оловна
перевага відладчика AFD
-
його відносна простота та зручність
багатовіконного інтерфейсу. Ці переваги
особливо відчутні при відлагодженні
невеликих com-модулей.
Недоліки цієї програми - неможливість
проглядання робочого екрана програми,
що виконується, та неможливість
одночасного проглядання двох або більшої
кількості програм.
Таблиця 6. Призначення функціональних клавіш системи AFD
Клавіша |
Функція програми |
Що виконує |
F1 |
Step |
Виконання однієї інструкції програми, відміченої маркером у вікні дізасемблера. |
F2 |
Step Proc |
Повне виконання одного рядка програми. Наприклад, якщо це є викликання підпрограми, то вона буде виконана одразу повністю як одна інструкція. |
F3 |
Retrieve |
Повторення введених команд командної строки. Можна повторити до шести команд. |
F4 |
Help |
Виклик файлу допомоги. |
F5 |
Set BRK |
Встановлення точок зупинення. |
F6 |
- |
Клавіша незадіяна. |
F7 |
Up |
Перенесення маркера догори. |
F8 |
Dn |
Перенесення маркера донизу. |
F9 |
Le |
Перенесення маркера ліворуч. |
F10 |
Ri |
Перенесення маркера праворуч. |
Таблиця 7. Набір головних команд, які підтримуються відладчиком AFD
Команда |
Призначення |
1. L ім’я файла {адреса} |
Ввести файл до пам’яті ЕОМ. Адреса розміщення може бути вказана явно, але це не обов’язково. По замовченню адреса розташування програми буде CS:0100H. Число прочитаних байтів після завершення програми вказуєтьсся парою реєстрів BX:CX. |
2. W ім’я файла, адреса, довжина |
Записати дані до файлу. Початкова адреса повинна знаходитися у сегменті даних DS. Довжина файлу повинна бути у межах чотирьох шістнадцятирічних цифр. Всі параметри команди є обов’язковими. |
3. D адреса |
Показати коди команд, починаючи з вказаної адреси. Сегмент пам’яті визначається реєстром CS. З цієї ж адреси можна і виконувати програму. |
4. R реєстр = значення |
Занести число до регістра процесора. Наприклад, R А=100H - команда заносить до реєстру А число 100H. Якщо набрати R FL=значення - можна завантажити весь реєстр стану як один шістнадцятирічний реєстр. Але є можливим і окремий доступ до бітів реєстру стану через імена OF, DF, IF, SF, ZF, AF, PF, CF. |
5. Mn – адреса |
Показати перше або друге вікно стану пам’яті (значення параметру n 1 або 2), починаючи з вказаної адреси. |
6. G {стартова адреса}, {адреса зупинки} |
Виконати програму від стартової адреси до адреси зупинки. Якщо не вказана стартова адреса, то виконання програми почнеться з адреси, на який вона була припинена. Якщо не вказана адреса зупинки, то програма буде виконуватись до першої точки припинення або до кінця. Крім того, можна припинити виконання програми через натиснення клавіш Ctrl+Esc. |
7. QUIT {R} |
Повернення до DOS. Опція R робить програму afd резидентною. В цьому випадку її ініциалізація проводиться через натиснення клавіш Ctrl+Esc. |
