Ассемблер және макроассемблер тілдері



Ассемблер және макроассемблер тілдері

Ассамблер таңбалар (символдар)тілі бола отырып,белгілі бір дәрежеде
машина тілінде программа жасаудағы кемшіліктерді жоюға мүмкіндік береді.
Ассамблер тілінде программаның барлық элементтері таңбалармен
берілетіндігі оның басты артықшылығы болып табылады.Басқаша айтқанда
ассамблер тілінің машина командаларының цифрлық кодтарын әріптермен немесе
әріп-цифрлармен таңбалауға және деректердің таңбалық аттарын пайдалануға
мүмкіндік беретіндігі оның машина тілінен айырмашылығы болып табылады.
Ассамблер тілінің командаларын машина тіліне аударғанда машина командасын
білдіретін әрбір оператор осы команданың цифрлық кодтарымен алмастырылады.
Командалардың таңбалық аттарын олардың екілік кодтарына түрлендіру жұмысы
программа жасаушы адамды өте қиын әрі күрделі машақаты көп жұмыстан
босататын және бұл жағдайда құтиылоуға болмайтын қателіктерден құтқаратын
арнайы программа-ассамблерге жүктеледі.
Ассамблер тілінде программалауда пайдаланылатын таңбалық аттар
программаның семантикасын, ал команданың қысқартылып берілген атаулары
оның негізгі функциясын білдіреді.Мысалы, ADD-қосу, SUB-азайту, PARAM-
параметр т.с.с.Мұндай аттарды программа жасаушылар оңай есінде сақтайтын
болады.
Ассамблер тілінде программа жасау үшін машина тілінде программа
жасағандағыдан көп күрделі құралдар қажет болады:
• сыртқы құрылғылармен жабдықталған дербес компьютер;
• процессордың түріне қарай резиденттік немесе жүйелік программалар.
Машина тіліне қарағанда ассамблер тілі едәуір күрделі, программаларды
ұтымды жазуға және жөндеуге мүмкіндік береді.
Ассамблер тілі машинаға бағдарланған тіл, яғни процессордың әрбір
командасына таңбалық ат меншіктейтіндіктен машина тіліне және процессордың
құрылысына тәуелді тіл болып табылады.
Программа жасауда ассамблер тілі машина тіліне қарағанда программа
жасаушылардың еңбек өнімділігін арттыруға сонымен бірге процессордың
программалық және аппараттық ресурстарын толық пайдалануға мүмкіндік
береді.
Бұл біліктілігі жоғары программалаушыларға жоғары деңгейлі тілдермен
жасалған программамен салыс–тырғанда компьютердің жадында аз орын алатын
жылдам жұмыс істейтін программалар жасауға мүмкіндік береді.
Ассамблер тілінің осындай артықшылықтарына байланысты ендіру-шығару
құрылғыларын басқарушы программалар неше түрлі жоғары деңгейлі тілдердің
көптігіне қарамай ассамблер тілінде жазылады.
Ассамблер тілінің көмегімен программа жасаушы адам мынадай
параметрлерді бере алады:
• процессордың машина тілінің әрбір командасының таңбалық атын;
• ассамблер тілінде жазылған программалық қатардың стандартты пішімін;
• командалардың нұсқаларын және адрестеудің тәсілдерін қалай көрсету
керектігі туралы пішімді;
• таңбалық тұрақтыларды және бүтін сандық тұрақтыларды әртүрлі санақ
жүйелерінде көрсету үлгілерін;
• программалауды ассамблерлеу (транслациялау) процесін басқарушы
пседокомандаларды.
Ассамблер тілі кез келген компьютерге түсінікті,өйткені басқа барлық
тілдерге қарағанда машина тіліне ең жақын тіл ол ассамблер тілі. Бұл тіл
копьютнрмен жақынырақ танысуға мүмкіндік береді. Сондықтан да ассамблерді
оқу дегеніміз процессордың өзін оқып үйрену деген сөз. Ассемблер тілінде
жазылған программа кез келген басқа тілдерде жазылған программаларға
қарағанда өте тез орындалады. Мысалы, ассемблер тілінде жазылған программа
дәл осы программаға баламалы СИ немесе Паскаль тілдерінде жазылған
программалардан екі-үш есе, ал BASIC тілінде жазылған программалардан он
бес және онда да көп есе тез орындалады.
Ассемблер тіліндегі программалар басқа тілдерде жазылған
программаларға қарағанда өлшемі жағынан шағын болады, сондықтан
компьютердің жадын үнемдеуге мүмкіндік береді.
Ассемблер тіліндегі программалар компьютердің барлық мүмкіндіктерін
толық ұтымды пайдалануға сізге жол ашады.
Ассемблер тілін әрқайсысы машина командаларының бір тобына баламалы
макрокомандалармен толықтыру жүйе қолданылады. Мұндай тіл макроассемблер
тілі деп аталады. Макрокомандаларды пайдалану ірі құрылыс блоктарының
программалар құруға мүмкіндік береді және ассемблер тілін жоғары деңгейлі
тілдерге жақындатады.

