Ассеблер тілі



Кіріспе
Негізгі бөлім
1.Ассемблер тіліне шолу
2.Есептің құрылымы
3.Негізгі бөлім мен процедураларға түсіндірме
4.Әдістің баяндамасы
5.Пайдаланушының нұсқауы
6.Программистің нұсқауы
7.Әрекеттердің есептелінуі 8.Программа листингі
9. Блок схема
10.Блок схемаға түсініктеме
Қорытынды
Қолданылған әдебиеттер
Жоғарғы деңгейлі тілдерде есептеу және мәтіндермен жұмыс істейтін программалар жазу ыңғайлы. Бірақ олар жылдамдығы мен жадыда алатын орны жағынан алғанда онша тиімді болып шықпайды. Осының салдарынан жоғарғы деңгейде программалау тілдерінің бәрінде ассемблерде жазылған жазылған программалық жекебөлшектерін қолдану мүмкіндіктері ескерілген.
Есептеу машинасын керекті бағытта жұмыс істететін – машиналық тіл. Ассеблер тілі – машиналық тілдің рәміздік көрсетімі. Ассемблер немесе жоғарғы деңгейлі тілде жазылған программаны машиналық тілге аудару үшін аударғыш деп аталатын бағдарламалар қолданылады. Ассемблер тілінде жазылған программаның аударғышы Ассемблер деп аталады.
Машинадағы барлық процестер ең төменгі, аппараттық деәгейде тек машиналық тілдің командалары арқылы жүзеге асырылады. Ассемблер тілі компьютердің әрбір түрі үшін әр түрлі болып келеді.
Кейде мәселен, программа ерекше, бейстандартты құрылғымен жұмыс істеуі немесе аппаратураға тікелей қатынасумен байланысты іс-әрекеттер жасауы керек болады. Бұл кезде программалаушы қандай білікті болмасын және өзінің программасын қандай да жоғарғыдеігейлі тамаша тілде жазбасын, бәрібір, оған ассемблер тілін білу керек болады. Сондықтан да, жоғарғы деңгейлі тілдердің компиляторларының көбісінде ассемблер тіліндегі жекебөлшектермен байланысу құралдары бар екені немесе программалаудың ассемберлік деңгейін қолдауы бостан бос емес.
1. Питер Абель «Ассемблер язык и программирование для IBM PC» Москва,2003
2.Пирогов, Ассемблер
3. Финогенов К.Г. «Самоучитель пло ассемблеру»
4.Рудаков, Финогенов «Уроки программиравания ассемблера»
5.Зубков, «Язык Ассемблера для DS и Windows »
6.Муртазина, «MS -DOS - тың жүйелік функциялары»
7.Тұрым, Дюсекенова, «Машина-бағдарлы программалау»

Кіріспе

Жоғарғы деңгейлі тілдерде есептеу және мәтіндермен жұмыс істейтін
программалар жазу ыңғайлы. Бірақ олар жылдамдығы мен жадыда алатын орны
жағынан алғанда онша тиімді болып шықпайды. Осының салдарынан жоғарғы
деңгейде программалау тілдерінің бәрінде ассемблерде жазылған жазылған
программалық жекебөлшектерін қолдану мүмкіндіктері ескерілген.
Есептеу машинасын керекті бағытта жұмыс істететін – машиналық тіл.
Ассеблер тілі – машиналық тілдің рәміздік көрсетімі. Ассемблер немесе
жоғарғы деңгейлі тілде жазылған программаны машиналық тілге аудару үшін
аударғыш деп аталатын бағдарламалар қолданылады. Ассемблер тілінде жазылған
программаның аударғышы Ассемблер деп аталады.
Машинадағы барлық процестер ең төменгі, аппараттық деәгейде тек
машиналық тілдің командалары арқылы жүзеге асырылады. Ассемблер тілі
компьютердің әрбір түрі үшін әр түрлі болып келеді.
Кейде мәселен, программа ерекше, бейстандартты құрылғымен жұмыс істеуі
немесе аппаратураға тікелей қатынасумен байланысты іс-әрекеттер жасауы
керек болады. Бұл кезде программалаушы қандай білікті болмасын және өзінің
программасын қандай да жоғарғыдеігейлі тамаша тілде жазбасын, бәрібір, оған
ассемблер тілін білу керек болады. Сондықтан да, жоғарғы деңгейлі тілдердің
компиляторларының көбісінде ассемблер тіліндегі жекебөлшектермен байланысу
құралдары бар екені немесе программалаудың ассемберлік деңгейін қолдауы
бостан бос емес.

