Ассемблер тілінің синтаксисі, алфавиті


Жұмыс түрі: Реферат
Тегін: Антиплагиат
Көлемі: 15 бет
Таңдаулыға:
Мазмұны
Кіріспе . . . 3
1. Ассемблер машиналық тілі . . . 4
1. 1. Ассемблер тілінің негізгі артықшылықтары . . . 7
1. 2. Ассемблер басқа жоғарғы деңгейлі тілдерден айырмашылығы . . . 8
2. Ассемблер тілінің синтаксисі, алфавиті. Тұрақтылар . . . 9
2. 1. Директивалар (Псевдокомандалар) . . . 10
3. Ассемблер тілінің арифметикалық командалары . . . 11
Қорытынды . . . 15
Пайдаланылған әдебиеттер тізімі . . . 16
Кіріспе
Ассемблер бүгінгі таңда кең тараған және белгілі жүйелі бағдарламалау тілі болып отыр. Ассемблер тілі кез келген компьютерге түсінікті, өйткені басқа барлық тілдерге қарағанда машина тіліне ең жақын тіл ол ассемблер тілі. Бұл тіл компьютермен жақынырақ танысуға мүмкіндік береді. Сондықтан да ассемблерді оқу дегеніміз процессордың өзін оқып үйрену деген сөз. Ассемблер - машиналық тілдің символдық көрінісі. Машиналардағы барлық процесстер ең төмен, аппараттық деңгейде тек машиналық тілдің командаларымен (нұсқамаларымен) жүзеге асады. Бұдан белгілі, жалпы атында, әр компьютер типіне өзіндік ассемблер тілі болады. Бұл ассемблерде жазылған бағдарламаның сыртқы көрінісінде де байқалады. Аппаратураға байланыста мәселелерді ассемблер тілін білмей шеше алмайсын. Бағдарламалаушы немесе кез келген қолданушы жоғары деңгейлі бағдарламалау ортасын қолданып, толығымен виртуальды әлемдер ортасын құра отырып, ол компьютерде өзінің бағдарламасындағы командалар емес, негізінде оның ұзақ және қызықсыз түріндегі трансформирленген түрінде мүлдем басқа тілде - машиналық тілде командалар тізбегімен орындалатынын сезбеуіде мүмкін.
Ассемблер таңбалар (символдар) тілі бола отырып, белгілі бір дәрежеде машина тілінде программа жасаудағы кемшіліктерді жоюға мүмкіндік береді. Ассемблер тілінде программаның барлық элементтері таңбалармен берілетіндігі оның басты артықшылығы болып табылады. Басқаша айтқанда ассемблер тілінің машина командаларының цифрлық кодтарын әріптермен немесе әріп-цифрлармен таңбалауға және деректердің таңбалық аттарын пайдалануға мүмкіндік беретіндігі оның машина тілінен айырмашылығы болып табылады.
1. Ассемблер тілі - машиналық тіл
Ассемблер тілінің командаларын машина тіліне аударғанда машина командасын білдіретін әрбір оператор осы команданың цифрлық кодтарымен алмастырылады. Командалардың таңбалық аттарын олардың екілік кодтарына түрлендіру жұмысы программа жасаушы адамды өте қиын әрі күрделі машақаты көп жұмыстан босататын және бұл жағдайда құтылуға болмайтын қателіктерден құтқаратын арнайы программа-ассемблерге жүктеледі. Ассемблер тілінде программалауда пайдаланылатын таңбалық аттар программаның семантикасын, ал команданың қысқартылып берілген атаулары оның негізгі функциясын білдіреді. Мысалы, АДД-қосу, СҰБ-азайту, ПАРАМ-параметр т. с. с. Мұндай аттарды программа жасаушылар оңай есінде сақтайтын болады. Ассемблер тілінде программа жасау үшін машина тілінде программа жасағандағыдан көп күрделі құралдар қажет болады: ‘
• сыртқы құрылғылармен жабдықталған дербес компьютер;
• процессордың түріне қарай резиденттік немесе жүйелік программалар.
Машина тіліне қарағанда ассемблер тілі едәуір күрделі, программаларды ұтымды жазуға және жөндеуге мүмкіндік береді. Ассемблер тілі машинаға бағдарланған тіл, яғни процессордың әрбір командасына таңбалық ат меншіктейтіндіктен машина тіліне және процессордың құрылысына тәуелді тіл болып табылады. Программа жасауда ассемблер тілі машина тіліне қарағанда программа жасаушылардың еңбек өнімділігін арттыруға сонымен бірге процессордың программалық және аппараттық ресурстарын толық пайдалануға мүмкіндік береді. Бұл біліктілігі жоғары программалаушыларға жоғары деңгейлі тілдермен жасалған программамен салыстырғанда компьютердің жадында аз орын алатын жылдам жұмыс істейтін программалар жасауға мүмкіндік береді. Ассемблер тілінің осындай артықшылықтарына байланысты ендіру-шығару құрылғыларын басқарушы программалар неше түрлі жоғары деңгейлі тілдердің көптігіне қарамай ассемблер тілінде жазылады. Ассемблер тілінің көмегімен программа жасаушы адам мынадай параметрлерді бере алады:
• процессордың машина тілінің әрбір командасының таңбалық атын;
• ассемблер тілінде жазылған программалық қатардың стандартты пішімін;
• командалардың нұсқаларын және адрестеудің тәсілдерін қалай көрсету керектігі туралы пішімді;
• таңбалық тұрақтыларды және бүтін сандық тұрақтыларды әртүрлі санақ жүйелерінде көрсету үлгілерін;
• программалауды ассемблерлеу (транслациялау) процесін басқарушы пседокомандаларды.
Ассемблер тілінде жазылған программа кез келген басқа тілдерде жазылған программаларға қарағанда өте тез орындалады. Мысалы, ассемблер тілінде жазылған программа дәл осы программаға баламалы СИ немесе Pascal тілдерінде жазылған программалардан екі-үш есе, ал Basic тілінде жазылған программалардан он бес және одан да көп есе тез орындалады. Ассемблер тіліндегі программалар басқа тілдерде жазылған программаларға қарағанда өлшемі жағынан шағын болады, сондықтан компьютердің жадын үнемдеуге мүмкіндік береді. Ассемблер тіліндегі программалар компьютердің барлық мүмкіндіктерін толық ұтымды пайдалануға сізге жол ашады. Ассемблер тілін әрқайсысы машина командаларының бір тобына баламалы макрокомандалармен толықтыру жүйе қолданылады. Мұндай тіл макроассемблер тілі деп аталады. Макрокомандаларды пайдалану ірі құрылыс блоктарының программаларын құруға мүмкіндік береді және ассемблер тілін жоғары деңгейлі тілдерге жақындатады.
Ассемблер тілі - машиналық тілдің аналогы болып саналады. Ассемблер тілінде жазылған программа МП-р құрылысының ерекшеліктерін: жадтың ұйымдастырылуын, операцияларды адрестеу тәсілдерін, регистрлерді қолдану ережелерін анықтап, көрсету қажет. Әр МП-ң өзінің Ассемблері болады. Ассемблер тілінде жазылған программа жад сегменттері деп аталатын жадблоктарының тобынан тұрады. Программа осындай бір немесе бірнеше блок-сегменттерден тұруы мүмкін. Әр сегмент программа кодының әр қатарында орналасқан сөйлемдерден құрылады.
Ассемблер тілінің сөйлемдері төрт түрлі болады:
Командалар: машиналық кодтардың аналогтары. Бұл командалар трансляциялау кезінде МП-ң сәйкес командаларына түрленеді;
Макрокомандалар: трансляциялау кезінде басқа сөйлемдерге алмасатын сөйлемдер;
Дерективалар: ассемблер трансляторына орындалатын әрекеттер туралы түсінік береді, яғни қызметші ақпараттар жиыны. Дерективалар машиналық кодтарға түрленбейді;
Комментарий: кез-келген белгілерден тұрады.
Ассемблер - бұл төменгі деңгейлі тілдің трансляторы, оның жұмысы мына төменгі схемада бейнеленген.
Ассемблер немесе
макроассемблер
тіліндегі программа
Машина тіліндегі
программа және құрастыру үшін ақпарат
Ассемблер бастапқы модульді объектілік программаның бір түрі болып табылатын объектілік модульге түрлендіреді.
Объектілік модульдің оны оған тәуелсіз трансляцияланған басқа модульдермен біріктіруге және оның жедел жадтағы орналасуын реттеуге арналған машиналық командалары және информациялары бар. Объектілік модуль компьютерлерде тікелей орындалмайды, сондықтан да оны программа құрастырушының қосымша өңденуіне тура келеді.
1. 1. Ассемблер тілінің негізгі артықшылықтары.
Ассемблер тілінің екі негізгі артықшылығы бар:бұл тілдің көмегімен программаны МП командалары деңгейінде жазуға болады және сандық кодтардың барлығын еске сақтауды талап етпейді. Программа командалары жазылып болған соң, Ассемблер программасы шақырылады да, ол бұл командаларды олардың кодтарына айналдырады. Командалар жиыныннан тұратын программа негізгі не алғашқы программа деп аталады, ал негізгі программаның сандық кодтары, яғни машиналық тілге айналған түрі - объектілік программа деп аталады.
Ассемблердің атқаратын негізгі қызметі - қолданушыға түсінікті негізгі программаны МП түсінетін объекттік программаға айналдыру. Ассемблердің кең тараған түрлері: IBM фирмасының МАСМ(Мацро Ассемблер) программасы және Борланд фирмасының ТАСМ (Турбо Ассемблер) прграммасы.
Ассемблер тілінде программа құру келесі кезеңдерден тұрады:
• есептің қойылымы және программасының құрылымын анықтау;
• текстік редактордың көмегімен компьютерге программа командаларын енгізу;
• ассемблердің көмегімен программаны трансляциялау;
• загрузчик (жадқа жүктеуші программа) көмегімен трансляцияланған программаны (сандық кодтарды) өздігінен орындалатын модульге айналдыру;
• программаны орындау;
• отладчиктің көмегімен программаны жүргізу.
2-ші кезеңде қолданылатын редактор ретінде WORD редакторінен басқа кез-келген текстік редакторді қолдануға болады. Негізгі программа операторлар тізбегінен тұрады. Оператор ретінде Ассемблер тілінің командалары немесе псевдокомандалар қолданылады.
Ассемблер тілі - ол әрбір жеткізуі бір машиналық командаға сәйкес болатын тіл. Ассемблер тілінің программасында машиналық командалар мен операторлардың арасында бірмәнді сәйкестік бар. Мұнда екілік және сегіздік аттар мен адрестердің орнына символдық белгілеулер қолданылады.
1. 2. Ассемблер тілінің басқа жоғары деңгейлі тілдерден айырмашылықтары.
Ассемблер тілінің басқа жоғары деңгейлі тілден айырмашылықтары:
• ассемблер тілінің жеткізілуі мен машиналық командалардың арасындағы бірмәнді сәйкестік;
• машиналардағы барлық объектілер мен командаларға қатынау;
• бір тектес компьютерлердегі жұмыс.
Ассемблер тілін қолданудың екі негізгі ерекшеліктері бар: жоғары өнімділігі мен машинаға қатынау. Көбіне программада барлық кодтың азғантай пайызы программаның орындалу уақытының көбірек пайызына жауап береді. Мысалы, программаның 10% оның орындалу уақытының 90%-на жауапты. Бұл программаның 10% оны ассемблер тіліне жазып алуды жүзеге асырады. Бұл процессті реттеу (тюнинг) деп аталады. Ассемблердегі программа көлемі бойынша соншалықты кіші және орындалу жылдамдығы бойынша соншалықты тез болуы мүмкін. Кейбір процедураларға ассемблер жасай алатындай аппараттық қамтамасыз етуге толық қатынау қажет. Бұл категорияларға операциялық жүйедегі үзіліс өңдеушілері мен үзілістер, сол секілді реттелген жүйелердегі құрылғылардың тексерушілері келіп түседі. Ассемблер тілі - машина тілінде жазылған, программаның оқуға жеңіл символдық түрінде ұсыну үшін арналған. Ол программистке операциялардың мнемоникалық кілттерімен қолдану, жадтың аймақтарына және ұяшықтарға өзіне қолайлы аттарды беру, және де адресациялаудың аса қолайлы схемаларын беру мүмкіндігін береді. Ассемблер тілінде оператор құрылымы машиналық командаға сәйкес құрылымды білдіреді. Әр түрлі машиналар мен әр түрлі деңгейлердегі ассемблер тілі бір-бірімен ұқсас. Intel компьютерлеріндегі Microsoft MASM, SPARC процестеріне Sun ассемблерге мысал бола алады.
Ассемблер тілінің жеткізілуі төртке бөлінеді. Олар: белгі, операция, операнд және комментарий алаңдарынан тұрады.
Белгілер жады адресіне арналған символикалық аттармен қамтамасыз ету үшін қолданылады. Олар командаларға өту және деректі сөздердің сақтайтын жерге символдың аттары бойынша қатынау мүмкіндігін алу қажет.
Егер жеткізу машиналық команданың символикалық репрезентациясы, не бұл кодтың символикалық аббревиатурасы, не ассемблердің өзіне арналған командасы болып табылса, онда операция коды алаңында жатады.
Операндтардың алаңдары машиналық командалар үшін операндтар болып табылатын адрестер мен регистрлерді анықтайды. Регистрлер. тұрақтылар, жады ұяшықтары және т. б. операндар болуы мүмкін.
Комментарий алаңында программа әрекетінің түсіндірмесі келтіріледі. Бұл комментарийлерсіз ассемблердегі программаларды түсіну өте қиын.
2. Ассемблер тілінің синтаксисі, алфавиті. Тұрақтылар.
Программа сөйлемдерін (команда, макрокоманда, директива, коментарий) ассемблер трансляторы айқын анықтау үшін олар белгілі бір синтаксистік ережелерге сәйкес қалыптастырылуы тиіс. Ассемблер тіліндегі әр команда 4 өрістен тұруы мүмкін. Мысалы: get: mov cx, di; cх регистріне di регистрінің мәнін меншіктеу. Бұл жерде get белгіні білдіреді, mov - меншіктеу командасы, cx, di операцияларды білдіреді, ал белгісінен кейін тұрған мәлімет - коментарий.
2. 1. Директивалар (Псевдокомандалар)
Директивалардың (псевдокомандалардың) көмегімен сегменттер мен процедураларды анықтауға, командалар мен мәліметтер элементтеріне ат беруге, жадтың жұмысшы аумақтарын анықтауға және т. с. с. әрекеттерді орындауға болады. Директивалардың жазылу түрлері:
Жиі кездесетін директивалардың түрлері :
СЕГМЕНТ НДС - негізгі программаны сегменттерге бөледі, сегменттің басын және аяғын білдіреді. Сегмент түрлерін анықтау үшін АССҰМЕ директивасы қолданылады. Оның жазылу түрі: Мұндағы, сегмент_регистрі - ДС, ЦС, СС, ЕС сегмент регистрінің аты, : сегмент_аты - СЕГМЕНТ ДИРЕКТИВАСЫНДА КӨРСЕТІЛГЕН АТ.
ПРОЦ НДП процедураның басын және соңын білдіреді. Процедура дегеніміз - программаның әр жерінде орындалатын командалардың тізбегі.
Ассемблер тілінде кездесетін тұрақтылардың түрлері:
екілік сандық жүйесіндегі тұрақтылар: 0 және 1-ден тұратын сандар тізбегі. Тізбектің соңында В әрпі жазылады. Мысалы: 1011011В.
орындық сандық жүйесіндегі тұрақтылар: 0+9 аралығында сандар. Д әрпімен аяқталуы мүмкін. Мысалы: 927 не 927Д.
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. Разрядтық аумақ - разрядтарлың тізбегі.
3. Ассемблер тілінің арифметикалық командалары.
Арифметикалық командалар жиыны сандардың екі түрімен жұмыс істейді.
Екілік бүтін оң және теріс сандар
Бүтін ондық сандар.
Сандарды қосу командалары.
Ine rand - инкремент амалы, яғни операнд мәнін 1-ге арттыру. Мысалы: ine ah - aһ регистрінің мәнін 1-ге арттырады.
add операнд 1, операнд 2 - қосу амалы. Нәтиже операнд 1-ге жазылады, яғни оп-д1=оп-д1+оп-д2
аdd оп-д 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 рeгистрін тазарту
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
Бұл команданың нәтижесінде нәтиженің жоғарғы үлкен бөлігі аһ регистрінде, кіші бөлігі al регистрінде орналасады.
Сандарды бөлу. Команданың жазылу түрі: div бөлінгіш. Бөлінгіш жадта немесе регистрде орналасуы мүмкін және 8, 16, 32 разрядты болуы мүмкін. Нәтиже, яғни бөлінді ал регистріне, қалдық аһ регистріне орналасады.
Мысалы:
del мәнін delt-қа бөлеміз
. . .
del dw 29876
delt db 45
sub ax, ax
mov ax, del
div delt
. . .
Нәтижесінде ал регистріне бөлінді, аһ регистріне қалдық орналасады.
Мысал:
1. 47, 25 екі саны берілген. Оларды bһ, bl1 байтты регистрлеріне орналастырып, олардың қосындысын, айырмасын табу, 25 санын 5-ке көбейту, 47 санын 16-ға бөлу.
... жалғасы- Іс жүргізу
- Автоматтандыру, Техника
- Алғашқы әскери дайындық
- Астрономия
- Ауыл шаруашылығы
- Банк ісі
- Бизнесті бағалау
- Биология
- Бухгалтерлік іс
- Валеология
- Ветеринария
- География
- Геология, Геофизика, Геодезия
- Дін
- Ет, сүт, шарап өнімдері
- Жалпы тарих
- Жер кадастрі, Жылжымайтын мүлік
- Журналистика
- Информатика
- Кеден ісі
- Маркетинг
- Математика, Геометрия
- Медицина
- Мемлекеттік басқару
- Менеджмент
- Мұнай, Газ
- Мұрағат ісі
- Мәдениеттану
- ОБЖ (Основы безопасности жизнедеятельности)
- Педагогика
- Полиграфия
- Психология
- Салық
- Саясаттану
- Сақтандыру
- Сертификаттау, стандарттау
- Социология, Демография
- Спорт
- Статистика
- Тілтану, Филология
- Тарихи тұлғалар
- Тау-кен ісі
- Транспорт
- Туризм
- Физика
- Философия
- Халықаралық қатынастар
- Химия
- Экология, Қоршаған ортаны қорғау
- Экономика
- Экономикалық география
- Электротехника
- Қазақстан тарихы
- Қаржы
- Құрылыс
- Құқық, Криминалистика
- Әдебиет
- Өнер, музыка
- Өнеркәсіп, Өндіріс
Қазақ тілінде жазылған рефераттар, курстық жұмыстар, дипломдық жұмыстар бойынша біздің қор #1 болып табылады.

Ақпарат
Қосымша
Email: info@stud.kz