Трансляторлар

Жоғары деңгейлі тілдер көптеген алгоритмдерді үйреншікті математикалық
амалдардың жазылуына жақын ыңғайлы түрде жазып түсіндіруге мүмкіндік
береді. Бұл тілдерді пайдалану программалаудағы кездесетін қиындықтарды
азайтады.
Жоғары деңгейлі тілдерді программа жасауда пайдалану 60-шы жылдары
басталды. Содан бері бүгінгі күнде дейін белгілі есептерді шешуге арналған
әмбебап, сандай-ақ бағдарланған көптеген әртүрлі тілдер жасалып
пайдаланылып келеді.
Әрбр программалау тілінің өзінің аты бар.Көптеген программалау тілінің
аты олар алғаш жасалғаннан бастап тіркелген.Содан бері программалау
тілдерінде қолданылатын ережелер өзгергенімен тілдер аты сол бұрынғы
күйінде өзгеріссіз қалуда.
Қазіргі кезде жоғары деңгейлі программалау тілдері былай бөлінеді:
• процедуралы (көптеген классикалық программалау тілдері, мысалы,
FORTAN, PASCAL, BASIC, C);
• логикалық (ЛИСПЫ, ПРОЛОГ т.б.);
• объектік-бағдарланған (С++, Java т.б.).
Қысқа программаларды жасауда процедуралық программалау тілдерін
пайдалану ыңғайлы; логикалық программалау тілдерін алгоритмдерді теориялық
зерттеуде жасанді интеллекті оқытып үйрену жұмыстарында деректер
базасымен жасалатын операцияларда өндіріс объектілерін және әскери
бөлімдерді басқару жүйелерін басқаруда, ал объектік-бағдарланған
программалау тілдерін бәрінен де үлкен және күрделі программаларды
(Мысалы, компьютерлік ойындарда), жасақтауда пайдаланған жөн.
Әртүрлі программалау тілдерінің арасында айтарлықтай елеулі
айырмашылықтардың болуына қарамастан олардың барлығында негізгі
операцияларды жүзеге асырудың ұқсас құралдары бар. Бұдан басқа әртүрлі
программалау тілдерін пайдаланғанда жұмыс істеу қиындығының түрліше
болатындағына қарамастан кез келген программаны жасауда кез келген типтегі
программалау тілін пайдалануға болады.
Бұл тілдердің әрқайсысына тоқталмай-ақ, осы тілдерді машина тіліне
аударушы трансляторлардың жұмысына тоқталайық. Машина тілінен өзгеше
программалау тілінде құрылған программа компьютерде орындалу үшін жарамды
түрде, яғни машина тіліне түрлендіруі тиіс. Мұндай түрлендіру
трансляциялау деп аталады.
Ассемблердің ендірілетін тілі мнемокод, макроассемблер-макротіл, ал
компилятордікі-поцедуралы бағдарланған тілдер боып табылады. Осыған
байланысты ендірілетін тілдерді транцлятордың түрлеріне қарай ассемблер
тілі, макроассемблер тілі деп аталады т.с.с.
Транслятор арқылы өңделіп алынған программа тікелей компьютерде
орындалады немесе оны басқа транцлятордың өңдеуіне тура келеді.
Трансляциялау мен программаның орындалуы уақыт жағынан бөлінген болады.
Интерпретатордан басқа трансляторларда алдымен барлық программа
трансляцияланады содан кейін орындалады. Осы режімде жұмыс істейтін
трансляторлар компиляциялаушы типті трансляторлар деп аталады. Егер мұндай
транслятордың ендірілетін тілі процедуралы-бағдарланған тіл болса, онда
транслятор компилятор деп аталады.
Трансляциялау кезеңімен орындау кезеңдері уақыт бойынша ығысып ауысып
келіп отыратын транслятор интерпретатор деп аталады.
Машина тілінде немесе жүктелуші тілде ұсынылған программа транслятор
жұмысының нәтижесі болып табылады.
Транслятордың жұмысын төрт кезеңге бөлуге болады:
• лексикалық талдау. Мұның негізгі атқаратын қызыметі программаның
бастапқы мәтінін одан әрі қарай өңдеу үшін ең ықшамды және ыңғайлы
етіп ұсыну. Осылауша алынған мәтін транслятордың синтаксистік
талдаушы деп аталатын келесі бөліміне бастапқы деректер ретінде
беріледі;
• синтаксистік талдау. Бұл кезңде бастапқы мәтінді синтаксистік
талқылау жүргізіледі, яғни сөйлемдердің типтерін тану және
программаның құрылымын айқындау, сонымен бірге синтаксистік
қателіктерді айқындаушы синтаксистік бақылау;
• объктік программаны жасау. Бұл кезеңде шын тілдің баламалы
сөйлемдерінің мәні зерттеліп, симантикалық талдау жасалады;
• объктік программаны безендіру және беру. Бұл транслятор жұмысының
соңғы қорытынды кезеңі. Объктік программаны кітапханаға жазуға,
баспаға шығаруға болады. Пайдаланушының нұсқауы бойынша транслятор
ендіретін қосымша информацияның белгілі бір бөлігі ғана баспаға
беріледі.
Шығарылатын есептің сипатына және пайдаланушылардың категориясына
байланысты трансляторларға әртүрлі талаптар қойылады. Мысалы, берілген
программалау тілін игергісі келетін жаңадан бастаушыларға транслятордың ең
маңызды сипаттамасы диагностикалық хабарларының толық әрі қарапайым болуы
болып табылады. Егер компьютерде сплыстырмалы түрде алғанда көп уақыт
есептеуді қажет етпейтін көптеген майда есептер шығарылатын болса, онда
сол есептерді шығару үшін алынған программаның сапасына айтарлықтай мән
берілмейді. Транслятордың жұмыс істеу жылдамдығы үлкен рол атқарады. Ұзақ
есептелетін күрлелі есептер үшін талап етілетін машиналық уақытты және
программаның орындалуы үшін қажетті жадтың көлемін ескере отырып
транслятордың жасаған программаның ұтымдылығы ең маңызды рол атқарады.
Мұндай ұтымды программалар алу трансляциялау алгоритмдерін күрделендіре
түсуді талап етеді, ол трансляторды күрделендіре түсуге және оның жұмыс
істеу уақытын арттыруға алып келеді. Осыған байланысты программалау
жүйесінің өзінде тіптен бір программалау тілі үшін де бірнеше әртүрлі
трансляторлар қарастырылады, ал пайдаланушы өзіне ең керекті
трансяторларды таңдап алады.

