Автор работы: Пользователь скрыл имя, 01 Марта 2013 в 18:31, реферат
Ассемблер тілі - машиналық тідің аналогы болып саналады. Ассемблер тілінде жазылған программа МП-р құрылысының ерекшеліктерін: жадтың ұйымдастырылуын, операндтарды адрестеу тәсілдерін, регистрлерді қолдану ережелерін анықтап, көрсету қажет. Әр МП-ң өзінің Ассемблері болады.
1 Ассемблер тілінде программа құру кезеңдері.
2 Ассемблер тілінің синтаксисі, алфавиті. Тұрақтылар.
2.1 Директивалар (Псевдокомандалар)
2.2 Ассемблер тіліндегі мәндер түрлері
3 Ассемблер тілінің арифметикалық командалары
4 Пайдаланған әдебиет
Ассемблер тілі
Уикипедия — ашық энциклопедиясынан алынған мәлімет
Мында өту: шарлау, іздеу
Ассемблер тілі - машиналық тідің аналогы болып саналады. Ассемблер тілінде жазылған программа МП-р құрылысының ерекшеліктерін: жадтың ұйымдастырылуын, операндтарды адрестеу тәсілдерін, регистрлерді қолдану ережелерін анықтап, көрсету қажет. Әр МП-ң өзінің Ассемблері болады.
Ассемблер тілінде жазылған
программа жад сегменттері деп
аталатын жадблоктарының тобынан тұрады.
Программа осындай бір немесе
бірнеше блок-сегменттерден
Ассемблер тілінің сөйлемдері төрт түрлі болады:
Ассемблер тілінің екі артықшылығы бар:
Бұл тілдің көмегімен программаны
МП командалары деңгейінде жазуға болады
және сандық кодтардың барлығын еске
сақтауды талап етпейді. Программа
командалары жазылып болған соң,
Ассемблер программасы
Ассемблердің атқаратын
негізгі қызметі – қолданушыға
түсінікті негізгі прогрпмманы
МП түсінетін объекттік
Мазмұны
|
Ассемблер тілінде программа құру кезеңдері.
Ассемблер тілінде программа құру келесі кезеңдерден тұрады:
2-ші кезеңде қолданылатын
редактор ретінде WORD редакторінен
басқа кез-келген текстік
Ассемблер тілінің синтаксисі, алфавиті. Тұрақтылар.
Программа сөйлемдерін (команда, макрокоманда, директива, коментарий) ассемблер трансляторы айқын анықтау үшін олар белгілі бір синтаксистік ережелерге сәйкес қалыптастырылуы тиіс.
Ассемблер тіліндегі әр команда 4 өрістен тұруы мүмкін.
Мысалы: get: mov cx,di; cx регистріне di регистрінің мәнін меншіктеу Бұл жерде get белгіні білдіреді, mov – меншіктеу командасы, cx, di операндтарды білдіреді, ал; белгісінен кейін тұрған мәлімет – коментарий.
Директивалар (Псевдокомандалар)
Директивалардвң (псевдокомандалардың) көмегімен сегменттер мен пройедураларды анықтауға, командалар мен мәліметтер элементтеріне ат беруге, жадтың жұмысшы аумақтарын анықтауға және т.с.с. әрекеттерді орындауға болады. Директивалардвң жазылу түрлері:
Жиі кездесетін директивалардың түрлері :
Ассемблер тілінде кездесетін тұрақтылардың түрлері:
Теріс сандарды енгізу үшін келесі тәсілдер қолданылады: егер сан ондық жүйеде болса, алдына минус белгісі қойылады, егер сан 2-лік не 16-лық жүйеде болса, оны толықтырғыш кодқа ауыстыру керек.
Ассемблер тіліндегі мәндер түрлері
Мәндер өздерінің көлеміне байланысты келесі түрлерге бөлінеді:
Мәндер логика құрылысына байланысты келесі түрлерге бөлінеді:
1.таңбалы бүтін мән
– 8, 16, 32 биттен тұратын екілік
жүйедегі берілген таңбалы мән.
Мәндердің берілу аралығы:
2.Таңбасыз бұтін мән – 8, 16, 32 биттен тұратын таңбасыз екілік жүйеде берілген мән. Мәндердің берілу аралығы:
3.Жадты көрсету мәні 2 түрден тұрады:
4.Тізбек – байт, сөз, қос сөзден тұрады, көлемі 4 Гбайт-қа дейін болуы мүмкін.
5.Разрядтық аумақ – разрядтарлың тізбегі.
Ассемблер тілінің арифметикалық командалары
Арифметикалық командалар жиыны сандардың екі түрімен жұмыс істейді.
Сандарды қосу командалары.
Мысалы:
mov al, 01
add al, 11
adc ah, 1
Сандарды алу командалары
Мысалы:
sub ax, ax; ax ргистрін тазарту
mov al, 0101 ; al регистріне 0101 санын енгізу
sub al, 1010 ; al регистрінен 1010-ды алу
neg al; модуль немесе санның қосымша коды.
Сандарды көбейту.
Мысалы:
... ...
sub ax, ax
mov al, 25
mul rez_1
rez_1 db 45
Бұл команданың нәтижесінде нәтиженің жоғарғы үлкен бөлігі ah регистрінде, кіші бөлігі al регистрінде орналасады.
Сандарды бөлу.
Бөлінгіш жадта немесе регистрде орналасуы мүмкін және 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) программа соңы