
- •Основи програмування на мові асемблер та знайомство з програмним забезпеченням для виконання лабораторних робіт
- •Теоретичні відомості
- •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.2. Команда перенесення даних
У чотирирозрядних та вісьмирозрядних процесорах існувало багато асемблерних кодів для команд перенесення даних [1]. Наприклад, існували окремі команди для перенесення даних з одного регістру процесору до іншого, з комірки пам’яті до регістру та з регістру до комірки пам’яті. Але перехід до шістнадцятирозрядної шини даних дозволив реалізувати один асемблерний код команди MOV для будь-якої операції перенесення даних [4,7-9].
Формат команди:
{позначка} [код команди] [операнд-приймач], [операнд-джерело]
Увага! Розташування в цій команді приймача і джерела даних є стандартним для процесорів фірми Intel.
Використання команди MOV тісно пов’язано з видами адресації, що використовуються в асемблері. Відрізняють п’ять головних видів адресації.
1. Безпосередня адресація. Дані, що завантажуються, містяться безпосередньо у коді команди. Наприклад:
A4 DB ?; Зарезервувати комірку для змінної А1
...........................................................................................................
MOV AX,15H; Завантажити до акумулятору число 15H
MOV A4,15H; Завантажити до комірки пам’яті A1 число 15H
2. Неявна адресація. Джерело та приймач інформації записуються у самому коді команди. Це може бути назва регістру або посилання на комірку пам’яті. Наприклад:
A1 DB 100H; Завантажити до комірки пам’яті A1 число 100H
...............................................................................................................
MOV BX,A1; Завантажити до регістру BX вміст комірки A1
MOV AX,BX; Завантажити до регістру AX вміст регістру BX
3. Пряма адресація. Безпосереднє звертання до комірки пам’яті з визначеним номером. Цей вид адресації використовується при системному програмуванні для занесення даних до комірок пам’яті, вміст яких впливає на виконання системних процедур та загалом на представлення інформації в комп’ютері. Наприклад:
MOV [B8000], ‘A’; Завантажити символ А до відеопам’яті
При вирішенні несистемних математичних та логічних задач цим видом адресації програмісти майже не користуються. Замість нього в більшості випадків використовується безпосередня та неявна адресація.
4. Посередня адресація. При цьому виді адресації вміст одного регістру або регістрової пари процесору є вказівником на комірку пам’яті, що містить потрібну інформацію або в яку вона мусить бути поміщена. Посилання на поточну комірку пам’яті позначається символом $ (долар). Наприклад:
MOV BX, 100H
МOV CX, [BX]; Завантажити до регістру СХ число з сегменту даних зі зміщенням 100Н
;(повна адреса комірки пам’яті DS:100H )
Як можна побачити з наведеного прикладу, посилання на комірку пам’яті позначається в асемблері через квадратні дужки.
5. Адресація зі зміщенням. Як і посередня адресація, місить посилання на комірку пам’яті. Зміщення вказується як безпосередній операнд. Ефективно використовується разом з директивою визначення кількох констант. Наприклад:
A DB 1,2,3,4,5; Визначення масиву з кількох констант
.................................................................................................
MOV BX, A+2; Завантажити до регістру BX число 3