Трансляциялаудың жалпы схемасы мына төмендегі суретте көрсетілген.

Ендірілетін - - - - - - - - -
Төмендегі немесе
тіл
жоғары деңгейлі

тілдегі программа

- - - - - - - - - Алғашқы
модульді
түрлендіру

Шығарылатын -- - - - Машина
тіліндегі
тіл.
немесе төменгі

деңгейлі тілдегі

программа.

Сонымен бастапқы модульді машина тілдегі немесе төменгі деңгейлі
тілдегі объектік программаға түрлендіретін программаны трансляциялау деп
атайды.
Ендірілетін тілге, трансляциялау кезеңдерінің өту ретіне және
программа операторларының орындалуына байланысты транслятордың мынадай
түрлері болады:
1. ассамблер;
2. компилятор;
3. интерпретатор.

Ассемблер

Ассамблер–бұл төменгі деңгейлі тілдің трансляторы, оның жұмысы мына
төменгі схемада бейнеленген.

- - - - - Ассамблер немесе

макроассамблер
тіліндегі программа

- - - - Машина тіліндегі

программа және
құрастырушы
үшін информация

Ассемблер бастапқы модульді объектік программаның бір түрі болып
табылатын объектік модульге түрлендіреді.
Объектік модульдің оны оған тәуелсіз трансляцияланған басқа
модульдермен біріктіруге және оның жедел жадтағы орналасуын реттеуге
арналған машиналық командалары және информациялары бар. Объектік модуль
компьютерлерде тікелей орындалмайды, сондықтан да оны программа
құрастырушының қосымша өңденуіне тура келеді.

