Мова асемблера


Достоїнства і недоліки машинних мов

Кожен комп'ютер має своя машинну мову, тобто свою сукупність машинних команд, яка відрізняється кількістю адрес в команді, призначенням інформації, що задається в адресах, набором операцій, які може виконати машина і ін.

При програмуванні на машинній мові програміст може тримати під своїм контролем кожну команду і кожен елемент пам'яті, використовувати всі можливості наявних машинних операцій.

Але процес написання програми на машинній мові дуже трудомісткий і утомливий. Програма виходить громіздкою, важкооглядовою, її важко відлагоджувати, змінювати і розвивати.

Тому у разі, коли потрібно мати ефективну програму, яка в максимальному ступені враховує специфіку конкретного комп'ютера, замість машинних мов використовують близькі до них машино-орієнтовані мови (асемблери).

 

 

Мова асемблера — це машино-залежна мова низького рівня, в якому короткі мнемонічні імена відповідають окремим машинним командам. Використовується для представлення в легкій для читання формі програм, записаних в машинному коді.

Мова асемблера дозволяє програмістові користуватися текстовими мнемонічними (тобто що легко запам'ятовуються людиною) кодами, на свій розсуд привласнювати символічні імена регістрам комп'ютера і пам'яті, а також задавати зручні для себе способи адресації. Крім того, він дозволяє використовувати різні системи числення (наприклад, десяткову або шістнадцетерічну) для уявлення числових констант, використовувати в програмі коментарі і ін.

Програми, написані на мові асемблера, вимагають значно меншого об'єму пам'яті і часу виконання. Знання програмістом мови асемблера і машинного коду дає йому розуміння архітектури машини. Не дивлячись на те, що більшість фахівців в області програмного забезпечення розробляють програми на мовах високого рівня, таких, як Object Pascal або C, найбільш могутнє і ефективне програмне забезпечення повністю або частково написане на мові асемблера.

Мови високого рівня були розроблені для того, щоб звільнити програміста від обліку технічних особливостей конкретних комп'ютерів, їх архітектури. В протилежність цьому, мова асемблера розроблена з метою врахувати конкретну специфіку процесора. Отже, для того, щоб написати програму на мові асемблера для конкретного комп'ютера, важливо знати його архітектуру.

Як приклад приведемо програму на мові асемблера для IBM РС. Програма обчислює значення а = b + з для цілих а, b і з:

.MODEL SMALL .DATA b DW 5 c DW 3 a DW ? .CODE begin MOV AX,@DATA MOV DS,AX MOV AX,B ADD AX,C MOV A,AX MOV AH,4CH INT 21H END begin Директива .MODEL задає механізм розподілу пам'яті під дані і команди. Директива .DATA визначає початок ділянки програми з даними. Директиви DW задають типи змінних і їх значення. Директива .CODE визначає початок ділянки програми з командами. Команди MOV Ax,@data і MOV Ds,ax записують адресу сегменту даних в регістр DS (Data Segment). Для обчислення а використовуються команди MOV AX, B, ADD AX, C і MOV A, AX. У директиві END задана мітка першої виконуваної програми програми begin.

Переклад програми з мови асемблера на машинну мову здійснюється спеціальною програмою, яка називається асемблером і є, по суті, простим транслятором.