Негізгі бөлім

1.Ассемблер тіліне шолу

Машиналық тіл – негізі 0 мен 1-дің киындасуларының жиынынан тұратын
тіл.
1950- ші жылдары программалаушылар программалау үшін машиналық тілдің
символикалық (рәміздік) аналогін қолданған. Оны ассемблер деп атаған
Ассемблер тілі сөздер жинағынан тұрады. Бұл сөздер жинағы электрондық
есептеу машинасына қандай өрекет жасау керектігін көрсетеді. Жоғарғы
деңгейлі тілдерге қарағанда ассемблер тілінің командалар жинағы ЭЕМ-нің
буындарымен тікелей байланысты. Сондықтан ассемблер тілі машина-тәуелді
және машина-бағдарлы программалау тілі деп саналады.
Ассемблер тілінің тиімділігі:
• Тез орындалады, өйткені процессорды толығырақ басқарудың
мүмкіндігі бар;
• Компьтерге төмен деңгейде қатынас құруға болады.
Орындалатын программаны және бағдарламахананы немесе басқа алдын ала
аудармаланған ішпрограммаларды біріктіретін көмекші программа байланыстар
түзеткіші немесе программа құрастырғыш (LINKER) деп аталады. Орындалатын
программаны жадыға орналастырушы программа жүктемелеуіш (Loader) деп
аталады. Кейде байланыстарды түзету мен жүктемелеу жұмыстарын бір программа
атқарады.
Программаның бастапқы мәтіні кез келген мәтіндік редакторда теріледі
де, .asm кеңеймесі бар файл түрінде сақталады.
Сосын TASM.EXE аударғыш (оны кейде компилятор деп те атайды)
прграммасының көмегімен бастапқы мәтіндік файлдан Name.obj (машиналық
тілдегі программаның мәтіні, бірақ ішкі командалар арасындағы байланыстары
жөнге келтірілмеген) объектік кодасы бар файл алынады.Сонымен қатар ол
Name.lst (листинг) және Name.crf (ерсілі-қарсылы сілтемелер) файлдарын
қалыптастырады.
Осыдан кейін TLINK.EXE (құрастырғыш немесе байланыс редакторы)
программасының көмегімен объектік файлдан ( деп аталатын) орындалаиын
программа алынады. Сонымен қатар Name.map (карта файлын), Name.lib
(кітапхана файлын), Name .def (анықтамалар файлын) және Name.res
(ресурстар файлын) құрастыра алады.
Ассемблер – машиналық тілдің символдық аналогы, сондықтан прграмма
шағынпроцессордың архитектурасының барлық ерекшеліктерін бейнелеуге тиіс.
Олар жадыны ұйымдастыру, операндтарды адрестеу тәсілдері, регистрлерді
пайдалану ережелері т.б.
Ассемблер тілінде жазылған программаны жадының сегмент деп аталатын
бөлшектер жинағы ретінде қарастыруға болады. Әрбір сегмент тілдің сөйлемдер
жинығынан тұрады. Әрбір сөйлем программаның кодасында бөлек бір жолдан
тұрады.
Ассемблер сөйлемдері 4 түрлі болады:
• Командалар. Бұлардың объектік кодасы бар және бұлар
шағынпрпоцессорға не істеу керек екенін көрсетеді.
• Макрокомандалар. Макрокоманда- бсатапқы программадғы бірнеше
машиналық командалардың орнына жүретін символдық атау.
• Директивалар (жалғаноператорлар). Жалғаноператорлар Асссемблерге
деректермен және командаларамен не істеу керектігін анықтайтын
нұсқау береді. Сондықтан олар шағынпроцессордың емес,
аударғыштың жұмысын басқарады жне орындалатын EXE файлында бқл
жалғаноператоларға сәйкес машиналық кода болмайды.

2.Есептің құрылымы

Меню арқылы түрлі дыбыстық эффекттерді беретін программа құру керек.

Программа дайын түрінде мынадай сипатта болады:

1. Экранда меню шығу керек
2. Меню арқылы 3 түрлі әуенді таңдау мүмкіншілігін береді.

Бұл программа экранға көгілдір түсті менюдің терезесін шығарады. (1-
сурет)

Менюдің өзі data сегментінде 2-кесіндіден тұратын, 4 қатар сөйлемі бар,
ASCII 0DBH символынан тұратын көлеңкемен берілген. Пайдаланушы жоғары,
төмен, enter, а, в, с, q батырмаларын басып, қажет операцияны орындай
алады.

