Maşınyönümlü dillər. Assembler dilində proqramlaşdırma.
Hesablama texnikasının inkişafı müxtəlif proqramlaşdırma dillərinin meydana gəlməsinə səbəb oldu. Proqramlaşdırma dili dedikdə, EHM-də hər hansı bir məsələnin həlli zamanı proqram və başlangıc şərtlərini təsvir etmək üçün nəzərdə tutulmuş, insanla maşın arasında əlaqə yaradan formal dil başa düşülür. Proqramlaşdırma dilləri öz xüsusiyyətlərinə görə aşağıdakı qruplara bölünürlər:
maşınyönümlü, yəni maşın tiplərindən asılı olan dillər;
dillər;
problemyönümlü, yəni məsələlərin həlli üçün deyil təsviri üçün nəzərdə
tutulmuş dillər;
universal dillər.
Birinci nəsil EHM-də proqramlaşdırma tamamilə maşın dilində aparılırdı. Maşın dili müəyyən əməllərin, əsasən hesab əməllərinin ədədi işarələrlə kodlaşdırılmış əmrlər sistemidir. Deməli, maşın dilində yazılmış bir əmr hansı əməlin yerinə yetiriləcəyini bildirən kodun, üzərində aparılacaq ədədlərin və nəticənin əməli yaddaşda yerləri hökmən göstərilməlidir. Proqramçı hər sonrakı əmri əməli yaddaşda boş olan yerə yazmalıdır. Sonrakı əmrlərdə proqramçıya
102
aralıq nəticələrindən bir ədəd lazım olarsa, əmrdə həmin ədədin yerləşdiyi oyuğun nömrəsi göstərilməlidir. Əməllərin maşın dilində belə yazılması çətin, qarışıq və ona görə də çox zəhmət tələb edən bir prosesdir. Onu hökmən təkmilləşdirmək tələb olunurdu. Belə təkmilləşdirmənin zərurliyi tezliklə simvolik və ya Avtokod proqramlaşdırma dillərinin yaranmasına səbəb oldu. Simvolik proqramlaşdırma dilləri maşın dilindən onunla fərqlənir ki, burada əməliyyat kodları, yəni rəqəmlər ilə təsvir olunan əmrlər hərfi işarələrlə təsvir olunan kodlarla əvəz olunur. Həm də ilk avtokodlardakı maşın dilinin əmrləri arasında qarşılıqlı birqiymətli uyğunluq var idi ki, onu da 1:1 kimi göstərdilər. Bu nisbət proqramlaşdırma dilindən sonra yazılırdı, məsələn, Avtokod 1:1. Avtokod sözü Avtomatik kodlaşdırma sözlərinin qısa yazılışı nəticəsində əmələ gəlmişdir. EHM-in hər tipinin öz proqramlaşdırma dili vardır. Bu proqramlaşdırma (maşın) dillərini, bəzi, məsələn, “Minsk” tipli maşınlarda Avtokod, bəzilərində, məsələn ASVT tipli maşınlarda Mnemokod, bəzi məsələn ES və SM tipli maşınlarda isə Assembler adlandırırlar. Bütün bu dillər maşınyönümlü dillər adlanır. Beləliklə, maşınyönümlü dil dedikdə, proqramlaşdırma dilinin hər hansı konkret maşın üçün nəzərdə tutulduğu üç dil başa düşülür.
Hesablama texnikasının sonrakı inkişafı nəticəsində maşın yönümlü dillər də təkmilləşdi və maşınların imkanları çoxaldıqca onun əmrlərinin sayı da artmağa başladı. Bununla da maşınlarda olan bir çox altproqramları işlətmək üçün makroəmrlər yarandı. Makroassembler və Almo belə genişləndirilmiş maşınyönümlü dillərdir. Belə proqramlaşdırma dillərində proqram yazarkən, o proqramların istifadə olunacağı maşının xüsusiyyətləri nəzərə alınmalıdır.
Maşınyönümlü dillərin çatışmayan cəhətlərindən biri ondan ibarətdir ki, onların bəzilərində hesablama ardıcıllığının təsviri əsl yəni adi yazılış formasından uzaqlaşır, bəziləri isə yalnız məhdud dairədə olan məsələləri təsvir edə bilir. Bu dillərin çatışmayan cəhətlərindən biri də onlardan müxtəlif tipli maşınlarda istifadə etməyin mümkün olmamasıdır.
103
Maşınyönümlü dillərdə kompüterin strukturu, onun ayrı-ayrı qurğularının, bəzən hətta elementlərinin imkanları nəzərə alındığından bu dillər məsələnin yüksək sürətlə həllini təmin edir. Həmin dillərin əsas çatışmazlığı isə proqramın əyani olmamasından, proqramın yazılması zamanı səhvlərin labüdlüyündən, kompüterin strukturunu bilmək zərurətindən ibarətdir.
Maşınyönümlü dillərdə proqramlaşdırma ilə bir qayda olaraq peşəkar proqramçılar məşğul olur. Burada təkcə proqramlı mikrokalkulyator dili istisna olunur.
Bu dil simvolik kodlaşdırma dilləri qrupuna aid edilsədə çox sadələşdirilmişdir və asanöyrənilir.Maşın dillərinə yaxın olan dilləri iki qrupa bölünür: aşağı səviyyəli və yuxarı səviyyəli. Aşağı səviyyəli dillərə mnemokodlar (yunanca "mnemonikon" "yaddasaxlama bacarığı"deməkdir) və makrodillər aid edilir.
Mnemokodda rəqəm kodları mnemik işarələrlə əvəz olunub. Makrodillərə bunula yanaşı bir qrup maşın əmrlərə uyğun makroəmrlər daxildir.
Maşınyönümlü dillər real vaxt rejimində və dialoq rejimində işləyən sistemlər üçün nəzərdə tutulub. Sadə maşınyönümlü dil Assemblerdir. Assembler maşın proqramının strukturunu tamamilə saxlayır, əmrlər və yaddaş ünvanı üçün simvolik işarələrdən istifadəsinə imkan verir və proqramın ayrı-ayrı hissələrini bir yerə toplayır.
Hər hansı bir proqramlaşdırma dilində tərtib edilmiş maşin koduna çevrilməsi tələb olunan proqram nəticə moduludur. Bu proses translyasiya adlanır, proqram isə translyator. Assembler translyatordur və maşınyönümlü dildir, yəni əgər müxtəlif MP müxtəlif arxitekturaya malikdirsə, onda proqram cəhətdən uyğunsuzdur.
Assembler dilində tərtib edilmiş proqramlar assembler adlanan proqram vasitəsilə bilavasitə maşın koduna çevrilir. Assemblerə makrovasitələr daxilidir, əməliyyat əmrləri mnemonik və ünvanlar simvolik yazılır. 1952-ci ildə Qreys Hopper [Grace Murray Hopper] (ABŞ) dünyada ilk mnemonik proq ramlaşdırma dili olan assembler dilini [assembly language] yaratdı. Assemblerə mnemonik komandalar sistemi, prosedurlar kitabxanası və proqramın mətnini maşın koduna çevirən xüsusi proqram daxil idi. Proqramın maşın dilinə çevrilməsi proseduruna kompilyasiya, onu gerçəkləşdirən proqrama isə kompilyator deyilir (bu termin də Qreys M.Hopperindir).