Ассемблерде бағдарламаны өңдеу этаптары
Мазмұны
Кіріспе ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..6
1 Ассемблерде бағдарламаны өңдеу этаптары ... ... ... ... ... ... ... ... ... ... ... ... ... 7
1.1 Ассемблер тілінде бағдарламаны талдау этаптары ... ... ... ... ... ... ... ... .7
1.2 Командалардың форматтары және олардың классификациясы ... ... ... ..7
1.3 Алдын ала анықталған аттары ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..9
1.4 Операторлар ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...10
1.5 Директивалар ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 10
1.6 Сілтемелік командалар ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 12
1.7 Арифметикалық командалар: қосу, азайту, көбейту және
белгімен және белгісіз бөлу ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .14
2 Есептің қойылымы ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 16
2.1 Шартсыз өту ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 16
2.2 Салыстыру және шартты ауыстыру командалары ... ... ... ... ... ... ... .16
2.3 Массивтер ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .17
2.4 INT. үзілісті командасы ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 19
Қорытынды ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...25
Қолданылған әдебиеттер ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..26
Қосымшалар
Кіріспе ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..6
1 Ассемблерде бағдарламаны өңдеу этаптары ... ... ... ... ... ... ... ... ... ... ... ... ... 7
1.1 Ассемблер тілінде бағдарламаны талдау этаптары ... ... ... ... ... ... ... ... .7
1.2 Командалардың форматтары және олардың классификациясы ... ... ... ..7
1.3 Алдын ала анықталған аттары ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..9
1.4 Операторлар ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...10
1.5 Директивалар ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 10
1.6 Сілтемелік командалар ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 12
1.7 Арифметикалық командалар: қосу, азайту, көбейту және
белгімен және белгісіз бөлу ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .14
2 Есептің қойылымы ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 16
2.1 Шартсыз өту ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 16
2.2 Салыстыру және шартты ауыстыру командалары ... ... ... ... ... ... ... .16
2.3 Массивтер ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .17
2.4 INT. үзілісті командасы ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 19
Қорытынды ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...25
Қолданылған әдебиеттер ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..26
Қосымшалар
Кіріспе
Дербес компьютерлердің пайда болуына байланысты бірден құрылғылар, саңырауқұлақтар дамитындай, өз құрылғыларын ұсынатын сауда артып кетті. Сонымен қатар, осы заттарды сатып ала отырып, сатушылар өздерінің заттарына 100% кепілдік бере алмайды.
Осымен қатар осы заттарда қолданылатын бағдарламалық қамтама саудасы да артып отырды. Саудада көптеген үлкен корпарациялар негізінде: Symantec inc., APS (Advanced Personal Systems), Microsoft және т.б. жазылған әр түрлі диагностикалық бағдарламалар бар, бірақта істегі көптеген бағдарламалардың көп бөлігі жоғары деңгейлі тілде жазылған, бұл дегеніміз жылдам емес және сенімді емес екендігін білдіреді.
Сондықтан осы авторлар өздерінің сенімді және жылдам орындалатын машина-негізделген бағдарламалау тілін –Ассемблерді ойлап тапты.
Ассемблер бағдарламалау тілі бүгінгі таңда кең тараған және белгілі жүйелі бағдарламалау тілі болып отыр. Ассемблер –машиналық тілдің символдық көрінісі. Машиналардағы барлық процесстер ең төмен, аппараттық деңгейде тек машиналық тілдің командаларымен (нұсқамаларымен) жүзеге асады. Бұдан белгілі, жалпы атында , әр компютер типіне өзіндік ассемблер тілі болады. Бұл ассемблерде жазылған бағдарламаның сыртқы көрінісінде де байқалады. Аппаратураға байланыста мәселелерді ассемблер тілін білмей шеше алмайсын. Бағдарламалаушы немесе кез келген қолданушы жоғары деңгейлі бағдарламалау ортасын қолданып, толығымен виртуальды әлемдер ортасын құра отырып, ол компьютерде өзінің бағдарламасындағы командалар емес, негізінде оның ұзақ және қызықсыз түріндегі трансформирленген түрінде мүлдем басқа тілде – машиналық тілде командалар тізбегімен орындалатынын сезбеуіде мүмкін.
Беріліп отырған курстық жұмыс жүйелік бағдарламалық, төмен деңгейлік тілі-Ассемблерде пернетақтамен басқару, қатарлармен жұмысты және циклдық операторларды қолданып жазылды.
Дербес компьютерлердің пайда болуына байланысты бірден құрылғылар, саңырауқұлақтар дамитындай, өз құрылғыларын ұсынатын сауда артып кетті. Сонымен қатар, осы заттарды сатып ала отырып, сатушылар өздерінің заттарына 100% кепілдік бере алмайды.
Осымен қатар осы заттарда қолданылатын бағдарламалық қамтама саудасы да артып отырды. Саудада көптеген үлкен корпарациялар негізінде: Symantec inc., APS (Advanced Personal Systems), Microsoft және т.б. жазылған әр түрлі диагностикалық бағдарламалар бар, бірақта істегі көптеген бағдарламалардың көп бөлігі жоғары деңгейлі тілде жазылған, бұл дегеніміз жылдам емес және сенімді емес екендігін білдіреді.
Сондықтан осы авторлар өздерінің сенімді және жылдам орындалатын машина-негізделген бағдарламалау тілін –Ассемблерді ойлап тапты.
Ассемблер бағдарламалау тілі бүгінгі таңда кең тараған және белгілі жүйелі бағдарламалау тілі болып отыр. Ассемблер –машиналық тілдің символдық көрінісі. Машиналардағы барлық процесстер ең төмен, аппараттық деңгейде тек машиналық тілдің командаларымен (нұсқамаларымен) жүзеге асады. Бұдан белгілі, жалпы атында , әр компютер типіне өзіндік ассемблер тілі болады. Бұл ассемблерде жазылған бағдарламаның сыртқы көрінісінде де байқалады. Аппаратураға байланыста мәселелерді ассемблер тілін білмей шеше алмайсын. Бағдарламалаушы немесе кез келген қолданушы жоғары деңгейлі бағдарламалау ортасын қолданып, толығымен виртуальды әлемдер ортасын құра отырып, ол компьютерде өзінің бағдарламасындағы командалар емес, негізінде оның ұзақ және қызықсыз түріндегі трансформирленген түрінде мүлдем басқа тілде – машиналық тілде командалар тізбегімен орындалатынын сезбеуіде мүмкін.
Беріліп отырған курстық жұмыс жүйелік бағдарламалық, төмен деңгейлік тілі-Ассемблерде пернетақтамен басқару, қатарлармен жұмысты және циклдық операторларды қолданып жазылды.
Пән: Информатика, Программалау, Мәліметтер қоры
Жұмыс түрі: Курстық жұмыс
Тегін: Антиплагиат
Көлемі: 24 бет
Таңдаулыға:
Жұмыс түрі: Курстық жұмыс
Тегін: Антиплагиат
Көлемі: 24 бет
Таңдаулыға:
Мазмұны
Кіріспе
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..
... ... ... ... ... ... ... ... ... ... ...6
1 Ассемблерде бағдарламаны өңдеу
этаптары ... ... ... ... ... ... ... ... ... ... ... ... ... .7
1.1 Ассемблер тілінде бағдарламаны талдау
этаптары ... ... ... ... ... ... ... ... ..7
1.2 Командалардың форматтары және олардың
классификациясы ... ... ... ..7
1.3 Алдын ала анықталған
аттары ... ... ... ... ... ... ... . ... ... ... ... ... ... ... ... ... ..9
1.4
Операторлар ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..
... ... ... ... ... ... ... ..10
1.5
Директивалар ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..
... ... ... ... ... ... ... 10
1.6 Сілтемелік командалар
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..
12
1.7 Арифметикалық командалар: қосу, азайту, көбейту және
белгімен және белгісіз
бөлу ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...14
2 Есептің қойылымы
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..
... ... ... ... 16
2.1 Шартсыз өту
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..
... ... ... ... 16
2.2 Салыстыру және шартты ауыстыру
командалары ... ... ... ... ... ... ... .16
2.3
Массивтер ... ... ... ... ... ... .. ... ... ... ... ... ... ... ... ... ... ..
... ... ... ... ... ... ... ..17
2.4 INT- үзілісті командасы
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..19
Қорытынды
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..
... ... ... ... ... ... ... ...25
Қолданылған
әдебиеттер ... ... ... ... ... ... . ... ... ... ... ... ... ... ... ... ... ..
... ... ... ... ... 26
Қосымшалар
Кіріспе
Дербес компьютерлердің пайда болуына байланысты бірден құрылғылар,
саңырауқұлақтар дамитындай, өз құрылғыларын ұсынатын сауда артып
кетті. Сонымен қатар, осы заттарды сатып ала отырып, сатушылар өздерінің
заттарына 100% кепілдік бере алмайды.
Осымен қатар осы заттарда қолданылатын бағдарламалық қамтама саудасы да
артып отырды. Саудада көптеген үлкен корпарациялар негізінде: Symantec
inc., APS (Advanced Personal Systems), Microsoft және т.б. жазылған әр
түрлі диагностикалық бағдарламалар бар, бірақта істегі көптеген
бағдарламалардың көп бөлігі жоғары деңгейлі тілде жазылған, бұл
дегеніміз жылдам емес және сенімді емес екендігін білдіреді.
Сондықтан осы авторлар өздерінің сенімді және жылдам орындалатын
машина-негізделген бағдарламалау тілін –Ассемблерді ойлап тапты.
Ассемблер бағдарламалау тілі бүгінгі таңда кең тараған және белгілі
жүйелі бағдарламалау тілі болып отыр. Ассемблер –машиналық тілдің
символдық көрінісі. Машиналардағы барлық процесстер ең төмен,
аппараттық деңгейде тек машиналық тілдің командаларымен
(нұсқамаларымен) жүзеге асады. Бұдан белгілі, жалпы атында , әр компютер
типіне өзіндік ассемблер тілі болады. Бұл ассемблерде жазылған
бағдарламаның сыртқы көрінісінде де байқалады. Аппаратураға байланыста
мәселелерді ассемблер тілін білмей шеше алмайсын. Бағдарламалаушы
немесе кез келген қолданушы жоғары деңгейлі бағдарламалау ортасын
қолданып, толығымен виртуальды әлемдер ортасын құра отырып, ол
компьютерде өзінің бағдарламасындағы командалар емес, негізінде оның
ұзақ және қызықсыз түріндегі трансформирленген түрінде мүлдем басқа
тілде – машиналық тілде командалар тізбегімен орындалатынын сезбеуіде
мүмкін.
Беріліп отырған курстық жұмыс жүйелік бағдарламалық, төмен
деңгейлік тілі-Ассемблерде пернетақтамен басқару, қатарлармен жұмысты
және циклдық операторларды қолданып жазылды.
1 Ассемблерде бағдарламаны өңдеу этаптары
1.1 Ассемблер тілінде бағдарламаны талдау этаптары
Микропроцессордың өзіндік ерекшеліктерін толығымен есептейтін
және машиналық командалармен мнемоникалық берілетін бағдарламалау тілін
Ассемблер деп атаймыз. Ассемблер тілінде жазылған бағдарлама бастапқы
бағдарлама деп аталады.
Ассемблер тілінде бағдарламаны талдау келесі этаптардан тұрады:
• Құрылымды сипаттаманы немесе блок-схема түрінде алгоритмді
құру;
• Бастапқы бағдарлама мәтінін PROG.ASM ЭЕМ-гемәтіндер
редакторының көмегімен енгізу қажет, мұндағы PROG кез келген
болуы мүмкін, бірақта кеңейтілімі ASM – міндетті түрде болуы
қажет.
• Бастапқы бағдарлдаманы машиналық кодқа TASM.EXE трансляторының
көмегімен аударамыз (трансляция немесе ассемблирование). Бұл
этапта аралық PROG.OBJ (объектті код) өнімді аламыз. Сонымен
қатар бағдарламалардағы синтаксистік және орфографиялық
қателіктер жөнделіп қайта аударым жүргізіледі.
• TLINK.EXE бағдарлама көмегімен PROG.OBJ объектті коды
орындалатын PROG.EXE немесе PROG.COM кодқа аудару жүргізіледі.
• Егер де логикалық қателіктер кездессе бағдарламаның орындалуы 1
бөлімнен қайта жүргізіледі.
Ассемблер тіліндегі бағдарлама мәтіні келесі операциялардан тұрады:
А) Командалар немесе нұсқамалар;
Ә) Дерективалар немесе
псевдооперациялар;
Б) Операторлар;
В) Алдымен анықталған аттар.
Жоғарыда келтірілген операциялар Ассемблер тілінің командалары болып
табыладыда, трансляция этапында орындалады. Командалар немесе
нұсқамалар деп аталатын операциялар бағдарламаның орындалуы кезінде
орындалады, олар микропроцессорге командалар болып табылады [8].
4 Командалардың форматтары және олардың жіктелуі
Нұсқамалар жеке қатарға жазылып , төрт жолақтан тұрады , оның қажет
еместері [ ] алынып беріледі :
Кесте 1.1- Ассемблер тіліндегі командалар форматы
[белгі:] мнемоникалық_командалар [операнда(лар)] [;комментарий]
Белгі немесе символдық адресс 31 символға дейін ? @ . _ $ белгілерден
және әріп сандардан тұра алады. Сонымен қатар бар болса, сан бірінші
болмауы қажет және нүкте болса ол бірінші болуы керек.
Мнемоника – командалар(КОП) операциясының кодының қысқартылған түрін
білдіреді, мысалға мнемоника ADD көбейтуді (addition) білдіреді.
Операндалар ретінде операция орындалатын анық немесе анық емес
берілетін екілік жиындар болып табылады. Операндалар төрт санақ жүйесінің
бірімен беріледі және міндетті түрде b(B), o(O), d(D), h(H) символдарымен
2,8,10 немесе 16 үшін СС аяқталуы қажет. Оналтылық санақ жүйесінің санына
егер де ол әріптен басталатын болса, оның сол жағына ноль қосылады.
Командалар жүйесі негізгі үш белгі бойынша классифицирленеді
• Команда ұзындығы немесе оның алып отырған байттар саны;
• Функционалды қызметі;
• Адрестеу әдісі.
МП 1810ВМ86 (8086) үшін команда бірден алты байтқа дейін орын алады.
Команданың алғашқы байты болып әрқашанда операция коды болып табылады,
мысалға INT XXh команда коды CD(HEX) тең.
Нұсқаманың функционалды белгісі бойынша үлкен бес топқа бөле
аламыз:
1) берілгендерді қайта сілтеу командасы;
2) арифметикалық командалар;
3) логикалық командалар;
4) ауысымдар командалары;
5) басқару командалары.
Адрестеудің негізгі бес әдісі бар:
• регистрлік;
• тікелей;
• жанамалы;
• стекті;
• қатысынсыз.
Көптеген басқада адрестеу әдістері келтірілгендердің комбинациясы
немесе түрөзгешеліктері болып табылады.
Алдымен операндалар микропроцессордың регистрлерінде орналасады,
мысалға MOV AX,CX командасының көмегімен CX регистріндегі
берілгендер AX –қа аударылады.
Көптеген басқада адрестеу әдістері келтірілгендердің комбинациясы
немесе түрөзгешеліктері болып табылады.
Алдымен операндалар микропроцессордың регистрлерінде орналасады,
мысалға MOV AX,CX командасының көмегімен CX регистріндегі
берілгендер AX –қа аударылады [7].
Сурет 1.1- Ассемблер тілінде бағдарламаны жоспарлау
Операндалардың орталық емес адрестеу кезінде берілгендер КОП –дағы
жадыда сақталады, AL регистрінде MOV AL,0f5h инструкциясына
регистріне 245(f5) саны жазылады.
КОП-ға тікелей адрестеу кезінде операнданың өзі емес, жады
ұяшығының адресі немесе сыртқы құрылғының адресі алынады, мысалға IN
AL,40h командасы 40һ адресті сыртқы құрылғыдан берілгендер байтын
енгізеді.
Жанамалы адрестеу регистрліктен, операнда адресі регистрде
сақталатындығымен ерекшеленеді, өткені MOV AL,[BX] командасы бойынша
а1 аккумуляторге ВХ регистрінде сақталған адресті жады ұяшықтарынан
сандар жазылады.
Стекті адрестеу стек деп аталатын жады аумағында орналасқан
операндаларға жүргізіледі [6].
1.3 Алдын -ала анықталған аттары
1. $ - бағдарламалық счетчик. Бұл символ ағымдағы адресті ағымдағы
сегментте белгілейді. Байттар немесе қатарлардың тізбегінің ұзындығын
анықтағанда қажет болып табылады.
text DB 'This string has NN letters'
NN = $ - text; NN = қатар ұзындығына text (осы қатардағы байттар саны).
Қатар бөлшегі '..NN..' және константа NN! Шатастырмау қажет.
2. @data – берілгендер сегментінің адресінің басы.
...
mov ax,@data
mov ds,ax;
сегменттер регистіріндегі DS енді берілгендер сегментінің адресі
3. ??date, ??time, ??filename – бұл аттар тексеру кезінде , сәйкесінше
ASCII форматында ағымдық уақыт, күн мен файл атына көшіріледі [4].
1.4 Оператолар
1. () – жақшалар, есептеуіштің реттілігін анықтайды
2. [] – тік жақшалар, мысалы [BX] bx регистріндегі жады ұяшығының
берілгендерін білдіреді. Жанамалы адрестеуді білдіреді.
3. +, -, *, - қосу, алу, көбейту және бөлу операторлары.
mov ax, (2 * 3 + 8 2) - 2; ах регистріне 8 саны орналастырылады.
4. MOD – модуль бойынша бөлу. Қалдықты береді.
5. SHL,SHR – солға, оңға жылжыту операндалары.
mov si, 01010101b SHR 3; SI регистіріне будет 0Ah (00001010) саны
жүктелетін болады.
6. NOT – битті инверсия.
7. AND,OR,XOR – Қателік операциялары ! Гиперсілтеменің мүмкін емес
объектісі.
mov dl, (10d OR 5d) XOR 7d; (dl) 8 тең болады.
8. : -сегменттің тағайындалуы.
mov dl,[es:bx]; es сегментінен берілгендер байтын және оның
бастапқысынан (bx) байтқа (араласу) қалып отырған dl орналастыру .
9. OFFSET – сегмен басына қатысты аралас адресті алуға болатын
оператор ( бұл дегеніміз стек басынан идентификатор адресіне дейін
байттар саны).
mov bx, OFFSET table
1.5 Директивалар
1. : - жақын белгілерді анықтайды(сегмент шектерінде).
jmp lbl ... ...
lbl: ...
2 . = - берілгеннің символдық атының мағынасына тағайындайды.
videoram = 0B800h; тағайындау videoram = 0B000h;
3. .CODE – кодты сегменттің басын білдіреді, бұл дегеніміз
бағдарлама коды орналасатын сегментті білдіреді.
4. .DATA - берілгендер сегментінің басын анықтайды.
5. DB,DW – бір немесе бірнеше байттарды тіркейтін директивалар: DB,
немесе бір немесе бірнеше сөздер: DW.
...
.DATA
fibs DB 1,1,2,3,5,8,13
rus DB 'Турбо Ассемблер'
buf DB 80 DUP(0);тіркелетін 80 байттар, әрқайсысы нолге айналады
int DW 65535 ;екі байттарда FFFFh саны орналасады.
Array DW 100 DUP (0); 100 сөз тіркеледі
6. END – бағдарлама аяқталғандығын білдіреді.
...
.CODE
MyPROG: ... ;кіру нүктесі(бағдарлама басы).
... ; бағдарлама командалары
...
END MyPROG
7. ENDM – блоктің немесе микроанықтаудың аяқталуы
8. ENDP – ішкі бағдарламаның аяқталғандығын білдіреді.
9. EQU – берілгендер мағынасын қатарға немесе символдық атқа
тағайындауды білдіреді.
BlkSize EQU 512
BufBlks EQU 4
BufSize EQU BlkSize * BufBlks
10. LABEL – сәйкес келетін типті белгіні анықтайды.
...
.DATA
m_byte LABEL BYTE; BYTE типті m_byte белгісі енді мүмкіндік береді
m_word DW 0;берілгендердің әр байттарға жеке рұқсаты болады
.CODE;m_word типті WORD
...
mov [m_word],0204h
add [m_byte],'0';енді m_word –қа код сақталады
add [m_byte+1],'0';3234h,ASCII код '0' 30h тең
11. LOCAL –макро анықтаулар ішінде белгіні локалды деп және әр бір
макрокеңейтілімде олардың орнына ассемблер уникалды белгілерді
анықтауымен анықтайды: ??XXXX, мұндағы XXXX = (0000...FFFF)h. Не үұшін
??XXXX ? Өткені кез келгенге ешқандайда басты ?? белгісімен бастау ойыда
келмесін, және транслятор сайкелушіліктен қорықпай негіздеуге мүмкіндігі
бар болады.
12. MACRO – макроанықтамаларды тапсырады.
Swap MACRO a,b; a,b – макро өлшемдер (жады ұяшықтары)
mov ax,b;берілген макроанықтамалар жады ұяшық арасындағы
берілгендермен
mov bx,a; алмасуға мүмкіндік береді
mov a,ax; xchgкомандасынан ерекшелігі ;
mov b,bx; mov a,b болмайды;
ENDM
Бұндай макростарды шақыру үшін мына команда орындалады: Swap m,n
13. .MODEL – берілгендер және бағдарлама коды бойынша жады өлшемін
анықтайды.
.MODEL tiny;бағдарламадан берілгендер және стектер бір жалпы
сегментке (64 Kb) беріледі.
14. PROC – ішкібағдарламаның басын білдіреді.
Print PROC NEAR
;ішкібағдарламаның командалары
Print ENDP
...
call Print; ішкі бағдарламаны шақыру
15. .STACK – стек өлшемін анықтайды.
.STACK 200h; стек үшін 512 байтты шығарады.
16. .RADIX base – үнсіздіктен есеетеу жүйесін анықтайды, мұндағы base
– есептеу жүйесінің негізін салушы: 2, 8, 10, 16.
.RADIX 8
oct = 77; oct 63d тең.
17. ; - коментарй басы
1.6 Сілтемелік командалары
1. MOV DST,SRC; бұл дегеніміз (SRC) ді (DST)-қа сілтеуді білдіреді.
Осы жерде және кейінде регистір құрамы, мысалы AL регистрі (AL) немесе
(аl) деп беріледі, ал коментариге сілтемені мына белгімен белгілейміз -
- .
mov al,ch; (al) -- (ch).
mov cx,dx;
mov bh,[mems]; символдық адресі mems болып келетін жады ұяшығының
мәліметтерін ВН регистіріне сілтеу. Былайда болады: mov bh,mems.
Менің курсық жұмысымда осы сілтемелік командаларын қолдану мысалы:
push ax
mov ah,2 ;курсорды ауыстыру функция
mov bh,0 ;
mov dh,5 ;экранға шығару үшін y1 өлшемі
mov dl,3 ;экранға шығару үшін x1 өлшемі
int 10h
Бұл бағдарламаның бөлігінде үзіліске байланысты пернетақтадан басылған
батырмаға байланысты хабарланы шығару сілемесі және курсорды қайта
бастапқы қалпына келтіреді.
mov bx,OFFSET src; ағымдық сегментте SRC жады ұяшығының аралас
адресін ВХ орналастыру.
mov al,table[bx];аккумляторге table бірінші элементтің символдық
адреспен және осы элементтен (bx) байтқа қалып отырған элементті
жүктеу. Басқада мүмкін болатын нұсқамалары:
mov al,[table + bx] немесе
mov al,table + bx.
Кесте 1.2 - Регистрлер қызметі
Команданы орнындағанға Регистр Регистр AL Адрес Код
дейін BX
mov al,[table + bx]
08xx xx
0810 58
Команданы орындап Регистр Регистр AL Адрес Код
болғаннан кейін BX
mov al,[table + bx]
0010 58 0800 (table) 8с
08xx xx
0810 58
2. PUSH RP; стек шыңына RP қос регистрлерінің берілгендерін
орналастырамыз (мысалы push bx).
3. POP RP;стек шыңынан екі байтты алып RP қосына орналастыру (мысалы
pop ax).
4. XCHG DST, SRC; (DST) пен (SRC) арасындағы берілгендерді алмастыру.
Қос операнда да бір уақытта да жады ұяшығынан тұра алмайды.
5. XLAT SRC; кесте басынан = (AL) номерлі SRC бастапқы адресті байтты
берілгендер кестеден алып, оны AL орналастыру. SRC адресі ВХ
регистрінде орналасуы қажет. Басқа нұсқасы: XLATB.
...
.DATA
src DB 15d,10h,00110101b,'A','B',166d
.CODE
...
mov al,2;осы үш команда орындала отырып
mov bx,OFFSET src; AL регистріне 00110101b = 35h = 53d =
ASCII'5'
xlatb; жүктеледі
6. IN ACCUM, PORT; AL немесеAX аккумляторына порттан PORT адресті
сөзді немесе байтты орналастыру. Егер порт адресі = FF болса, онда порт
адресі анықсыз берілуі мүмкін, ал егер порт адресі FF болып берілсе,
онда порт адресі DX регистрінің құрамы арқылы (жалпыға ұсынылған
регистрдің арнайы функциясы) жанамалы түрде беріледі [12].
in al,0a5h; AL -ге адрес порты А5һ... ВУ-дан байтты берілгендерді
mov dx,379h; AL аккумуляторлеріне берілгендер байтын
in al,dx; сыртқы құрылғыға порт адресіне 379һ сілтеу
7. OUT PORT, ACCUM; байтты немесе сөзді AL немесе AX аккумляторге
символдық адресі PORT болатын ВУ-ға сілтеу.
out 0ffh,al;
...
mov dx,37Ah; порт адресі 37Ah ВУ-ға АХ-тан сөздердің берілгендерін
сілтеу
out dx,ax;
8. LEA RP,M; RP регистріне символдық адресі М тиімді адресті (араласу)
жады ұяшығын жүктеу.
lea di, rus; осы команданың ұқсасы - mov di, OFFSET rus.
1.7 Арифметикалық командалар: қосу, азайту, көбейту және
белгімен және белгісіз бөлу
Ассемблер тілінде бағдарламаны жазғанда арифметикалық амалдарды
қолдануға болады. Бағдарламаны жазғанда DEBUG жинақтаушысының көмегімен
бағдарламаны жинап қою.
DEBUG бағдарламасы бағдарламаның интерактивті жинақтау үшін арналған
және жинақтауды көптеген диалогты режимде көптеген қызметтік командаларды
қолдана отырып жинақтауға мүмкіндік береді. Бағдарламаның .ехе
және .com жинақтамасы ассемблер деңгейлі тілден алыған болар.
Мүмкінділігі:
- Бағдарламаның орындалуын бақылау және басқару;
- ASCII және HEX формаларында текстік файлдарды қарап шығу және
өзгерту;
- жинақталған бағдарламаға кішкене өзгешеліктерді енгізе отырып,
үлкен емес бағдарламаларды құру;
- дискідегі секторлардың құрамын зерттеп және модифицирлеу.
Арифметикалық операциялар бүтін сандардың төрт типті сандарға
орындалады: белгісіз екілік, белгісімен екілі, қорапталған ондық және
қорапталмаған ондық сандары.
Бұл бағдарламалау тілінде белгісі жоқ сандарға арифметикалық
операциялар қолдана аламыз.
Келесі командалар қолданылады:
ADD - қосу,SUB – азайту командалары
Командалардың сипаттамасы: 8 және 16 битті операндалармен жұмыс
істейді, ADD инструкциясымен құрамында қабылдаушы операндасы бар (сол
операнда) қиын операндалар (қабылдаушы операнда ) орындалады, нәтиже
қабылдаушы операндаға жазылады. SUB инструкциясы да осындай қызметтер
атқарады, бірақ ол көз операндасынан қабылдаушы операндасын алып тастайды
да, нәтижесі қабылдаушы операндаға жазылады. Операндалар ретінде
регистрлер, тұрақтылар, әр түрлі комбинациядағы жады ұяшықтары, бірақта бір
жады ұяшығының мағынасын екіншісіне қосып (алып) дегендей алмастыра
алмаймыз, сонымен қатар операнда көзі ретінде тұрақтыны қолдануға
болмайды. Командаларға алты флагтар әсер етеді:AF,CF,OF,PF,SF,ZF.
Мысалы егерде әсер нәтижесі операнда қабылдаушысында жазылса, онда
ауыстыру флагы CF=1, ал кері жағдайда CF=0.
MUL –көбейту
Команда MUL инструкциясын сипаттауда 16 немесе 32 биттерден құралған 8
және 16 битті белгісіз көбейткіштерді көбейтеді. 8 битті көбейту кезінде
бір операнда AL регистріне ал екіншісі 8 битті жалпыға арналған немесе сай
мақсаттағы жады айнымалысының биттік регистрі болуы мүмкін. Нәтижелері АХ
(16 битті)регистрінде орналасады. 16 битті көбейткіштерде бір көбейткіш
16 битті регистрі болуы мүмкін, ал екіншісі жады айнымалысы бола алады,
нәтижесі 32 битті DХ:АХ регистрлерінде жазылады. Сонымен қатар 16 битті
кішілері АХ, ал үлкендері DX орналасады. Командалар екі флагқа әсер
етеді: СР,ОF.
DIV – бөлу
Команда сипаттамасы 32 битті мағынаны 16 битті мағынаға, ал 16
битті мағыналарды 8 битты мағынаға бөлуге мүмкіндік берді. Команданы
сипаттау арқылы 32 битті мағынаны 16 битке немесе 16 битті мағыналарды 8
битті мағыналарға бөлуге мүмкіндік береді. 16 битті мағынаны бөлу
кезінде бөлінді 8 битті бөлгіш АХ регистріне немесе өлшемі сай келетін
айнымалыларға орналасады. Бөлінді нәтижесі (8 битті) AL орналасады, ал
қалдығы АН орналасады. Флагтар регистрінің жағдайы анықталмаған, егерде
олар AL (АХ) регистрлерге симаса, онда процессор 0 типті (0 бөлу
сияқты) үзіліспен жүргізіледі [2].
2 Есептің қойылымы
Курстық жұмыстың тақырыбы Терезелермен жұмыс. Секунд аралық экран
бетіне жұлдызшаларды * шығару, және пернетақтадан кез-келген батырманы
баса отырып, батырманың мағынасы туралы хабарлама шығару, ал күрделі
батырмалар басылса, онда Сіз күрделі батырмаларды бастыңыз деген
хабарламаны шығару. ESC батырмасын баса отырып жұмысты аяқтау керек.
Пернетақтадан үзіліске сұраныс жасау, бос буфер болса ауыстыру және
курсордың қайтару өлшемін беру.
2.1 Шартсыз өту
Машиналық бағдарламаның командалары жадыда қалай жазылғандығына
байланысты орындалады. Уақыт өте осы берілген орындалу реттілігі,
бағдарламаның келесі бір командасы орындалудың орнына, басқа бірі
орындалады. Мұндай мүмкіндікті ауыстыру командалары арқылы қамтамасыз
етіледі.
Ауысулар шартты және шартсыз болып бөлінеді. Егер де ауысым белгілі
бір шарттың орындалуы арқылы жүзеге асса, онда мұндай ауысымды
шартты өту деп,ал ешқандайда шарттан тәуелсіз болатын ауысымды шартсыз
өту деп аталады. Дербес компьютерде бірнеше шартсыз өту ауысымдары бар,
бірақта Ассемблер тілінде бірдей болып белгіленеді:
Шартсыз өту ауысымы (JUMP): JMP op
Мұнда операнда осы әдіспен немесе басқа әдіспен ауысым адресін
көрсетеді, яғни командалар адресі, олар келесі әдіспен орындалуы қажет
[3].
Мысалы:
JMP L ; келесі ... жалғасы
Кіріспе
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..
... ... ... ... ... ... ... ... ... ... ...6
1 Ассемблерде бағдарламаны өңдеу
этаптары ... ... ... ... ... ... ... ... ... ... ... ... ... .7
1.1 Ассемблер тілінде бағдарламаны талдау
этаптары ... ... ... ... ... ... ... ... ..7
1.2 Командалардың форматтары және олардың
классификациясы ... ... ... ..7
1.3 Алдын ала анықталған
аттары ... ... ... ... ... ... ... . ... ... ... ... ... ... ... ... ... ..9
1.4
Операторлар ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..
... ... ... ... ... ... ... ..10
1.5
Директивалар ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..
... ... ... ... ... ... ... 10
1.6 Сілтемелік командалар
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..
12
1.7 Арифметикалық командалар: қосу, азайту, көбейту және
белгімен және белгісіз
бөлу ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...14
2 Есептің қойылымы
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..
... ... ... ... 16
2.1 Шартсыз өту
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..
... ... ... ... 16
2.2 Салыстыру және шартты ауыстыру
командалары ... ... ... ... ... ... ... .16
2.3
Массивтер ... ... ... ... ... ... .. ... ... ... ... ... ... ... ... ... ... ..
... ... ... ... ... ... ... ..17
2.4 INT- үзілісті командасы
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..19
Қорытынды
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..
... ... ... ... ... ... ... ...25
Қолданылған
әдебиеттер ... ... ... ... ... ... . ... ... ... ... ... ... ... ... ... ... ..
... ... ... ... ... 26
Қосымшалар
Кіріспе
Дербес компьютерлердің пайда болуына байланысты бірден құрылғылар,
саңырауқұлақтар дамитындай, өз құрылғыларын ұсынатын сауда артып
кетті. Сонымен қатар, осы заттарды сатып ала отырып, сатушылар өздерінің
заттарына 100% кепілдік бере алмайды.
Осымен қатар осы заттарда қолданылатын бағдарламалық қамтама саудасы да
артып отырды. Саудада көптеген үлкен корпарациялар негізінде: Symantec
inc., APS (Advanced Personal Systems), Microsoft және т.б. жазылған әр
түрлі диагностикалық бағдарламалар бар, бірақта істегі көптеген
бағдарламалардың көп бөлігі жоғары деңгейлі тілде жазылған, бұл
дегеніміз жылдам емес және сенімді емес екендігін білдіреді.
Сондықтан осы авторлар өздерінің сенімді және жылдам орындалатын
машина-негізделген бағдарламалау тілін –Ассемблерді ойлап тапты.
Ассемблер бағдарламалау тілі бүгінгі таңда кең тараған және белгілі
жүйелі бағдарламалау тілі болып отыр. Ассемблер –машиналық тілдің
символдық көрінісі. Машиналардағы барлық процесстер ең төмен,
аппараттық деңгейде тек машиналық тілдің командаларымен
(нұсқамаларымен) жүзеге асады. Бұдан белгілі, жалпы атында , әр компютер
типіне өзіндік ассемблер тілі болады. Бұл ассемблерде жазылған
бағдарламаның сыртқы көрінісінде де байқалады. Аппаратураға байланыста
мәселелерді ассемблер тілін білмей шеше алмайсын. Бағдарламалаушы
немесе кез келген қолданушы жоғары деңгейлі бағдарламалау ортасын
қолданып, толығымен виртуальды әлемдер ортасын құра отырып, ол
компьютерде өзінің бағдарламасындағы командалар емес, негізінде оның
ұзақ және қызықсыз түріндегі трансформирленген түрінде мүлдем басқа
тілде – машиналық тілде командалар тізбегімен орындалатынын сезбеуіде
мүмкін.
Беріліп отырған курстық жұмыс жүйелік бағдарламалық, төмен
деңгейлік тілі-Ассемблерде пернетақтамен басқару, қатарлармен жұмысты
және циклдық операторларды қолданып жазылды.
1 Ассемблерде бағдарламаны өңдеу этаптары
1.1 Ассемблер тілінде бағдарламаны талдау этаптары
Микропроцессордың өзіндік ерекшеліктерін толығымен есептейтін
және машиналық командалармен мнемоникалық берілетін бағдарламалау тілін
Ассемблер деп атаймыз. Ассемблер тілінде жазылған бағдарлама бастапқы
бағдарлама деп аталады.
Ассемблер тілінде бағдарламаны талдау келесі этаптардан тұрады:
• Құрылымды сипаттаманы немесе блок-схема түрінде алгоритмді
құру;
• Бастапқы бағдарлама мәтінін PROG.ASM ЭЕМ-гемәтіндер
редакторының көмегімен енгізу қажет, мұндағы PROG кез келген
болуы мүмкін, бірақта кеңейтілімі ASM – міндетті түрде болуы
қажет.
• Бастапқы бағдарлдаманы машиналық кодқа TASM.EXE трансляторының
көмегімен аударамыз (трансляция немесе ассемблирование). Бұл
этапта аралық PROG.OBJ (объектті код) өнімді аламыз. Сонымен
қатар бағдарламалардағы синтаксистік және орфографиялық
қателіктер жөнделіп қайта аударым жүргізіледі.
• TLINK.EXE бағдарлама көмегімен PROG.OBJ объектті коды
орындалатын PROG.EXE немесе PROG.COM кодқа аудару жүргізіледі.
• Егер де логикалық қателіктер кездессе бағдарламаның орындалуы 1
бөлімнен қайта жүргізіледі.
Ассемблер тіліндегі бағдарлама мәтіні келесі операциялардан тұрады:
А) Командалар немесе нұсқамалар;
Ә) Дерективалар немесе
псевдооперациялар;
Б) Операторлар;
В) Алдымен анықталған аттар.
Жоғарыда келтірілген операциялар Ассемблер тілінің командалары болып
табыладыда, трансляция этапында орындалады. Командалар немесе
нұсқамалар деп аталатын операциялар бағдарламаның орындалуы кезінде
орындалады, олар микропроцессорге командалар болып табылады [8].
4 Командалардың форматтары және олардың жіктелуі
Нұсқамалар жеке қатарға жазылып , төрт жолақтан тұрады , оның қажет
еместері [ ] алынып беріледі :
Кесте 1.1- Ассемблер тіліндегі командалар форматы
[белгі:] мнемоникалық_командалар [операнда(лар)] [;комментарий]
Белгі немесе символдық адресс 31 символға дейін ? @ . _ $ белгілерден
және әріп сандардан тұра алады. Сонымен қатар бар болса, сан бірінші
болмауы қажет және нүкте болса ол бірінші болуы керек.
Мнемоника – командалар(КОП) операциясының кодының қысқартылған түрін
білдіреді, мысалға мнемоника ADD көбейтуді (addition) білдіреді.
Операндалар ретінде операция орындалатын анық немесе анық емес
берілетін екілік жиындар болып табылады. Операндалар төрт санақ жүйесінің
бірімен беріледі және міндетті түрде b(B), o(O), d(D), h(H) символдарымен
2,8,10 немесе 16 үшін СС аяқталуы қажет. Оналтылық санақ жүйесінің санына
егер де ол әріптен басталатын болса, оның сол жағына ноль қосылады.
Командалар жүйесі негізгі үш белгі бойынша классифицирленеді
• Команда ұзындығы немесе оның алып отырған байттар саны;
• Функционалды қызметі;
• Адрестеу әдісі.
МП 1810ВМ86 (8086) үшін команда бірден алты байтқа дейін орын алады.
Команданың алғашқы байты болып әрқашанда операция коды болып табылады,
мысалға INT XXh команда коды CD(HEX) тең.
Нұсқаманың функционалды белгісі бойынша үлкен бес топқа бөле
аламыз:
1) берілгендерді қайта сілтеу командасы;
2) арифметикалық командалар;
3) логикалық командалар;
4) ауысымдар командалары;
5) басқару командалары.
Адрестеудің негізгі бес әдісі бар:
• регистрлік;
• тікелей;
• жанамалы;
• стекті;
• қатысынсыз.
Көптеген басқада адрестеу әдістері келтірілгендердің комбинациясы
немесе түрөзгешеліктері болып табылады.
Алдымен операндалар микропроцессордың регистрлерінде орналасады,
мысалға MOV AX,CX командасының көмегімен CX регистріндегі
берілгендер AX –қа аударылады.
Көптеген басқада адрестеу әдістері келтірілгендердің комбинациясы
немесе түрөзгешеліктері болып табылады.
Алдымен операндалар микропроцессордың регистрлерінде орналасады,
мысалға MOV AX,CX командасының көмегімен CX регистріндегі
берілгендер AX –қа аударылады [7].
Сурет 1.1- Ассемблер тілінде бағдарламаны жоспарлау
Операндалардың орталық емес адрестеу кезінде берілгендер КОП –дағы
жадыда сақталады, AL регистрінде MOV AL,0f5h инструкциясына
регистріне 245(f5) саны жазылады.
КОП-ға тікелей адрестеу кезінде операнданың өзі емес, жады
ұяшығының адресі немесе сыртқы құрылғының адресі алынады, мысалға IN
AL,40h командасы 40һ адресті сыртқы құрылғыдан берілгендер байтын
енгізеді.
Жанамалы адрестеу регистрліктен, операнда адресі регистрде
сақталатындығымен ерекшеленеді, өткені MOV AL,[BX] командасы бойынша
а1 аккумуляторге ВХ регистрінде сақталған адресті жады ұяшықтарынан
сандар жазылады.
Стекті адрестеу стек деп аталатын жады аумағында орналасқан
операндаларға жүргізіледі [6].
1.3 Алдын -ала анықталған аттары
1. $ - бағдарламалық счетчик. Бұл символ ағымдағы адресті ағымдағы
сегментте белгілейді. Байттар немесе қатарлардың тізбегінің ұзындығын
анықтағанда қажет болып табылады.
text DB 'This string has NN letters'
NN = $ - text; NN = қатар ұзындығына text (осы қатардағы байттар саны).
Қатар бөлшегі '..NN..' және константа NN! Шатастырмау қажет.
2. @data – берілгендер сегментінің адресінің басы.
...
mov ax,@data
mov ds,ax;
сегменттер регистіріндегі DS енді берілгендер сегментінің адресі
3. ??date, ??time, ??filename – бұл аттар тексеру кезінде , сәйкесінше
ASCII форматында ағымдық уақыт, күн мен файл атына көшіріледі [4].
1.4 Оператолар
1. () – жақшалар, есептеуіштің реттілігін анықтайды
2. [] – тік жақшалар, мысалы [BX] bx регистріндегі жады ұяшығының
берілгендерін білдіреді. Жанамалы адрестеуді білдіреді.
3. +, -, *, - қосу, алу, көбейту және бөлу операторлары.
mov ax, (2 * 3 + 8 2) - 2; ах регистріне 8 саны орналастырылады.
4. MOD – модуль бойынша бөлу. Қалдықты береді.
5. SHL,SHR – солға, оңға жылжыту операндалары.
mov si, 01010101b SHR 3; SI регистіріне будет 0Ah (00001010) саны
жүктелетін болады.
6. NOT – битті инверсия.
7. AND,OR,XOR – Қателік операциялары ! Гиперсілтеменің мүмкін емес
объектісі.
mov dl, (10d OR 5d) XOR 7d; (dl) 8 тең болады.
8. : -сегменттің тағайындалуы.
mov dl,[es:bx]; es сегментінен берілгендер байтын және оның
бастапқысынан (bx) байтқа (араласу) қалып отырған dl орналастыру .
9. OFFSET – сегмен басына қатысты аралас адресті алуға болатын
оператор ( бұл дегеніміз стек басынан идентификатор адресіне дейін
байттар саны).
mov bx, OFFSET table
1.5 Директивалар
1. : - жақын белгілерді анықтайды(сегмент шектерінде).
jmp lbl ... ...
lbl: ...
2 . = - берілгеннің символдық атының мағынасына тағайындайды.
videoram = 0B800h; тағайындау videoram = 0B000h;
3. .CODE – кодты сегменттің басын білдіреді, бұл дегеніміз
бағдарлама коды орналасатын сегментті білдіреді.
4. .DATA - берілгендер сегментінің басын анықтайды.
5. DB,DW – бір немесе бірнеше байттарды тіркейтін директивалар: DB,
немесе бір немесе бірнеше сөздер: DW.
...
.DATA
fibs DB 1,1,2,3,5,8,13
rus DB 'Турбо Ассемблер'
buf DB 80 DUP(0);тіркелетін 80 байттар, әрқайсысы нолге айналады
int DW 65535 ;екі байттарда FFFFh саны орналасады.
Array DW 100 DUP (0); 100 сөз тіркеледі
6. END – бағдарлама аяқталғандығын білдіреді.
...
.CODE
MyPROG: ... ;кіру нүктесі(бағдарлама басы).
... ; бағдарлама командалары
...
END MyPROG
7. ENDM – блоктің немесе микроанықтаудың аяқталуы
8. ENDP – ішкі бағдарламаның аяқталғандығын білдіреді.
9. EQU – берілгендер мағынасын қатарға немесе символдық атқа
тағайындауды білдіреді.
BlkSize EQU 512
BufBlks EQU 4
BufSize EQU BlkSize * BufBlks
10. LABEL – сәйкес келетін типті белгіні анықтайды.
...
.DATA
m_byte LABEL BYTE; BYTE типті m_byte белгісі енді мүмкіндік береді
m_word DW 0;берілгендердің әр байттарға жеке рұқсаты болады
.CODE;m_word типті WORD
...
mov [m_word],0204h
add [m_byte],'0';енді m_word –қа код сақталады
add [m_byte+1],'0';3234h,ASCII код '0' 30h тең
11. LOCAL –макро анықтаулар ішінде белгіні локалды деп және әр бір
макрокеңейтілімде олардың орнына ассемблер уникалды белгілерді
анықтауымен анықтайды: ??XXXX, мұндағы XXXX = (0000...FFFF)h. Не үұшін
??XXXX ? Өткені кез келгенге ешқандайда басты ?? белгісімен бастау ойыда
келмесін, және транслятор сайкелушіліктен қорықпай негіздеуге мүмкіндігі
бар болады.
12. MACRO – макроанықтамаларды тапсырады.
Swap MACRO a,b; a,b – макро өлшемдер (жады ұяшықтары)
mov ax,b;берілген макроанықтамалар жады ұяшық арасындағы
берілгендермен
mov bx,a; алмасуға мүмкіндік береді
mov a,ax; xchgкомандасынан ерекшелігі ;
mov b,bx; mov a,b болмайды;
ENDM
Бұндай макростарды шақыру үшін мына команда орындалады: Swap m,n
13. .MODEL – берілгендер және бағдарлама коды бойынша жады өлшемін
анықтайды.
.MODEL tiny;бағдарламадан берілгендер және стектер бір жалпы
сегментке (64 Kb) беріледі.
14. PROC – ішкібағдарламаның басын білдіреді.
Print PROC NEAR
;ішкібағдарламаның командалары
Print ENDP
...
call Print; ішкі бағдарламаны шақыру
15. .STACK – стек өлшемін анықтайды.
.STACK 200h; стек үшін 512 байтты шығарады.
16. .RADIX base – үнсіздіктен есеетеу жүйесін анықтайды, мұндағы base
– есептеу жүйесінің негізін салушы: 2, 8, 10, 16.
.RADIX 8
oct = 77; oct 63d тең.
17. ; - коментарй басы
1.6 Сілтемелік командалары
1. MOV DST,SRC; бұл дегеніміз (SRC) ді (DST)-қа сілтеуді білдіреді.
Осы жерде және кейінде регистір құрамы, мысалы AL регистрі (AL) немесе
(аl) деп беріледі, ал коментариге сілтемені мына белгімен белгілейміз -
- .
mov al,ch; (al) -- (ch).
mov cx,dx;
mov bh,[mems]; символдық адресі mems болып келетін жады ұяшығының
мәліметтерін ВН регистіріне сілтеу. Былайда болады: mov bh,mems.
Менің курсық жұмысымда осы сілтемелік командаларын қолдану мысалы:
push ax
mov ah,2 ;курсорды ауыстыру функция
mov bh,0 ;
mov dh,5 ;экранға шығару үшін y1 өлшемі
mov dl,3 ;экранға шығару үшін x1 өлшемі
int 10h
Бұл бағдарламаның бөлігінде үзіліске байланысты пернетақтадан басылған
батырмаға байланысты хабарланы шығару сілемесі және курсорды қайта
бастапқы қалпына келтіреді.
mov bx,OFFSET src; ағымдық сегментте SRC жады ұяшығының аралас
адресін ВХ орналастыру.
mov al,table[bx];аккумляторге table бірінші элементтің символдық
адреспен және осы элементтен (bx) байтқа қалып отырған элементті
жүктеу. Басқада мүмкін болатын нұсқамалары:
mov al,[table + bx] немесе
mov al,table + bx.
Кесте 1.2 - Регистрлер қызметі
Команданы орнындағанға Регистр Регистр AL Адрес Код
дейін BX
mov al,[table + bx]
08xx xx
0810 58
Команданы орындап Регистр Регистр AL Адрес Код
болғаннан кейін BX
mov al,[table + bx]
0010 58 0800 (table) 8с
08xx xx
0810 58
2. PUSH RP; стек шыңына RP қос регистрлерінің берілгендерін
орналастырамыз (мысалы push bx).
3. POP RP;стек шыңынан екі байтты алып RP қосына орналастыру (мысалы
pop ax).
4. XCHG DST, SRC; (DST) пен (SRC) арасындағы берілгендерді алмастыру.
Қос операнда да бір уақытта да жады ұяшығынан тұра алмайды.
5. XLAT SRC; кесте басынан = (AL) номерлі SRC бастапқы адресті байтты
берілгендер кестеден алып, оны AL орналастыру. SRC адресі ВХ
регистрінде орналасуы қажет. Басқа нұсқасы: XLATB.
...
.DATA
src DB 15d,10h,00110101b,'A','B',166d
.CODE
...
mov al,2;осы үш команда орындала отырып
mov bx,OFFSET src; AL регистріне 00110101b = 35h = 53d =
ASCII'5'
xlatb; жүктеледі
6. IN ACCUM, PORT; AL немесеAX аккумляторына порттан PORT адресті
сөзді немесе байтты орналастыру. Егер порт адресі = FF болса, онда порт
адресі анықсыз берілуі мүмкін, ал егер порт адресі FF болып берілсе,
онда порт адресі DX регистрінің құрамы арқылы (жалпыға ұсынылған
регистрдің арнайы функциясы) жанамалы түрде беріледі [12].
in al,0a5h; AL -ге адрес порты А5һ... ВУ-дан байтты берілгендерді
mov dx,379h; AL аккумуляторлеріне берілгендер байтын
in al,dx; сыртқы құрылғыға порт адресіне 379һ сілтеу
7. OUT PORT, ACCUM; байтты немесе сөзді AL немесе AX аккумляторге
символдық адресі PORT болатын ВУ-ға сілтеу.
out 0ffh,al;
...
mov dx,37Ah; порт адресі 37Ah ВУ-ға АХ-тан сөздердің берілгендерін
сілтеу
out dx,ax;
8. LEA RP,M; RP регистріне символдық адресі М тиімді адресті (араласу)
жады ұяшығын жүктеу.
lea di, rus; осы команданың ұқсасы - mov di, OFFSET rus.
1.7 Арифметикалық командалар: қосу, азайту, көбейту және
белгімен және белгісіз бөлу
Ассемблер тілінде бағдарламаны жазғанда арифметикалық амалдарды
қолдануға болады. Бағдарламаны жазғанда DEBUG жинақтаушысының көмегімен
бағдарламаны жинап қою.
DEBUG бағдарламасы бағдарламаның интерактивті жинақтау үшін арналған
және жинақтауды көптеген диалогты режимде көптеген қызметтік командаларды
қолдана отырып жинақтауға мүмкіндік береді. Бағдарламаның .ехе
және .com жинақтамасы ассемблер деңгейлі тілден алыған болар.
Мүмкінділігі:
- Бағдарламаның орындалуын бақылау және басқару;
- ASCII және HEX формаларында текстік файлдарды қарап шығу және
өзгерту;
- жинақталған бағдарламаға кішкене өзгешеліктерді енгізе отырып,
үлкен емес бағдарламаларды құру;
- дискідегі секторлардың құрамын зерттеп және модифицирлеу.
Арифметикалық операциялар бүтін сандардың төрт типті сандарға
орындалады: белгісіз екілік, белгісімен екілі, қорапталған ондық және
қорапталмаған ондық сандары.
Бұл бағдарламалау тілінде белгісі жоқ сандарға арифметикалық
операциялар қолдана аламыз.
Келесі командалар қолданылады:
ADD - қосу,SUB – азайту командалары
Командалардың сипаттамасы: 8 және 16 битті операндалармен жұмыс
істейді, ADD инструкциясымен құрамында қабылдаушы операндасы бар (сол
операнда) қиын операндалар (қабылдаушы операнда ) орындалады, нәтиже
қабылдаушы операндаға жазылады. SUB инструкциясы да осындай қызметтер
атқарады, бірақ ол көз операндасынан қабылдаушы операндасын алып тастайды
да, нәтижесі қабылдаушы операндаға жазылады. Операндалар ретінде
регистрлер, тұрақтылар, әр түрлі комбинациядағы жады ұяшықтары, бірақта бір
жады ұяшығының мағынасын екіншісіне қосып (алып) дегендей алмастыра
алмаймыз, сонымен қатар операнда көзі ретінде тұрақтыны қолдануға
болмайды. Командаларға алты флагтар әсер етеді:AF,CF,OF,PF,SF,ZF.
Мысалы егерде әсер нәтижесі операнда қабылдаушысында жазылса, онда
ауыстыру флагы CF=1, ал кері жағдайда CF=0.
MUL –көбейту
Команда MUL инструкциясын сипаттауда 16 немесе 32 биттерден құралған 8
және 16 битті белгісіз көбейткіштерді көбейтеді. 8 битті көбейту кезінде
бір операнда AL регистріне ал екіншісі 8 битті жалпыға арналған немесе сай
мақсаттағы жады айнымалысының биттік регистрі болуы мүмкін. Нәтижелері АХ
(16 битті)регистрінде орналасады. 16 битті көбейткіштерде бір көбейткіш
16 битті регистрі болуы мүмкін, ал екіншісі жады айнымалысы бола алады,
нәтижесі 32 битті DХ:АХ регистрлерінде жазылады. Сонымен қатар 16 битті
кішілері АХ, ал үлкендері DX орналасады. Командалар екі флагқа әсер
етеді: СР,ОF.
DIV – бөлу
Команда сипаттамасы 32 битті мағынаны 16 битті мағынаға, ал 16
битті мағыналарды 8 битты мағынаға бөлуге мүмкіндік берді. Команданы
сипаттау арқылы 32 битті мағынаны 16 битке немесе 16 битті мағыналарды 8
битті мағыналарға бөлуге мүмкіндік береді. 16 битті мағынаны бөлу
кезінде бөлінді 8 битті бөлгіш АХ регистріне немесе өлшемі сай келетін
айнымалыларға орналасады. Бөлінді нәтижесі (8 битті) AL орналасады, ал
қалдығы АН орналасады. Флагтар регистрінің жағдайы анықталмаған, егерде
олар AL (АХ) регистрлерге симаса, онда процессор 0 типті (0 бөлу
сияқты) үзіліспен жүргізіледі [2].
2 Есептің қойылымы
Курстық жұмыстың тақырыбы Терезелермен жұмыс. Секунд аралық экран
бетіне жұлдызшаларды * шығару, және пернетақтадан кез-келген батырманы
баса отырып, батырманың мағынасы туралы хабарлама шығару, ал күрделі
батырмалар басылса, онда Сіз күрделі батырмаларды бастыңыз деген
хабарламаны шығару. ESC батырмасын баса отырып жұмысты аяқтау керек.
Пернетақтадан үзіліске сұраныс жасау, бос буфер болса ауыстыру және
курсордың қайтару өлшемін беру.
2.1 Шартсыз өту
Машиналық бағдарламаның командалары жадыда қалай жазылғандығына
байланысты орындалады. Уақыт өте осы берілген орындалу реттілігі,
бағдарламаның келесі бір командасы орындалудың орнына, басқа бірі
орындалады. Мұндай мүмкіндікті ауыстыру командалары арқылы қамтамасыз
етіледі.
Ауысулар шартты және шартсыз болып бөлінеді. Егер де ауысым белгілі
бір шарттың орындалуы арқылы жүзеге асса, онда мұндай ауысымды
шартты өту деп,ал ешқандайда шарттан тәуелсіз болатын ауысымды шартсыз
өту деп аталады. Дербес компьютерде бірнеше шартсыз өту ауысымдары бар,
бірақта Ассемблер тілінде бірдей болып белгіленеді:
Шартсыз өту ауысымы (JUMP): JMP op
Мұнда операнда осы әдіспен немесе басқа әдіспен ауысым адресін
көрсетеді, яғни командалар адресі, олар келесі әдіспен орындалуы қажет
[3].
Мысалы:
JMP L ; келесі ... жалғасы
Ұқсас жұмыстар
Пәндер
- Іс жүргізу
- Автоматтандыру, Техника
- Алғашқы әскери дайындық
- Астрономия
- Ауыл шаруашылығы
- Банк ісі
- Бизнесті бағалау
- Биология
- Бухгалтерлік іс
- Валеология
- Ветеринария
- География
- Геология, Геофизика, Геодезия
- Дін
- Ет, сүт, шарап өнімдері
- Жалпы тарих
- Жер кадастрі, Жылжымайтын мүлік
- Журналистика
- Информатика
- Кеден ісі
- Маркетинг
- Математика, Геометрия
- Медицина
- Мемлекеттік басқару
- Менеджмент
- Мұнай, Газ
- Мұрағат ісі
- Мәдениеттану
- ОБЖ (Основы безопасности жизнедеятельности)
- Педагогика
- Полиграфия
- Психология
- Салық
- Саясаттану
- Сақтандыру
- Сертификаттау, стандарттау
- Социология, Демография
- Спорт
- Статистика
- Тілтану, Филология
- Тарихи тұлғалар
- Тау-кен ісі
- Транспорт
- Туризм
- Физика
- Философия
- Халықаралық қатынастар
- Химия
- Экология, Қоршаған ортаны қорғау
- Экономика
- Экономикалық география
- Электротехника
- Қазақстан тарихы
- Қаржы
- Құрылыс
- Құқық, Криминалистика
- Әдебиет
- Өнер, музыка
- Өнеркәсіп, Өндіріс
Қазақ тілінде жазылған рефераттар, курстық жұмыстар, дипломдық жұмыстар бойынша біздің қор #1 болып табылады.
Ақпарат
Қосымша
Email: info@stud.kz