Ассемблердегі негізгі бадарламалау

Ассемблер тілі - машиналы тіді аналогы болып саналады. Ассемблер тілінде жазылан программа МП-р рылысыны ерекшеліктерін: жадты йымдастырылуын, операндтарды адрестеу тсілдерін, регистрлерді олдану ережелерін анытап, крсету ажет. р МП- зіні Ассемблері болады.

Ассемблер тілінде жазылан программа жад сегменттері деп аталатын жадблоктарыны тобынан трады. Программа осындай бір немесе бірнеше блок-сегменттерден труы ммкін. р сегмент программа кодыны р атарында орналасан сйлемдерден рылады.

Ассемблер тіліні сйлемдері трт трлі болады:

1. Командалар: машиналы кодтарды аналогтары. Бл командалар трансляциялау кезінде МП- сйкес командаларына трленеді;

2. Макрокомандалар: трансляциялау кезінде баса сйлемдерге алмасатын сйлемдер;

3. Дерективалар: ассемблер трансляторына орындалатын рекеттер туралы тсінік береді, яни ызметші апараттар жиыны. Дерективалар машиналв кодтара трленбейді;

4. Комментарий: кез келген белгілерден трады.

Ассемблер тіліні екі артышылыы бар:

Бл тілді кмегімен программаны МП командалары дегейінде жазуа болады жне санды кодтарды барлыын еске сатауды талап етпейді. Программа командалары жазылып болан со, Ассемблер программасы шаырылады да, ол бл командаларды оларды кодтарына айналдырады. Командалар жиыныннан тратын программа негізгі не алашы программа деп аталады, ал негізгі программаны санды кодтары, яни машиналы тілге айналан трі – объектік программа деп аталады.

Ассемблерді атаратын негізгі ызметі – олданушыа тсінікті негізгі прогрпмманы МП тсінетін объекттік программаа айналдыру. Ассемблерді ке тараан трлері: IBM фирмасыны MASM(Macro Assembler) программасы жне Borland фирмасыны TASM (Turbo Assembler) прграммасы.

Ассемблер тілінде программа ру кезедері.[деу]

Ассемблер тілінде программа ру келесі кезедерден трады:

1. есепті ойылымы жне программасыны рылымын анытау;

2. текстік редакторды кмегімен компьютерге программа командаларын енгізу;

3. Ассемблерді кмегімен программаны трансляциялау;

4. загрузчик (жада жктеуші программа) кмегімен трансляцияланан программаны (санды кодтарды) здігінен орындалатын модульге айналдыру;

5. программаны орындау;

6. отладчикті кмегімен программаны жргізу.

2-ші кезеде олданылатын редактор ретінде WORD редакторінен баса кез келген текстік редакторді олдануа болады. Негізгі программа операторлар тізбегінен трады. Оператор ретінде Ассемблер тіліні командалары немесе псевдокомандалар олданылады.

Ассемблер тіліні синтаксисі, алфавиті. Тратылар.[деу]

Программа сйлемдерін (команда, макрокоманда, директива, коментарий) ассемблер трансляторы айын анытау шін олар белгілі бір синтаксистік ережелерге сйкес алыптастырылуы тиіс.

Ассемблер тіліндегі р команда 4 рістен труы ммкін.

Мысалы: get: mov cx,di; cx регистріне di регистріні мнін меншіктеу Бл жерде get белгіні білдіреді, mov – меншіктеу командасы, cx, di операндтарды білдіреді, ал; белгісінен кейін тран млімет – коментарий.

Директивалар (Псевдокомандалар)[деу]

Директивалардв (псевдокомандаларды) кмегімен сегменттер мен пройедураларды анытауа, командалар мен мліметтер элементтеріне ат беруге, жадты жмысшы ауматарын анытауа жне т.с.с. рекеттерді орындауа болады. Директивалардв жазылу трлері:

Жиі кездесетін директиваларды трлері :

1. SEGMENT ENDS – негізгі прграмманы сегменттерге бледі, сегментті басын жне аяын білдіреді. Сегмент трлерін анытау шін ASSUME директивасы олданылады. Оны жазылу трі: Мндаы, сегмент_регистрі – DS, CS, SS, ES сегмент регистріні аты, : сегмент_аты – SEGMENT ДИРЕКТИВАСЫНДА КРСЕТІЛГЕН АТ.

