- •Основи програмування на мові асемблер та знайомство з програмним забезпеченням для виконання лабораторних робіт
- •Теоретичні відомості
- •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
3. Порядок виконання роботи
Проаналізувати індивідуальне завдання та побудувати блок-схему для запропонованого алгоритму.
Написати програму на мові асемблера, яка реалізує запропонований алгоритм. Початкові дані взяти з роботи №2.
Сформувати виконуваний модуль.
Запустити програму на обробку. Переконайтеся у тому, що вона коректно виконується (комп’ютер не «підвисає»).
Завантажити програму до відладчика AFD або TD та крок за кроком виконати усі її команди. Після виконання чергової команди аналізуйте стан кожного з регістрів процесору.
4. Зміст звіту
Блок-схема алгоритму роботи програми.
Роздрукована програма на мові асемблера.
Таблиця результатів з трьох колонок. До першої занести початковий код асемблерної програми файлу, до другої - її машинний код, до третьої - стан усіх регістрів процесору після її виконання. Для команд циклу фіксувати значення регістрів для кожної з ітерацій. Обов’язково фіксувати значення регістра стану.
Числове значення усіх комірок пам’яті, у яких розташовано програму. Пояснити, чому до них завантажено саме такі числа
Висновки за результатами роботи
Контрольні питання:
Яких стандартних помилок припускаються малодосвідчені програмісти при реалізації циклів та циклічних процесів?
Типи адресації, що підтримуються у мові асемблера, в яких асемблерних командах вони використовуються?
Команда безумовного переходу у мові асемблера, її зв’язок з типами адресації.
Команда циклу в мові асемблера, особливості її реалізації.
Команди умовного переходу. На які головні групи вони поділяються та з чим це пов’язано?
Виконайте завдання для перевірки № 1-8.
Студентами були написані такі два фрагменти програм, які працювали без помилок:
M1: MOV CX,12 SUB AX,BX DEC CX CMP CX,0 JG M1 |
M1: MOV CX,12 SUB AX,BX SUB CX,3 CMP CX,-5 JLE M2 CMP CX,-5 JG M1 M2: ADD AX,CX |
З’ясуйте, чи є написані програми оптимальними? Якщо ні - перепишіть ці програмні фрагменти з меншою кількістю асемблерних команд.
Л а б о р а т о р н а р о б о т а №4
Виведення даних на монітор персонального комп’ютера
Мета роботи: Навчитися виводити дані на монітор персонального комп’ютера за допомогою переривань MS-DOS та BIOS та через безпосереднє звертання до відеопам’яті.
Необхідні знання та практичні навички: Поняття переривання Класифікація переривань. Методи виведення даних на зовнішні пристрої. Представлення арифметичних та рядкових даних, формати ASCII та BCD. Алгоритми переведення двійкових даних до формату ASCII та навпаки. Команди обробки рядкових даних у мові асемблера. Реалізація екранних операцій через безпосереднє звертання до відеопам’яті та через переривання MS-DOS та BIOS [3,4,10,11].
