
Лекція Основи програмування на асемблері
Мова програмування найповніше враховує особливості "рідного" мікропроцесора і що містить мнемонічні позначення машинних команд називається Асемблером. Програма, написана на Асемблері називається початковою програмою. Далі зупинимося на версії, званій Турбо Асемблер.
Розробка програми на Асемблері складається з наступних етапів:
1) Складання алгоритму у вигляді блок-схеми або структурного опису
2) Введення в ЕОМ тексту початкової програми PROG.ASM за допомогою редактора текстів. Ім'я PROG може бути довільним, а розширення ASM - обов'язково
3) Переклад (трансляція або асемблювання) початкової програми в машинні коди за допомогою транслятора TASM.EXE. На цьому етапі виходить проміжний продукт PROG.OBJ (об'єктний код). Виявлені при цьому синтаксичні і орфографічні помилки виправляються повтором пп.2 і 3
4) Перетворення за допомогою програми TLINK.EXE об'єктної коди PROG.OBJ у здійснимий код PROG.EXE або PROG.COM.
5) Виконання програми і її відладка починаючи з п.1, якщо зустрілися логічні помилки.
Текст програми на Асемблері містить наступні операції:
а) команди або інструкції
б) директиви або псевдооператори
в) оператори
г) зумовлені імена.
Дії обумовлені операціями перерахованими в пп.б,в,г виконуються на етапі трансляції, тобто є командами Асемблеру. Операції, звані командами або інструкціями виконуються під час виконання програми, тобто є командами мікропроцесору.
Формат команд та їх класифікація
Інструкція записується на окремому рядку і включає до чотирьох полів, необов'язкові з яких виділені [ ]:
[мітка:] |
мнемоника_команды |
[операнд(ы)] |
[;коментар] |
Влучна або символічну адресу містить до 31 символу з букв цифр і знаків ? @ . _ $. Причому цифра не повинна стояти першою, а крапка, якщо повинна бути першою.
Мнемоніка - скорочене позначення коди операції (КОП) команди, наприклад мнемоніка ADD позначає складання (addition).
Операндами можуть бути явно або двійкові набори, що неявно задаються, над якими проводяться операції.Операнди приводяться в одній з чотирьох систем числення і повинні закінчуватися символом b(B), про(O), d(D), h(H) для 2, 8, 10 або 16-ної СЧ. До шістнадцяткового числа додається зліва нуль, якщо воно починається з букви.
Система команд може бути класифікована по трьом основним ознакам -
довжина команди або число займаних нею байтів
функціональне призначення і
спосіб адресації.
Для МП 1810ВМ86 (8086) команда займає від одного до шести байтів. Першим байтом команди завжди є код операції, наприклад код команди INT XXh рівний CD(HEX).
За функціональною ознакою інструкції можна розбити на п'ять великих груп:
1) команди пересилки даних
2) арифметичні команди
3) логічні команди
4) команди переходів і
5) команди управління.
Існує п'ять основних способів адресації:
регістрова
безпосередня
пряма
непряма і
стекова.
Більшість решти способів адресації є комбінаціями або видозмінами перечисленнных.
У першому випадку операнд(ы) розташовуються в регістрах мікропроцесора (МП)наприклад по команді MOV AX,CX пересилається вміст CX в AX.
При безпосередній адресації операнд розташовується в пам'яті безпосередньо за КОП, інструкція MOV AL,0f5h записує число 245(f5) в регістр AL.
У разі прямої адресації за КОП слідує не сам операнд, а адреса елементу пам'яті або зовнішнього пристрою, наприклад команда IN AL,40h вводить байт даних із зовнішнього пристрою з адресою 40h.
Непряма адресація відрізняється від регістрової тим, що в регістрі зберігається адреса операнда, тобто по команді MOV AL,[BX] в акумулятор al буде записано число з елементу пам'яті з адресою, що зберігається в регістрі BX.
Стекова адресація проводиться до операндів розташованим в області пам'яті, званої стек.