Page 236 - 4505
P. 236
Але процес написання програми на машинній мові дуже трудомісткий і утомливий.
Програма виходить громіздкою, важкооглядовою, її важко відлагоджувати, змінювати і
розвивати.
Тому у разі, коли потрібно мати ефективну програму, яка в максимальному ступені
враховує специфіку конкретного комп'ютера, замість машинних мов використовують близькі до
них машино-орієнтовані мови (асемблери).
Мова асемблера
Мова асемблера — це машино-залежна мова низького рівня, в якому короткі мнемонічні
імена відповідають окремим машинним командам. Використовується для представлення в
легкій для читання формі програм, записаних в машинному коді.
Мова асемблера дозволяє програмістові користуватися текстовими мнемонічними (тобто
що легко запам'ятовуються людиною) кодами, на свій розсуд привласнювати символічні імена
регістрам комп'ютера і пам'яті, а також задавати зручні для себе способи адресації. Крім того,
він дозволяє використовувати різні системи числення (наприклад, десяткову або
шістнадцетерічну) для уявлення числових констант, використовувати в програмі коментарі і ін.
Програми, написані на мові асемблера, вимагають значно меншого об'єму пам'яті і часу
виконання. Знання програмістом мови асемблера і машинного коду дає йому розуміння
архітектури машини. Не дивлячись на те, що більшість фахівців в області програмного
забезпечення розробляють програми на мовах високого рівня, таких, як Object Pascal або C,
найбільш могутнє і ефективне програмне забезпечення повністю або частково написане на мові
асемблера.
Мови високого рівня були розроблені для того, щоб звільнити програміста від обліку
технічних особливостей конкретних комп'ютерів, їх архітектури. В протилежність цьому, мова
асемблера розроблена з метою врахувати конкретну специфіку процесора. Отже, для того, щоб
написати програму на мові асемблера для конкретного комп'ютера, важливо знати його
архітектуру.
Як приклад приведемо програму на мові асемблера для IBM РС. Програма обчислює
значення а = b + з для цілих а, b і з:
Директива .MODEL задає механізм розподілу
.MODEL SMALL пам'яті під дані і команди.
.DATA
Директива .DATA визначає початок ділянки
b DW 5
програми з даними.
c DW 3
Директиви DW задають типи змінних і їх значення.
a DW ? Директива .CODE визначає початок ділянки
.CODE програми з командами.
begin MOV AX,@DATA
Команди MOV Ax,@data і MOV Ds,ax
MOV DS,AX
записують адресу сегменту даних в регістр
MOV AX,B DS (Data Segment).
ADD AX,C Для обчислення а використовуються команди MOV
MOV A,AX AX, B, ADD AX, C і MOV A, AX.
MOV AH,4CH
У директиві END задана мітка першої виконуваної
INT 21H
програми програми begin.
END begin
Переклад програми з мови асемблера на машинну мову здійснюється спеціальною
програмою, яка називається асемблером і є, по суті, простим транслятором.
Переваги алгоритмічних мов перед машинними
Основні переваги такі:
алфавіт алгоритмічної мови значно ширший за алфавіт машинної мови, що істотно
підвищує наочність тексту програми;
232