Ассемблер тілі - машиналық тідің аналогы болып саналады. Ассемблер тілінде жазылған программа МП-р құрылысының ерекшеліктерін: жадтың ұйымдастырылуын, операндтарды адрестеу тәсілдерін, регистрлерді қолдану ережелерін анықтап, көрсету қажет. Әр МП-ң өзінің Ассемблері болады.
Ассемблер тілінде жазылған программа жад сегменттері деп аталатын жадблоктарының тобынан тұрады. Программа осындай бір немесе бірнеше блок-сегменттерден тұруы мүмкін. Әр сегмент программа кодының әр қатарында орналасқан сөйлемдерден құрылады.
Ассемблер тілінің сөйлемдері төрт түрлі болады:
- Командалар: машиналық кодтардың аналогтары. Бұл командалар трансляциялау кезінде МП-ң сәйкес командаларына түрленеді;
- Макрокомандалар: трансляциялау кезінде басқа сөйлемдерге алмасатын сөйлемдер;
- Дерективалар: ассемблер трансляторына орындалатын әрекеттер туралы түсінік береді, яғни қызметші ақпараттар жиыны. Дерективалар машиналвқ кодтарға түрленбейді;
- Комментарий: кез келген белгілерден тұрады.
Ассемблер тілінің екі артықшылығы бар:
Бұл тілдің көмегімен программаны МП командалары деңгейінде жазуға болады және сандық кодтардың барлығын еске сақтауды талап етпейді. Программа командалары жазылып болған соң, Ассемблер программасы шақырылады да, ол бұл командаларды олардың кодтарына айналдырады. Командалар жиыныннан тұратын программа негізгі не алғашқы программа деп аталады, ал негізгі программаның сандық кодтары, яғни машиналық тілге айналған түрі – объектік программа деп аталады.
Ассемблердің атқаратын негізгі қызметі – қолданушыға түсінікті негізгі прогрпмманы МП түсінетін объекттік программаға айналдыру. Ассемблердің кең тараған түрлері: IBM фирмасының MASM(Macro Assembler) программасы және Borland фирмасының TASM (Turbo Assembler) прграммасы.
Ассемблер тілінде программа құру кезеңдері.
Ассемблер тілінде программа құру келесі кезеңдерден тұрады:
- есептің қойылымы және программасының құрылымын анықтау;
- текстік редактордың көмегімен компьютерге программа командаларын енгізу;
- Ассемблердің көмегімен программаны трансляциялау;
- загрузчик (жадқа жүктеуші программа) көмегімен трансляцияланған программаны (сандық кодтарды) өздігінен орындалатын модульге айналдыру;
- программаны орындау;
- отладчиктің көмегімен программаны жүргізу.
2-ші кезеңде қолданылатын редактор ретінде WORD редакторінен басқа кез келген текстік редакторді қолдануға болады. Негізгі программа операторлар тізбегінен тұрады. Оператор ретінде Ассемблер тілінің командалары немесе псевдокомандалар қолданылады.
Ассемблер тілінің синтаксисі, алфавиті. Тұрақтылар.
Программа сөйлемдерін (команда, макрокоманда, директива, коментарий) ассемблер трансляторы айқын анықтау үшін олар белгілі бір синтаксистік ережелерге сәйкес қалыптастырылуы тиіс.
Ассемблер тіліндегі әр команда 4 өрістен тұруы мүмкін.
Мысалы: get: mov cx,di;
cx регистріне di регистрінің мәнін меншіктеу Бұл жерде get белгіні білдіреді, mov
– меншіктеу командасы, cx, di
операндтарды білдіреді, ал; белгісінен кейін тұрған мәлімет – коментарий.
Директивалар (Псевдокомандалар)
Директивалардвң (псевдокомандалардың) көмегімен сегменттер мен пройедураларды анықтауға, командалар мен мәліметтер элементтеріне ат беруге, жадтың жұмысшы аумақтарын анықтауға және т.с.с. әрекеттерді орындауға болады. Директивалардвң жазылу түрлері:
Жиі кездесетін директивалардың түрлері :
- SEGMENT ENDS – негізгі прграмманы сегменттерге бөледі, сегменттің басын және аяғын білдіреді. Сегмент түрлерін анықтау үшін ASSUME директивасы қолданылады. Оның жазылу түрі: Мұндағы, сегмент_регистрі – DS, CS, SS, ES сегмент регистрінің аты, : сегмент_аты – SEGMENT ДИРЕКТИВАСЫНДА КӨРСЕТІЛГЕН АТ.
- PROC ENDP процедураның басын және соңын білдіреді. Процедура дегеніміз – программаның әр жерінде орындалатын командалардың тізбегі.
Ассемблер тілінде кездесетін тұрақтылардың түрлері:
- екілік сандық жүйесіндегі тұрақтылар: 0 және 1-ден тұратын сандар тізбегі. Тізбектің соңында В әрпі жазылады. Мысалы: 1011011В.
- орындық сандық жүйесіндегі тұрақтылар: 0+9 аралығында сандар. D әрпімен аяқталуы мүмкін. Мысалы: 927 не 927D.
- 16-лық сандық жүйесіндегі тұрақтылар: 0+9 аралығында сандар, А+Ғ латын әріптері. Н әрпімен аяқталады. Алғашқы символ сан болуы тиіс. Мысалы: 1Е23Н.
- символдардың тұрақтылар – тырнақшаға алынып жазылған әріп, сан не символдар тізбегі.
Теріс сандарды енгізу үшін келесі тәсілдер қолданылады: егер сан ондық жүйеде болса, алдына минус белгісі қойылады, егер сан 2-лік не 16-лық жүйеде болса, оны толықтырғыш кодқа ауыстыру керек.
Ассемблер тіліндегі мәндер түрлері
Мәндер өздерінің көлеміне байланысты келесі түрлерге бөлінеді:
- Байт - 8 бит
- Сөз – 2 байт, биттер (разрядтар) 0-ден 15-ке дейін нөмірленеді, нольдік разряды бар байт – кіші байт деп аталады., 15-ші разряды бар байт үлкен байт деп аталады.
- Қоз сөз – 4 байт-32 бит, үлкен сөз, кіші сөзден тұрады.
- Төрт сөз – 8 байт-64 бит, үлкен қос сөз, кіші қос сөзден тұрады.
Мәндер логика құрылысына байланысты келесі түрлерге бөлінеді:
1.таңбалы бүтін мән – 8, 16, 32 биттен тұратын екілік жүйедегі берілген таңбалы мән. Таңба белгісі 7, 15, 31 разрядтарда орналасады. Бұл разрядтардағы ноль саны мәннің теріс екенін білдіреді. Теріс сандар қосымша код арқылы беріледі.
Мәндердің берілу аралығы:
- 8 разрядтық (1 байт) – 128-ден + 127-ге дейін
- 16 разрядтық (2 байт) – 32768-ден + 32767 дейін
- 32 разрядтық (4 байт) – 231 ден + 2 32 – 1
2.Таңбасыз бұтін мән – 8, 16, 32 биттен тұратын таңбасыз екілік жүйеде берілген мән. Мәндердің берілу аралығы:
- Байт – 0+255
- Сөз – 0+65535
- Қос сөз – 0+2 32 – 1
3.Жадты көрсету мәні 2 түрден тұрады:
- Жақын аралықтағы түрі – 32 разрядты логикалық адрес, сегменттің ығысу адресін көрсетеді.
- Алыс аралықтағы түрі – 48 разрядты логикалық адрес, 32 разрядтық ығысу адресінен және 16 разрядтық селектордан тұрады.
4.Тізбек – байт, сөз, қос сөзден тұрады, көлемі 4 Гбайт-қа дейін болуы мүмкін.
5.Разрядтық аумақ – разрядтарлың тізбегі.
Ассемблер тілінің арифметикалық командалары
Арифметикалық командалар жиыны сандардың екі түрімен жұмыс істейді.
- Екілік бүтін оң және теріс сандар
- Бүтін ондық сандар.
Сандарды қосу командалары.
- ine ранд – инкремент амалы, яғни операнд мәнін 1-ге арттыру. Мысалы: ine bh – bh регистрінің мәнін 1-ге арттырады.
- add операнд 1, операнд 2 - қосу амалы. Нәтиже операнд 1-ге жазылады, яғни оп-д1=оп-д1+оп-д2
- ade оп-д 1, оп-д 2 – келесі разрядқа көшу жолаушысының (cf) нәтижесін қолданып қосу амалы. Нәтиже операнд 1-ге жазылады, яғни оп-д 1=оп-д 1+по-д 2+cf
Мысалы:
- mov al, 01
- add al, 11
- adc ah, 1
Сандарды алу командалары
- dec операнд – декремент амалы, яғни операнд мәнін 1-ге кеміту.
- sub операнд 1, операнд 2 – алу амалы, нәтиже операнд 1-ге жазылады.
- sbb операнд 1, операнд 2 – жоғарғы разрядтан алу негізінде алу амалы, нәтиже операнд 1-ге жазылады.
Мысалы:
- sub ax, ax; ax ргистрін тазарту
- mov al, 0101 ; al регистріне 0101 санын енгізу
- sub al, 1010 ; al регистрінен 1010-ды алу
- neg al; модуль немесе санның қосымша коды.
Сандарды көбейту.
- Команданың жазылу түрі:
mul 1_көбейткіш [, 2_көбейткіш]
.
Мысалы:
- ... ...
- sub ax, ax
- mov al, 25
- mul rez_1
- rez_1 db 45
Бұл команданың нәтижесінде нәтиженің жоғарғы үлкен бөлігі ah регистрінде, кіші бөлігі al регистрінде орналасады.
Сандарды бөлу.
- Команданың жазылу түрі:
div бөлінгіш
.
Бөлінгіш жадта немесе регистрде орналасуы мүмкін және 8, 16, 32 разрядты болуы мүмкін. Нәтиже, яғни бөлінді al регистріне, қалдық ah регистріне орналасады.
Мысалы:
- del мәнін delt-қа бөлеміз
- ... ...
- del dw 29876
- delt db 45
- sub ax, ax
- mov ax, del
- div delt
- ... ...
Нәтижесінде al регистріне бөлінді, ah регистріне қалдық орналасады.
Mысал
1.47, 25 екі саны берілген. Оларды bh, bl 1 байтты регистрлеріне орналастырып, олардың қосындысын, айырмасын табу , 25 санын 5-ке көбейту, 47 санын 16-ға бөлу.
- text segment ‘code’; (1) кодтар сегменті
- assume cs:text, ds: data; (2) сегмент регистрлерін анықтау
- begin: mov ax, data; (3) Мәндерді ds регистріне орналастыру
- mov ds, ax; (4)
- sub bx, bx; (5) bx регистрін тазарту
- mov bh, 47; (6) bh регистріне 47 санын орналастыру
- mov bl, 25; (7) bl регистріне 25 санын орналастыру
- add bh, bl; (8) Екі санның қосындысын анықтап, нәтижені bh регистріне орналастыру
- mov dh, 47; (9) dh регистріне47 санын орналастыру
- mov dl, 25; (10) dl регистріне 25 санын орналастыру
- sub dh, dl; (11) екі санның айырмасын анықтап, нәтижені dh регистріне орналастыру
- sub ax, ax; (12) ax регистрін тазарту
- mov al, 25; (13) al регистріне 25 санын орналастыру
- mul r1; (14) 25 санын 5-ке көбейту, нәтиже ах регистрінде
- mov ax, 47; (15) ах регистріне 47 санын орналастыру
- div r2; (16)47 санын 16-ға бөлу, нәтижесі
- ах регистрін
- mov ax, 4c00h (17) программаны аяқтау коды
- int 21 h; (18) dos функциясын орындауға үзіліс жасау
- text ends; (19) кодтар сегментінің соңы
- data segment; (20) мәндер сегментінің басы
- r1 db 5; (21) 5-ті r1 – де байт ретінде анықтау
- r2 db 16; (22) 16-ны r2 – де байт ретінде анықтау
- data ends; (23) мәндер сегментінің соңы
- endbegin; (24) программа соңы
Дереккөздер
- Қазақ тілі терминдерінің салалық ғылыми түсіндірме сөздігі: Информатика және компьютерлік техника / Жалпы редакциясын басқарған – түсіндірме сөздіктер топтамасын шығару жөніндегі ғылыми-баспа бағдарламасының ғылыми жетекшісі, педагогика ғылымдарының докторы, профессор, Қазақстан Республикасы Мемлекеттік сыйлығының лауреаты А. Қ. Құсайынов. – Алматы: «Мектеп» баспасы» ЖАҚ, 2002 жыл. – 456 бет. ISBN 5-7667-8284-5
уикипедия, wiki, кітап, кітаптар, кітапхана, мақала, оқу, жүктеу, тегін, тегін жүктеу, mp3, видео, mp4, 3gp, jpg, jpeg, gif, png, сурет, музыка, ән, фильм, кітап, ойын, ойындар, ұялы, андроид, iOS, apple, ұялы телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ДК, веб, компьютер
Assembler tili mashinalyk tidin analogy bolyp sanalady Assembler tilinde zhazylgan programma MP r kurylysynyn erekshelikterin zhadtyn ujymdastyryluyn operandtardy adresteu tәsilderin registrlerdi koldanu erezhelerin anyktap korsetu kazhet Әr MP n ozinin Assembleri bolady Assembler tilinde zhazylgan programma zhad segmentteri dep atalatyn zhadbloktarynyn tobynan turady Programma osyndaj bir nemese birneshe blok segmentterden turuy mүmkin Әr segment programma kodynyn әr katarynda ornalaskan sojlemderden kurylady Assembler tilinin sojlemderi tort tүrli bolady Komandalar mashinalyk kodtardyn analogtary Bul komandalar translyaciyalau kezinde MP n sәjkes komandalaryna tүrlenedi Makrokomandalar translyaciyalau kezinde baska sojlemderge almasatyn sojlemder Derektivalar assembler translyatoryna oryndalatyn әreketter turaly tүsinik beredi yagni kyzmetshi akparattar zhiyny Derektivalar mashinalvk kodtarga tүrlenbejdi Kommentarij kez kelgen belgilerden turady Assembler tilinin eki artykshylygy bar Bul tildin komegimen programmany MP komandalary dengejinde zhazuga bolady zhәne sandyk kodtardyn barlygyn eske saktaudy talap etpejdi Programma komandalary zhazylyp bolgan son Assembler programmasy shakyrylady da ol bul komandalardy olardyn kodtaryna ajnaldyrady Komandalar zhiynynnan turatyn programma negizgi ne algashky programma dep atalady al negizgi programmanyn sandyk kodtary yagni mashinalyk tilge ajnalgan tүri obektik programma dep atalady Assemblerdin atkaratyn negizgi kyzmeti koldanushyga tүsinikti negizgi progrpmmany MP tүsinetin obekttik programmaga ajnaldyru Assemblerdin ken taragan tүrleri IBM firmasynyn MASM Macro Assembler programmasy zhәne Borland firmasynyn TASM Turbo Assembler prgrammasy Assembler tilinde programma kuru kezenderi Assembler tilinde programma kuru kelesi kezenderden turady eseptin kojylymy zhәne programmasynyn kurylymyn anyktau tekstik redaktordyn komegimen kompyuterge programma komandalaryn engizu Assemblerdin komegimen programmany translyaciyalau zagruzchik zhadka zhүkteushi programma komegimen translyaciyalangan programmany sandyk kodtardy ozdiginen oryndalatyn modulge ajnaldyru programmany oryndau otladchiktin komegimen programmany zhүrgizu 2 shi kezende koldanylatyn redaktor retinde WORD redaktorinen baska kez kelgen tekstik redaktordi koldanuga bolady Negizgi programma operatorlar tizbeginen turady Operator retinde Assembler tilinin komandalary nemese psevdokomandalar koldanylady Assembler tilinin sintaksisi alfaviti Turaktylar Programma sojlemderin komanda makrokomanda direktiva komentarij assembler translyatory ajkyn anyktau үshin olar belgili bir sintaksistik erezhelerge sәjkes kalyptastyryluy tiis Assembler tilindegi әr komanda 4 oristen turuy mүmkin Mysaly get mov cx di cx registrine di registrinin mәnin menshikteu Bul zherde get belgini bildiredi mov menshikteu komandasy cx di operandtardy bildiredi al belgisinen kejin turgan mәlimet komentarij Direktivalar Psevdokomandalar Direktivalardvn psevdokomandalardyn komegimen segmentter men projeduralardy anyktauga komandalar men mәlimetter elementterine at beruge zhadtyn zhumysshy aumaktaryn anyktauga zhәne t s s әreketterdi oryndauga bolady Direktivalardvn zhazylu tүrleri Zhii kezdesetin direktivalardyn tүrleri SEGMENT ENDS negizgi prgrammany segmentterge boledi segmenttin basyn zhәne ayagyn bildiredi Segment tүrlerin anyktau үshin ASSUME direktivasy koldanylady Onyn zhazylu tүri Mundagy segment registri DS CS SS ES segment registrinin aty segment aty SEGMENT DIREKTIVASYNDA KӨRSETILGEN AT PROC ENDP proceduranyn basyn zhәne sonyn bildiredi Procedura degenimiz programmanyn әr zherinde oryndalatyn komandalardyn tizbegi Assembler tilinde kezdesetin turaktylardyn tүrleri ekilik sandyk zhүjesindegi turaktylar 0 zhәne 1 den turatyn sandar tizbegi Tizbektin sonynda V әrpi zhazylady Mysaly 1011011V oryndyk sandyk zhүjesindegi turaktylar 0 9 aralygynda sandar D әrpimen ayaktaluy mүmkin Mysaly 927 ne 927D 16 lyk sandyk zhүjesindegi turaktylar 0 9 aralygynda sandar A Ғ latyn әripteri N әrpimen ayaktalady Algashky simvol san boluy tiis Mysaly 1E23N simvoldardyn turaktylar tyrnakshaga alynyp zhazylgan әrip san ne simvoldar tizbegi Teris sandardy engizu үshin kelesi tәsilder koldanylady eger san ondyk zhүjede bolsa aldyna minus belgisi kojylady eger san 2 lik ne 16 lyk zhүjede bolsa ony tolyktyrgysh kodka auystyru kerek Assembler tilindegi mәnder tүrleri Mәnder ozderinin kolemine bajlanysty kelesi tүrlerge bolinedi Bajt 8 bit Soz 2 bajt bitter razryadtar 0 den 15 ke dejin nomirlenedi noldik razryady bar bajt kishi bajt dep atalady 15 shi razryady bar bajt үlken bajt dep atalady Қoz soz 4 bajt 32 bit үlken soz kishi sozden turady Tort soz 8 bajt 64 bit үlken kos soz kishi kos sozden turady Mәnder logika kurylysyna bajlanysty kelesi tүrlerge bolinedi 1 tanbaly bүtin mәn 8 16 32 bitten turatyn ekilik zhүjedegi berilgen tanbaly mәn Tanba belgisi 7 15 31 razryadtarda ornalasady Bul razryadtardagy nol sany mәnnin teris ekenin bildiredi Teris sandar kosymsha kod arkyly beriledi Mәnderdin berilu aralygy 8 razryadtyk 1 bajt 128 den 127 ge dejin 16 razryadtyk 2 bajt 32768 den 32767 dejin 32 razryadtyk 4 bajt 231 den 2 32 1 2 Tanbasyz butin mәn 8 16 32 bitten turatyn tanbasyz ekilik zhүjede berilgen mәn Mәnderdin berilu aralygy Bajt 0 255 Soz 0 65535 Қos soz 0 2 32 1 3 Zhadty korsetu mәni 2 tүrden turady Zhakyn aralyktagy tүri 32 razryadty logikalyk adres segmenttin ygysu adresin korsetedi Alys aralyktagy tүri 48 razryadty logikalyk adres 32 razryadtyk ygysu adresinen zhәne 16 razryadtyk selektordan turady 4 Tizbek bajt soz kos sozden turady kolemi 4 Gbajt ka dejin boluy mүmkin 5 Razryadtyk aumak razryadtarlyn tizbegi Assembler tilinin arifmetikalyk komandalaryArifmetikalyk komandalar zhiyny sandardyn eki tүrimen zhumys istejdi Ekilik bүtin on zhәne teris sandar Bүtin ondyk sandar Sandardy kosu komandalary ine rand inkrement amaly yagni operand mәnin 1 ge arttyru Mysaly ine bh bh registrinin mәnin 1 ge arttyrady add operand 1 operand 2 kosu amaly Nәtizhe operand 1 ge zhazylady yagni op d1 op d1 op d2 ade op d 1 op d 2 kelesi razryadka koshu zholaushysynyn cf nәtizhesin koldanyp kosu amaly Nәtizhe operand 1 ge zhazylady yagni op d 1 op d 1 po d 2 cf Mysaly dl dd mov al 01 dd dd add al 11 dd dd adc ah 1 dd dl Sandardy alu komandalary dec operand dekrement amaly yagni operand mәnin 1 ge kemitu sub operand 1 operand 2 alu amaly nәtizhe operand 1 ge zhazylady sbb operand 1 operand 2 zhogargy razryadtan alu negizinde alu amaly nәtizhe operand 1 ge zhazylady Mysaly dl dd sub ax ax ax rgistrin tazartu dd dd mov al 0101 al registrine 0101 sanyn engizu dd dd sub al 1010 al registrinen 1010 dy alu dd dd neg al modul nemese sannyn kosymsha kody dd dl Sandardy kobejtu Komandanyn zhazylu tүri mul 1 kobejtkish 2 kobejtkish Mysaly dl dd dd dd sub ax ax dd dd mov al 25 dd dd mul rez 1 dd dd rez 1 db 45 dd dl Bul komandanyn nәtizhesinde nәtizhenin zhogargy үlken boligi ah registrinde kishi boligi al registrinde ornalasady Sandardy bolu Komandanyn zhazylu tүri div bolingish Bolingish zhadta nemese registrde ornalasuy mүmkin zhәne 8 16 32 razryadty boluy mүmkin Nәtizhe yagni bolindi al registrine kaldyk ah registrine ornalasady Mysaly dl dd del mәnin delt ka bolemiz dd dd dd dd del dw 29876 dd dd delt db 45 dd dd sub ax ax dd dd mov ax del dd dd div delt dd dd dd dl Nәtizhesinde al registrine bolindi ah registrine kaldyk ornalasady Mysal 1 47 25 eki sany berilgen Olardy bh bl 1 bajtty registrlerine ornalastyryp olardyn kosyndysyn ajyrmasyn tabu 25 sanyn 5 ke kobejtu 47 sanyn 16 ga bolu dl dd text segment code 1 kodtar segmenti dd dd assume cs text ds data 2 segment registrlerin anyktau dd dd begin mov ax data 3 Mәnderdi ds registrine ornalastyru dd dd mov ds ax 4 dd dd sub bx bx 5 bx registrin tazartu dd dd mov bh 47 6 bh registrine 47 sanyn ornalastyru dd dd mov bl 25 7 bl registrine 25 sanyn ornalastyru dd dd add bh bl 8 Eki sannyn kosyndysyn anyktap nәtizheni bh registrine ornalastyru dd dd mov dh 47 9 dh registrine47 sanyn ornalastyru dd dd mov dl 25 10 dl registrine 25 sanyn ornalastyru dd dd sub dh dl 11 eki sannyn ajyrmasyn anyktap nәtizheni dh registrine ornalastyru dd dd sub ax ax 12 ax registrin tazartu dd dd mov al 25 13 al registrine 25 sanyn ornalastyru dd dd mul r1 14 25 sanyn 5 ke kobejtu nәtizhe ah registrinde dd dd mov ax 47 15 ah registrine 47 sanyn ornalastyru dd dd div r2 16 47 sanyn 16 ga bolu nәtizhesi dd dd ah registrin dd dd mov ax 4c00h 17 programmany ayaktau kody dd dd int 21 h 18 dos funkciyasyn oryndauga үzilis zhasau dd dd text ends 19 kodtar segmentinin sony dd dd data segment 20 mәnder segmentinin basy dd dd r1 db 5 21 5 ti r1 de bajt retinde anyktau dd dd r2 db 16 22 16 ny r2 de bajt retinde anyktau dd dd data ends 23 mәnder segmentinin sony dd dd endbegin 24 programma sony dd dl DerekkozderҚazak tili terminderinin salalyk gylymi tүsindirme sozdigi Informatika zhәne kompyuterlik tehnika Zhalpy redakciyasyn baskargan tүsindirme sozdikter toptamasyn shygaru zhonindegi gylymi baspa bagdarlamasynyn gylymi zhetekshisi pedagogika gylymdarynyn doktory professor Қazakstan Respublikasy Memlekettik syjlygynyn laureaty A Қ Қusajynov Almaty Mektep baspasy ZhAҚ 2002 zhyl 456 bet ISBN 5 7667 8284 5