- •Теоретичні відомості
- •1. Структура простої програми мовою асемблера. Формат кодування програми.
- •2. Основні директиви : segment , end, ends, proc, endp, assume.
- •3. Основні вимоги при створенні програми. Приклади простих програм мовою асемблера.
- •4. Трансляція програми. Опції компіляції та загальна характеристика.
- •6. Застосування програми налагодження для пошуку помилок.
- •Розв’язування задач за тематикою заняття
- •Завдання для самостійної роботи
- •Теоретичні відомості
- •1. Директиви визначення даних.
- •2. Директива повторення dup.
- •3. Сталі.
- •5. Представлення в пам’яті цілих чисел.
- •6. Команда пересилки даних mov.
- •7. Команди двійкового додавання та віднімання.
- •Команда зміни знаку операнда neg
- •8. Обчислення цілих арифметичних виразів.
- •Розв’язування задач за тематикою заняття
- •Завдання для самостійної роботи.
- •Теоретичні відомості
- •1. Команда безумовного переходу jmp. Типи адресів переходу short,near та far.
- •2. Команди організації циклів ( loop,loopn,loopnz). Команда loop. Керування циклом за ecx/cx.
- •Керування циклом за ecx/cx із врахуванням ознаки zf
- •3. Команди умовних переходів.
- •5. Команда lea
- •Команда роботи зі стеком push та pop
- •Розв’язування задач за тематикою заняття
- •Завдання для самостійної роботи.
- •Розв’язування задач за тематикою заняття
- •Завдання для самостійної роботи.
- •Логічні операції та операції зсувів.
- •2. Команди логічних операцій (and, test, or, xor, not).
- •3. Команди зсувів та циклічних зсувів.
- •Команди зсувів (sal, sar, shl,shr)
- •Команда зсуву логічного операнда вправо – shr
- •3.2 Команди циклічних зсувів (rol, ror ,rcl, rcr). Циклічний зсув операнда вліво - rol
- •Циклічний зсув операнда вправо ror
- •Циклічний зсув операнда вліво через ознаку переносу - rcl
- •Циклічний зсув операнда вправо через ознаку переносу – rcr
- •Бітові маски.
- •Розв’язування задач за тематикою заняття
- •Завдання для самостійної роботи
- •1. Множення цілих чисел
- •2. Ділення цілих чисел
- •3. Перетворення в регістрах
- •Алгоритм введення–виведення цілих чисел
- •Виведення цілих чисел.
- •Введення цілих чисел.
- •Розв’язування задач за тематикою заняття
- •Завдання для самостійної роботи.
- •Теоретичні відомості
- •Особливості команд обробки рядків.
- •Ознака df. Команди зміни ознаки ( cld, std ).
- •Префікси повторення( rep, repe, repz, repne, repze ).
- •Команди обробки символьних рядків
Розв’язування задач за тематикою заняття
Задача 1. Використовуючи директиву ASSUME пов’язати сегментні регістри із сегментами наступним чином : регістр CS із сегментом Сode, відповідно – DS із – Data, SS із – Stack, а регістр ES - не використовувати.
Розв’язання.
ASSUME CS:Сode, DS: Data, SS:Stack, ES:Nothing.
Задача 2. Написати фрагмент програми, ініціалізації сегментних регістрів DS та ES для використання із сегментами даних Code та DataExt відповідно.
Розв’язання.
mov AX,Code
mov DS,AX
mov AX,DataExt
mov ES,AX
Задача 3. Визначити, яка наведених послідовностей знаків не ідентифікатори мови асемблера:
.abc $abc1 _abc3 abc.a @abc @abc@a ?abc@
Розв’язання.
Не відповідає поняттю ідентифікатора мови асемблера послідовність знаків
abc.a. Знак крапка(.) в ідентифікатора дозволяється використовувати тільки на початку послідовності.
Завдання для самостійної роботи
Написати фрагмент програми, застосовуючи директиву ASSUME, використання сегментних регістрів:
CS, DS - Сode, SS - Stack, ES - не використовувати ;
CS, DS, SS - Сode, ES - не використовувати ;
CS, DS, SS, ES - Сode ;
CS - Сode, DS - Data, SS - Stack, ES - Data ;
CS - Сode, DS - Data, SS - Stack, ES - DataExt.
Написати фрагмент програми, ініціалізації сегментних регістрів DS та ES для використання із сегментами даних відповідно
Data та DataExt;
Сode та Data;
Data та Сode;
MyData та DataExt;
Data та MyData;
Визначити, яка наведених послідовностей знаків не ідентифікатором мови асемблера:
1) .abc $abc1 3abc abc@a @ab12c ;
2) aAbc $B1B1 aB%b abc@a @abc;
3) a77ew $B2Ba aB..b abc @43ab;
4) 4Ah ___B a__B @64@ @64avc;
5) aAbc _B*B a4B aor ?ab5;
Використовуючи текстовий редактор набрати приклад 1 та зберегти відповідно у файлі begin1.asm.
Здійснити компіляцію програми, створивши файл роздруку. З файлу роздруку виписати об’єктний код програми у шіснадцятковому вигляді.
Здійснити компонування програми(створити завантажувальний модуль).
Протестувати виконання за допомогою налагоджувача (td.exe).
Лабораторна робота № 2.
Тема: Директиви визначення даних. Команди MOV, ADD, SUB, INC, DEC.
Мета. Вивчення методів визначення даних та способи резервування полів пам’яті для даних. Ознайомлення із командами обробки двійкових даних. Розробка програм обчислення простих арифметичних виразів.
План заняття :
Директиви визначення даних.
Директива повторення DUP.
Сталі.
Директиви визначення сталих EQU та =.
Представлення в пам’яті цілих чисел.
Команда пересилки даних MOV.
Команди двійкового додавання та віднімання.
Обчислення цілих арифметичних виразів.
Література : [1] c. 76-88; [2] c. 49-55; [3] c. 42-54; [4] c. 21, 23-25,35,43,77-80,102,148,151-152.
Теоретичні відомості
1. Директиви визначення даних.
Загальна структура директив визначення даних
[ Ім’я ] Dn вираз [ ,вираз ]
Ім’я - це ідентифікатор визначає елементи даних, може бути відсутній. Визначення даних за допомогою імен полегшує розробку програм.
Dn - визначає розмір елементів даних в байтах : DB - байт, DW-слово, DD - подвійне слово, DP - 6 байтів, DQ -8 байтів та DT - 10 байтів.
вираз – задає початкове значення елементів. Вираз може складатися із числових сталих, символьних рядків або знака запитання(?). Знак запитання використовується для не визначених даних. Вираз також допускає повторення сталих за допомогою директиви – DUP. Елементи виразу розділяються комами.