3.Негізгі бөлім мен процедураларға түсіндірме

Программа пайдаланушыға қалаған әуенің тыңдауға мүмкіндік береді.

Программа келесі бөлімдерден тұрады:

1. Менюді шығаратын негізгі бөлім
2. Әуенді шығаратын бөлім
3. Norton Commander терезесіне шығаратын, яүни программаны аяқтайтын
бөлім

Программада келесі процедуралар орындалады:

- a1 келесі процедураларды шақырады:
1. q1clear – экранды тазарту
2. в1menu – меню мен шақыруды шығарады.
3. d1disply – менюдің бірінші пунктін инверсті режим түрінде шығарады.
4. c1input – пернетақтадан ақпаратты қабылдау үшін;

- b1menu1 – экранға менюді шығарады. Алдымен, 10h үзуінің 09h функциясы
көлеңкесі бар рамканы шығару үшін қолданылады.

- c1input – пернетақтадан ↑,↓, а, в, с, q батырмаларын қолданушының басуын
күтеді және қабылдап, оларды ойнайды.

- d1disply – тақдалған менюдің пунктін қажет (нормаль немесе инверсивті
режим)

- q1clear – бүкіл экранды тазартып, оны белгілі бір түске, ал символдарды
да бояймыз.

- music 1 – а батырмасын басқаннан кейін, 1-ші әуен орындалады.
орындалады. sound дыбыс шығару процедерасын шақырады.

- music 2 – в батырмасын басқаннан кейін, 2 – ші әуен орындалады. sound
дыбыс шығару процедерасын шақырады.

- music 3 – с батырмасын басқаннан кейін, 3 – ші әуен орындалады. Ол да
sound дыбыс шығару процедерасын шақырады.

4.Әдістің баяндамасы

- int 10h үзуінің 09h функциясы арқылы көлеңкесі бар рамка шығарамыз.
Шақыруды шығару үшін де осы функция қолданылады.

- int 10h үзуінің 13h функциясы арқылы менюдің жолдарын рамканың
ішінде етіп шығарамыз. Шақыруды шығару үшін де осы функция қолданылады.

- int 16h үзуінің 10h функциясы ↑,↓, а, в, с, q батырмаларын басуды
қабылдау үшін қолданылады. Басқа батырмалардың басылуын елемейді.

- Int 10h үзуінің 13h функциясы арқылы таңдалған пунктімізді белгілеген
атрибутпен жөндейді. (нормаль немесе инверсивті режим)

- int 21h үзуінің 4сh функциясы программадан шығу үшін қолданылады.

- int 10h үзуінің 0003h функциясы терезені тазарту үшін қолданылады.

- int 10h үзуінің 1012h функциясы регистрлердің құрамын өзгерте
алады.

5.Пайдаланушының нұсқауы

Пайдаланушы программаның файлын жіберген кезде экранға меню
шығады. Меню келесі бөлімдерден тұрады:
1. Әуен -1
2. Әуен -2
3. Әуен -3

1-ші әуенді таңдау үшін а латын әріпін,
2-ші әуенді таңдау үшін в латын әріпін,
3-ші әуенді таңдау үшін с латын әріпін,
программадан шығу үшін q латын әріпін басу керек.

6.Программистің нұсқауы

Программистке айта кететін жай. Бұл қодануға жеңіл программа. Бірақ
кез – келген әуенді компьтерге ойната алмаймыз. Ол үшін программаның
деректер сегментінде өз әуеніміздің кодын теруіміз қажет.

Ұсыныс: а әріпінен латын әріптерін до,ре,ми,фа,соль,ля,си
ноталарын деректер сегментінде теріп кетінің. Ал бемоль және диездерді 1
және 2 сандарына деректер сегментінде программалаңыз. Сол кезде әрбір
нотаны білетін адам кез ө келген әрбәр нотаны білетін адам кез-келген
әуенді компьтерден батырмаларды басып, ойнай алатын болады.

7.Әрекеттердің есептелінуі

8.Программа листингі