2. PROC ENDP процедураны басын жне соын білдіреді. Процедура дегеніміз – программаны р жерінде орындалатын командаларды тізбегі.

Ассемблер тілінде кездесетін тратыларды трлері:

1. екілік санды жйесіндегі тратылар: 0 жне 1-ден тратын сандар тізбегі. Тізбекті соында В рпі жазылады. Мысалы: 1011011В.

2. орынды санды жйесіндегі тратылар: 0+9 аралыында сандар. D рпімен аяталуы ммкін. Мысалы: 927 не 927D.

3. 16-лы санды жйесіндегі тратылар: 0+9 аралыында сандар, А+ латын ріптері. Н рпімен аяталады. Алашы символ сан болуы тиіс. Мысалы: 1Е23Н.

4. символдарды тратылар – тырнашаа алынып жазылан ріп, сан не символдар тізбегі.

Теріс сандарды енгізу шін келесі тсілдер олданылады: егер сан онды жйеде болса, алдына минус белгісі ойылады, егер сан 2-лік не 16-лы жйеде болса, оны толытырыш кода ауыстыру керек.

Ассемблер тіліндегі мндер трлері[деу]

Мндер здеріні клеміне байланысты келесі трлерге блінеді:

1. Байт - 8 бит

2. Сз – 2 байт, биттер (разрядтар) 0-ден 15-ке дейін нмірленеді, нольдік разряды бар байт – кіші байт деп аталады., 15-ші разряды бар байт лкен байт деп аталады.

3. оз сз – 4 байт-32 бит, лкен сз, кіші сзден трады.

4. Трт сз – 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.Разрядты аума – разрядтарлы тізбегі.

Ассемблер тіліні арифметикалы командалары[деу]

Арифметикалы командалар жиыны сандарды екі трімен жмыс істейді.

1. Екілік бтін о жне теріс сандар

2. Бтін онды сандар.

Сандарды осу командалары.

1. ine ранд – инкремент амалы, яни операнд мнін 1-ге арттыру. Мысалы: ine bh – bh регистріні мнін 1-ге арттырады.

2. add операнд 1, операнд 2 - осу амалы. Нтиже операнд 1-ге жазылады, яни оп-д1=оп-д1+оп-д2

3. ade оп-д 1, оп-д 2 – келесі разряда кшу жолаушысыны (cf) нтижесін олданып осу амалы. Нтиже операнд 1-ге жазылады, яни оп-д 1=оп-д 1+по-д 2+cf

Мысалы:

mov al, 01

add al, 11

adc ah, 1

Сандарды алу командалары

1. dec операнд – декремент амалы, яни операнд мнін 1-ге кеміту.

2. sub операнд 1, операнд 2 – алу амалы, нтиже операнд 1-ге жазылады.

3. 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) программа соы

[1]

 

Дереккздер[деу]

1. Жоарыа ктерілііз аза тілі терминдеріні салалы ылыми тсіндірме сздігі: Информатика жне компьютерлік техника / Жалпы редакциясын басаран – тсіндірме сздіктер топтамасын шыару жніндегі ылыми-баспа бадарламасыны ылыми жетекшісі, педагогика ылымдарыны докторы, профессор, азастан Республикасы Мемлекеттік сыйлыыны лауреаты А. . сайынов. – Алматы: «Мектеп» баспасы» ЖА, 2002 жыл. – 456 бет. ISBN 5-7667-8284-5

Дереккздер

[деу]

1. Жоарыа ктеріліі за тілі терминдеріні салалы ылыми тсіндірме сздігі: Информатика жне компьютерлік техника / Жалпы редакциясын басаран – тсіндірме сздіктер топтамасын шыару жніндегі ылыми-баспа бадарламасыны ылыми жетекшісі, педагогика ылымдарыны докторы, профессор, азастан Республикасы Мемлекеттік сыйлыыны лауреаты А. . сайынов. – Алматы: «Мектеп» баспасы» ЖА, 2002 жыл. – 456 бет. ISBN 5-7667-8284-5

Санат:

· Апараттану

· Компьютерлік техника