Интерпретатор және компилятор

Жоғары деңгейлі тілдің трансляторы трансляциялау кезеңдерінің өту
реттілігіне және программа операторының орындалуына байланысты
интерпретатор немесе компилятор деп аталады. Интерпретатор әрбір жеке
операторды трансляциялаған соң, оның тікелей тез орындалуын қамтамасыз
етеді, яғни трансляция кезеңі мен орындалу кезеңі кезекпен қайталанады.
Программаны интерпретациялау схемасы мына суретте көрсетілген.

Интерпретатор

Жоғарғы деңгейлі
тілдегі программа

Компилятор программаның барлық операторларын трансляциялайды, ал
программаның орындалуы жалпы алғанда оның қатынасуынсыз өтеді, яғни жеке
операторларды трансляциялау кезеңдері тікелей бірінен соң бірі өтеді және
программаның орындалуынан толық оқшауланған болады. Программаны
компиляциялаудың қысқартылған схемасы мына суретте көрсетілген.

Компилятор

Объектік модуль

немесе төменгі

деңгейлі тілдегі

программа

Жоғарғы деңгейлі тілдердің көпшілігі үшін комбиляторлар жасалған.
Интерпретаторлар жасалған тілдердің мысалына BASIC және FOCAL тілдерін
атауға болады. Компьютерлердің программалау жүйесінде комбилятордың екі
түрі бар. Бірінші түрдегі комбиляторлар бастапқы модульді машина тіліндегі
объектік программаға түрлендіреді, яғни объектік модульді ассемблар
тіліндегі объектік программаға түрлендіреді. Екінші түрдегі комбилятор
қалыптастырған осы программадан объектік модульді алу үшін қосымша
ассемблерді пайдалану қажет болады.

Бағыныңқы программалар кітапханасы