.model small
.stack 200h
.data
toprow equ 08 ; менюдің жоғарғы қатары
botrow equ 15 ; менюдің төменгі қатары
lefcol equ 25 ; менюдің сол жақ бағаны
attrib db ? ; экран атрибуты
row db 00 ; экран қатары
ten db 23 dup (0dbh) ; көлеңке символдары
menu db 0c9h, 21 dup (0cdh), 0bbh ; меню көрінісі
db 0bah,' * ... ...MENU ... ... ..* ',0bah
db 0bah,' * cnopka a-music 1* ',0bah
db 0bah,' * cnopka b-music 2* ',0bah
db 0bah,' * cnopka c-music 3* ',0bah
db 0bah,' * cnopka q-exit * ',0bah
db 0bah,' * ... ... ... ... ... ... ... .* ',0bah
db 0c8h, 21 dup (0cdh), 0bch
info1 db 0ah,'Eto myzicalnaya programma' ;менюдің астында шығатын ақпарат
info2 db 0ah,'Shokanovoi Aigerim'
info3 db 0ah,'viberite myziky'
info4 db 0ah,'Spasibo'
mus_1 dw 330,294,294,362,330,330,3 dup (394) ; 1 әуеннің 1-ші қатары
dw 294,262,294,330,392,400,400,400 ; 2 – ші қатары
dw 330,294,294,262,4 dup (330) ; 3 – ші қатары
dw 294,294,330,400,262,0ffffh ; 4 – ші қатары
pausa1 dw 6 dup (25),50 ; 1-ші әуеннің 1-ші қатарының паузасы
dw 2 dup (25,25,50) ; 2-ші қатарының паузасы
dw 12 dup (25,100) ; 3-ші қатарының паузасы
mus_2 dw 330,392,330,294,330,392,330,294,330 ; 2 – ші әуеннің 1-ші қатары
dw 330,392,330,294,262,294,330,392,294 ; 2 – ші қатары
dw 262,262,220,196,196,220,262,294,332 ; 3 – ші қатары
pausa2 dw 3 dup (50),25,25,50,25,25,100 ; 2-ші әуеннің 1-ші қатарының

паузасы
dw 2 dup (50,50,25,25),500 ; 2-ші қатарының паузасы
dw 3 dup (50,25,25),100 ; 3-ші қатарының паузасы
mus_3 dw 294,262,262,294,294 ; 3-ші әуеннің 1-ші қатары
dw 330,349,294,294,262 ; 2-ші қатары
dw 362,294,294,332,362 ; 3-ші қатары
dw 262,294,330,330,249 ; 4-ші қатары
dw 330,330,440,440,330 ; 5-ші қатары
pausa3 dw 3 dup (50),25,25,50,25,25,100 ; 3-ші әуеннің 1-ші қатарының
паузасы
dw 2 dup (50,50,25,25),100 ; 2-ші қатарының паузасы
dw 2 dup (50,25,25),500 ; 3-ші қатарының паузасы

.386
.code
a1 proc far
mov ax,@data
mov ds,ax
mov es,ax
call q1clear ; экранды тазарту
mov row,botrow+4 ; қатарды өңдеу
a2:
call b1menu ; менюді шығару
mov row,toprow+1 ; менюдің жоғарғы пунктін ағымдағы етіп таңдау
mov attrib,15h ; Бейненің инверсті режимін ауыстыру
call d1disply ; менюдің ағымдағы қатарына түс беру
call c1input ; менюдің пунктерін таңдау
cmp al,1bh ; esc батырмасының басылуын тексеру
jne a2 ; жоқ, жалғастыру
cmp ax,0600h ; иә, жұмысты аяқтау
call q1clear ; экранды тазарту
mov ax,4c00h ; жұмыстың соңы
int 21h
a1 endp
Рамка мен оның көлеңкесін шығару
b1menu proc near
push ax ; регистр мәнің ах регистріне сақтау
mov ax,1301h ; көлеңкесі бар рамка шығаруға сұрату
mov bx,0060h ; бет және атрибуттар
lea bp,ten ; көлеңкені шығару
... жалғасы

Сіз бұл жұмысты біздің қосымшамыз арқылы толығымен тегін көре аласыз.
Ұқсас жұмыстар
VISUAL C программасындағы негізгі функциялар
Ассемблермен жұмыс
С++ программалау ортасының негізгі операторлары
Әлем тілдерінің топтастырылуы
Түркі тілдерін топтастырудың теориялық және практикалық мәселелері
Ағылшын тілінің тарихы
4-сынып «Қазақ тілі» оқулығының құрылымы мен құрылысы
Түркі тілдерінің жіктелуі жайлы мәлімет
Болашақ ағылшын тілі мұғалімдерін кәсіби даярлауда жаңа педагогикалық технологияны пайдалану
Түркі тілдерінің жіктелуі (классификациясы)
Пәндер