§1. Ақпараттық өңдеу құрылғысы Ақпаратты өңдеудің көп бөлігі арифметикалық, логикалық тәсілмен орындалады.
ADD – арифметикалық қосу;
DIV – арифметикалық бөлу;
MUL – арифметикалық көбейту;
SUB – арифметикалық азайту;
Бұл орталық процессормен басқарылатын интегралдық схеманың бөлігі болып, бастапқы компьютерлерде интегралдық схеманың бөлігі 80 – 88 болып құрылғысы болады.
Типтік дербес компьютерлерде бірнеше мыңдаған, әрбірі өз жұмысын атқаратын жеке микропроцессорлардан құралған.
SPU – бұл дербес компьютердің көп бөлігіндегі ақпараттарды өңдеуге арналған физикалық компонент.
Ақпаратты сақтау құрылғысы – ақпаратты компьютерде сақтаудың бірнеше тәсілдері бар: ақпаратты өңдеу барысында сақтау, осы сақтау тізбегі компьютердің ішінде немесе оның орындаушы бөлігінде сақталуы керек. Сақтау құрылғысы ретінде ақпартты бір компьютерден екінші компьютерге тасымалдау функциясы атқарады.Сондықтан сақтау құрылғысы тасымалдаушы ақпаратты өз жадында сақтау керек. Ақпаратты өңдеудің екінші тәсілінде ақпарат сақталған жерде орналасады. Ол дербес компьютерде ақпарат сақтау бірнеше құрылғы бар:
Ақпарат ешқашан өзгермейді;
Ақпарат дербес компьютерде сақталады;
Оперативтік сақтау құрылғысы;
Белгілер және кодтар Кодтар – ақпаратты көрсету әдісі. Кодты білген жағдайда біз ақпаратты оқи аламыз. Кез – келген код таблица немесе кодталған белгілер қатары түрінде кездесуі мүмкін. Нақты белгілер қатары кодтар. Әрбір белгінің мағынасы және белгілер саны барлық нақты кодталу схемасын құрайды. Дербес компьютерде кодтар белгілер тобы сақталу – бит, байт белгілер жиыны және кодтар.
Техникалық хаттамаларда және дербес компьютерлерде кодтар 3 тәсілмен талқыланады:
16 код
ASCII
EBCDIC
§2. Ассамблер тілі Ассемблер тілі - машиналық тідің аналогы болып саналады. Ассемблер тілінде жазылған программа микропроцессордың құрылысының ерекшеліктерін: жадтың ұйымдастырылуын, операндтарды адрестеу тәсілдерін, регистрлерді қолдану ережелерін анықтап, көрсету қажет. Әр МП-ң өзінің Ассемблері болады.
Ассемблер тілінде жазылған программа жад сегменттері деп аталатын жадблоктарының тобынан тұрады. Программа осындай бір немесе бірнеше блок-сегменттерден тұруы мүмкін. Әр сегмент программа кодының әр қатарында орналасқан сөйлемдерден құрылады.
Ассамблер тілінде программаның барлық элементтері таңбалармен берілетіндігі оның басты артықшылығы болып табылады.Басқаша айтқанда ассамблер тілінің машина командаларының цифрлық кодтарын әріптермен немесе әріп-цифрлармен таңбалауға және деректердің таңбалық аттарын пайдалануға мүмкіндік беретіндігі оның машина тілінен айырмашылығы болып табылады. Ассамблер тілінің командаларын машина тіліне аударғанда машина командасын білдіретін әрбір оператор осы команданың цифрлық кодтарымен алмастырылады. Командалардың таңбалық аттарын олардың екілік кодтарына түрлендіру жұмысы программа жасаушы адамды өте қиын әрі күрделі машақаты көп жұмыстан босататын және бұл жағдайда құтиылоуға болмайтын қателіктерден құтқаратын арнайы программа-ассамблерге жүктеледі. Ассамблер тілінде программалауда пайдаланылатын таңбалық аттар программаның семантикасын, ал команданың қысқартылып берілген атаулары оның негізгі функциясын білдіреді.Мысалы, ADD-қосу, SUB-азайту, PARAM-параметр т.с.с.Мұндай аттарды программа жасаушылар оңай есінде сақтайтын болады. Ассамблер тілінде программа жасау үшін машина тілінде программа жасағандағыдан көп күрделі құралдар қажет болады: ‘
• сыртқы құрылғылармен жабдықталған дербес компьютер;
• процессордың түріне қарай резиденттік немесе жүйелік программалар.
Машина тіліне қарағанда ассамблер тілі едәуір күрделі, программаларды ұтымды жазуға және жөндеуге мүмкіндік береді. Ассамблер тілі машинаға бағдарланған тіл, яғни процессордың әрбір командасына таңбалық ат меншіктейтіндіктен машина тіліне және процессордың құрылысына тәуелді тіл болып табылады. Программа жасауда ассамблер тілі машина тіліне қарағанда программа жасаушылардың еңбек өнімділігін арттыруға сонымен бірге процессордың программалық және аппараттық ресурстарын толық пайдалануға мүмкіндік береді. Бұл біліктілігі жоғары программалаушыларға жоғары деңгейлі тілдермен жасалған программамен салыс–тырғанда компьютердің жадында аз орын алатын жылдам жұмыс істейтін программалар жасауға мүмкіндік береді. Ассамблер тілінің осындай артықшылықтарына байланысты ендіру-шығару құрылғыларын басқарушы программалар неше түрлі жоғары деңгейлі тілдердің көптігіне қарамай ассамблер тілінде жазылады. Ассамблер тілінің көмегімен программа жасаушы адам мынадай параметрлерді бере алады:
• процессордың машина тілінің әрбір командасының таңбалық атын;
• ассамблер тілінде жазылған программалық қатардың стандартты пішімін;
• командалардың нұсқаларын және адрестеудің тәсілдерін қалай көрсету керектігі туралы пішімді;
• таңбалық тұрақтыларды және бүтін сандық тұрақтыларды әртүрлі санақ жүйелерінде көрсету үлгілерін;
• программалауды ассамблерлеу (транслациялау) процесін басқарушы пседокомандаларды.
Ассамблер тілі кез келген компьютерге түсінікті,өйткені басқа барлық тілдерге қарағанда машина тіліне ең жақын тіл ол ассамблер тілі. Бұл тіл копьютнрмен жақынырақ танысуға мүмкіндік береді. Сондықтан да ассамблерді оқу дегеніміз процессордың өзін оқып үйрену деген сөз. Ассемблер тілінде жазылған программа кез келген басқа тілдерде жазылған программаларға қарағанда өте тез орындалады. Мысалы, ассемблер тілінде жазылған программа дәл осы программаға баламалы СИ немесе Паскаль тілдерінде жазылған программалардан екі-үш есе, ал BASIC тілінде жазылған программалардан он бес және онда да көп есе тез орындалады. Ассемблер тіліндегі программалар басқа тілдерде жазылған программаларға қарағанда өлшемі жағынан шағын болады, сондықтан компьютердің жадын үнемдеуге мүмкіндік береді. Ассемблер тіліндегі программалар компьютердің барлық мүмкіндіктерін толық ұтымды пайдалануға сізге жол ашады. Ассемблер тілін әрқайсысы машина командаларының бір тобына баламалы макрокомандалармен толықтыру жүйе қолданылады. Мұндай тіл макроассемблер тілі деп аталады. Макрокомандаларды пайдалану ірі құрылыс блоктарының программалар құруға мүмкіндік береді және ассемблер тілін жоғары деңгейлі тілдерге жақындатады.
Ассемблер тілінің сөйлемдері төрт түрлі болады:
Командалар: машиналық кодтардың аналогтары. Бұл командалар трансляциялау кезінде МП-ң сәйкес командаларына түрленеді;
Макрокомандалар: трансляциялау кезінде басқа сөйлемдерге алмасатын сөйлемдер;
Дерективалар: ассемблер трансляторына орындалатын әрекеттер туралы түсінік береді, яғни қызметші ақпараттар жиыны. Дерективалар машиналвқ кодтарға түрленбейді;
Комментарий: кез келген белгілерден тұрады.
Ассемблер тілінің екі артықшылығы бар:
Бұл тілдің көмегімен программаны МП командалары деңгейінде жазуға болады және сандық кодтардың барлығын еске сақтауды талап етпейді. Программа командалары жазылып болған соң, Ассемблер программасы шақырылады да, ол бұл командаларды олардың кодтарына айналдырады. Командалар жиыныннан тұратын программа негізгі не алғашқы программа деп аталады, ал негізгі программаның сандық кодтары, яғни машиналық тілге айналған түрі – объектік программа деп аталады.
Ассемблердің атқаратын негізгі қызметі – қолданушыға түсінікті негізгі прогрпмманы МП түсінетін объекттік программаға айналдыру. Ассемблердің кең тараған түрлері: 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