Бірнеше программада немесе бір программаның бірнеше жерінде белгілі
бір әрекетке қол жеткізу үшін пайдаланылатын машина тіліндегі командалар
тізбегін бағыныңқы программа деп атайды. Әртүрлі программаларда жиі
қолданылатын бағыныңқы программаны бірыңғай ереже бойынша безендіріп, оны
стандартты бағыныңқы программа деп атайды. Программаларды осылай
стандарттау оларға бір пішінде ат беріп, онымен қарым-қатынас орнатуды,
аргументтер мен нәтижелер туралы информацияны беру тәсілін формальды
тіркеуді, сонымен бірге бағыныңқы программаны негізгі программаға қосу
мүмкіндігін автоматтандыруды қамтамасыз ететін бағыныңқы программалардың
өздерін жасаудың бірыңғай ережелерін құруды көздейді.
Компьютердің жадында тұрақты сақталатын стандартты бағыныңқы
программалар жиыны стандартты бағыныңқы программалар кітапханасын құрады.
Мұндай кітапхана құрамында бірнеше ондаған программалардан бірнеше
жүздеген программаларға дейін болады. Әртүрлі есептерді шығаруда оларды
қолдану мақсатында жиі кездесетін бағыныңқы программаларды жинау идеясы
копьютерлердің өмірге келумен бірге пайда болды.
Жеткілікті толық бағыныңқы программалар кітапханасы бар жағдайда
көптеген күрделі есептерді программалау есептелу процесін бірнеше
кезеңдерге жіктеп, оларға бағыныңқы программалар кітапханасындағы дайын
программаларды қолдануға және ол кезеңдерді үйлестіруге алып келеді.
Сенімді жұмыс імтейтін сыртқы есте сақтау құрылғыларын жасау
стандартты бағыныңқы программалар кітапханасын компьютердің жадында
сақтауға мүмкіндік береді. Стандартты бағыныңқы программалар кітарханасы
шын мәнінде компьютердің орындайтын операциялары жиынының программалық
кеңейтілуі болып табылады. Осы операциялардың көпшілігін компьютердің
аппараттық бөлігінің көмегімен жүзеге асыруға болар еді, бірақ бұл
компьютердің құрылысын күрделендіріп жібереді.
Құрылып жатқан программаға компилятор математикалық функциялардың
мәндерін есептейтін, ендіру-шығару операцияларын орындайтын объектік
модульді қолдануды қосады. Бұл модульдер стандартты бағыныңқы программалар
кітапханасында сақталады және одан құрастырушы программа автоматты түрде
алады.

Құрастырушы

Құрастырушы бірнеше объектік модульді операциялық жүйе жүктегенннен
кейін компьютерде тікелей орындалу үшін мына төменднгі схемада
көрсетілгендей даяр жүктелетін бір модуль етіп құрастырады.





Объектік

модульдерді

құрастыру

Компьютерде

орындауға
дайын,
машина

тілдегі программа

Мұндай құрастырудың қажеттілігін әрбір объектік модульде берілген
модульге тәуелсіз трансляцияланған немесе стандартты бағыныңқы
программалар кітапханасында сақталатын басқа объектік модульге өтудің
барлығымен қамтамасыз етіледі.
Құрастырушы әрбір машина командасының және деректердің әр бір
элементтің операциялық жүйедегі өз орнын анықтайды және модульдердің
бірімен-бірінің қатынас жасауын қамтамасыз етеді.

Жөндеуші

Пайдаланушы құрған программадағы қателіктерді іздеуді және жөндеуді
тездетіп қысқарту үшін программалау жүйесінің құрамына ... жалғасы

Сіз бұл жұмысты біздің қосымшамыз арқылы толығымен тегін көре аласыз.
Ұқсас жұмыстар
Жүйелік программалаудың негізгі ұғымдары мен анықтамалары туралы
Транслятордың түрлері
Ассемблер тілінде программалау туралы мәлімет
Орталық процессордың құрылымы мен ұйымдастырылуы
Программалау тілдері
ЭЕМ-ң қызметі, құрамы және жіктелуі
ЭЕМ-ң қызметі, құрамы және жіктелуі туралы ақпарат
Программалау тілдерімен танысу
Ассемблер тілінің синтаксисі, алфавиті
Бағдарламалау тілдері
Пәндер