Автор: Пользователь скрыл имя, 28 Февраля 2013 в 18:41, курсовая работа
Компьютерлік технологиялардың қарқынды дамуы барысында компьютерлерге арналған түрлі бағдарламалық қамтамалардың да көбеюі жаңалық емес. Әрбір адамға ЭЕМ- де және оның құрылғыларында тиімді жұмыс істеу үшін бағдарламалау тілдерінің алатын орны ерекше болып есептеледі. Бағдарламалау тілдерінің түрі көп. Олардың әрқайсы өзінің мүмкіндіктерімен ерекшеленеді.
Кіріспе....................................................................................................3
Windows операциялық жүйесінде Assembler тілін қолданып
бағдарламалау........................................................................................4
Терезе түрлері.........................................................................................7
1.3 Терезелер классы...................................................................................8
1.3.1 Терезе классының қолданатын ресурстарын сипаттау.....................8
Терезе функциясы..................................................................................9
Терезе құру.............................................................................................9
1.4 Қосымшаның басты функциясы..........................................................11
1.5 Қосымша мәтінінің құрылымы............................................................12
1.6 Терезе құрудың қосымша функциялары............................................12
1.7 Іздеу және терезе күйін анықтау..........................................................12
1.8 Терезелердің жылжу функциясы.........................................................13
Қолданушыға арналған қосымша мәлімет..........................................14
2 API функцияларын сипаттау.................................................................15
Қорытынды.............................................................................................19
Қолданылған әдебиет.............................................................................20
Қосымша.................................................................................................21
МАЗМҰНЫ
бағдарламалау................
1.3.1 Терезе классының қолданатын ресурстарын сипаттау.....................8
1.4
Қосымшаның басты функциясы....
1.5
Қосымша мәтінінің құрылымы....
1.6
Терезе құрудың қосымша
1.7
Іздеу және терезе күйін
1.8
Терезелердің жылжу функциясы.....................
2
API функцияларын сипаттау......................
Қорытынды.....................
Қолданылған әдебиет.......................
Қосымша.......................
1 Кіріспе
Компьютерлік технологиялардың қарқынды дамуы барысында компьютерлерге арналған түрлі бағдарламалық қамтамалардың да көбеюі жаңалық емес. Әрбір адамға ЭЕМ- де және оның құрылғыларында тиімді жұмыс істеу үшін бағдарламалау тілдерінің алатын орны ерекше болып есептеледі.
Бағдарламалау
тілдерінің түрі көп. Олардың әрқайсы
өзінің мүмкіндіктерімен ерекшеленеді.
Қазіргі уақытта ЭЕМ
Дегенмен біз өз баяндамамыздың негізгі мақсаты ретінде Windows операциялық жүйесіне арналған Assembler тілін таныстыруды көздедік. Assembler төменгі дәрежелі бағдарламалау тіліне жатады. Оның көптеген ерекшеліктерімен сіз жұмысты оқу барысында таныса аласыз.
Windows операциялық
жүйесіне Си және басқа да
бағдарламалау тілдері
Ассемблер тілінде
MS-DOS операциялық жүйесінде
Қазіргі уақытта бір- бірімен бақталас екі ассемблер дестелері бар. Олар: MASM (Macro Assembler) және TASM (Turbo Assembler). Ассемблер тіліндегі бағдарламаларды іске қосу үшін MASM 6.14 және TASM (TASM32.exe 5.0, TLINK32.EXE 1.6.71) версияларын қолданған дұрыс. Бағдарламаны Windows операциялық жүйесінде трансляциялау төмендегі сұлба бойынша жүреді.
1- сурет. Ассемблерлік модульдің трансляциялану сұлбасы.
Трансляцияның 2- ші кезеңіне екі негізгі бағдарламалар сәйкес келеді. Олар: ML.EXE ассемблерімен LINK.EXE редакторы немесе TASM32.EXE және TLINK32.EXE.
Ассемблер бағдарламасының мәтіні бар файлдың аты PROG.ASM болсын, онда трансляциялаудың 2- і кезеңі келесі түрде болады.
C:\masm32\bin\ml/c/coffPROG.
Осыдан кейін PROG.OBJ модулі пайда болады. Содан кейін
c:\masm32\bin\Link/ SUBSUSTEM: Windows PROG.OBJ әрекеті орындалады. Сол кезде PROG.EXE орындалу модулі құрылады. Бұл жерде /c және /coff ML.EXE бағдарламасының параметрлері, ал /SUBSYSTEM: Windows LINK.EXE бағдарламасының параметрлері болып табылады.
Ассемблерда бағдарламаны бірнеше бөліктерге бөліп, трансляцияның 1- ші кезеңінде қайтадан біріктірген ыңғайлы. Бұл INCLUDE дерективасы арқылы жүзеге асады. Мысалы бір файлда бағдарлама коды, ал тұрақтылар, мәліметтер, процедуралар басқа файлда болады.
Ендігі жерде
басқа обьектілік модульдер мен
кітапханаларды трансляцияның 2- ші кезеңіне
қосуды қарастырайық. Қанша обьектілік
модуль қосылса да, олардың ішінде
біреуі негізгі болады, яғни бағдарлама
осы модульден басталады. Модульдердің
арасындағы айырмашылық осымен бітеді.
Негізі қосалқы модульдерге негізгі
модульден және басқа модульдерден
шақырылатын процедуралар орналастырылады.
Бірнеше модульдерді
Келесі қарастыратынымыз INVOKE дерективасы. Бұл қолайлы команда, бірақ өзіндік ерекшеліктері бар.
Қолайлы жағы @N қоспасынан құтыламыз, 2- ші жағынан бұл команда стекке берілетін мәндерді өзі бақылайды.
PUSH Par1
PUSH Par2
PUSH Par3
PUSH Par4
Call Name_PROC@N; N- стекке жіберілетін байттар көлемі. Бұл өрнек INVOKE командасын қолданғанда келесідей түрге өзгереді.
INVOKE NAME_PROC, par4, par3, par2, par1
Бұл кезде параметрлер ретінде құрcым, анықталған мән немесе адрес қарастырылады. Адрес үшін OFFSET және ADDR операторларыда қолданылады.
INVOKE командасының
тиімсіз жағы макродеректерді
қолдану. Макродеректерді
Біздің 1- суретте
обьектілік модульдерден басқа кітапханалар
жайлы да айтылады. Егерде обьектілік
модульдер бірнеше болса, онда олар
белгілі бір жағдайларда
Бірақ обьектілік модульдерден қалай кітапхана құрса болады? Ол үшін кітапханашы деп аталатын арнайы бағдарлама бар. Егер біз PROG2.OBJ модулінен тұратын LIB1.LIB кітапханасын құрғымыз келсе, төмендегі команданы орындаймыз.
LIB/OUT:LIB1.LIB PROG2.OBJ
Егер кітапханаға тағы бір модуль қосқымыз келсе (мысалы MODUL.OBJ) LIB1.LIB MODUL.OBJ командасын орындаймыз.
Кітапханашының тағы да екі пайдалы командалары LIB/LIST LIB1.LIB- кітапхана модульдерінің тізімін береді, LIB/REMOVE:MODUL.OBJ LIB1.LIB- кітапханадан MODUL.OBJ модулін жояды.
Жоғарыда біз тек MASM дестесін қарастырды, енді TASM дестесін қарастырып өтейік. TASM дестесінде трансляциялау форматы төмендегідей.
TASM32/ml PROG.ASM
TLINK32_aа PROG.OBJ
TASM дестесінде
модульдарды біріктіру өте
TLIB LIB1.LIB+PROG2.OBJ командасы орындалады. Нәтижесінде LIB1.LIB кітапханасы құрылады.
TLINK32 - нің командалық қатарының кеңейтілген түрі мынандай: TLINK32- аа OBJFILES, EXEFILE, MAPFILE, LIBFILES.
Мұндағы OBJFILE- орындалатын модуль
MAPFILE- модуль
құрылымы жайлы ақпарат
LIBFILE- бір немесе бірнеше кітапхана (пробел арқылы)
TASM- да INVOKE дерективасы жоқ.
Ассемблерде басқа да бағдарламалар қолданылады. Мысала: редакторлар, дизассемблерлер, Hex- редакторлар, отладчиктар, ресурстар компиляторы, ресурстар редакторы. Енді жеке- жеке тоқталып өтейік.
Редакторлар: QEDITOR.EXE редакторы MASM32 дестесінің ішіне кіреді. Бұл редактор және оның утилиттары ассемблер тілінде жазылған. QEDITOR.EXE редакторының көлемі бар болғаны 27 Кб, ал оның утилитасының көлемі 6 Кб қана. Бұл редактор бір модульді, кішкене қосымшалар үшін қолайлы, ал бірнеше модульдермен жұмыс істеуге бұл редактор ыңғайлы емес. Редактор әртүрлі утилиттар мен дестелік файлдар арқылы байланысып жұмыс істейді. Мысалға, бағдарламаның трансляциясын ML.EXE ассемблері қолданатын ASBL.BAT дестелік файлы орындап, нәтижесін ASMBL.TXT мәтіндік файлына жібереді. Осы файлды қарау үшін THEGUN.EXE қарапайым утилитасы қолданылады. Орындалатын модульді дизассемблерлеу үшін DUMMPER.EXE утилитасы қолданылып, нәтижесі DIASM.TXT мәтіндік файлына жіберіледі.
Сонымен қатар EAS.EXE бағдарламасын қарастырайық. Бұл редактор, дәлірек айтсақ қабықша ASM-, OBJ-, RC-, RES-, DEF- файлдарынан тұратын күрделі жобаларды құруға, трансляциялауға мүмкіндік тудырады. Бұл бағдарлама MASM немесе TASM ортасында жұмыс істейді.
Отладчиктер: Отладчиктер бағдарламаны қадам бойынша жұмыс істейді. Қолдануға ыңғайлы және белгілі отладчиктерге Code View, Turbo Debugger, Ice жатады.
Дизассемблерлер:
Дизассемблерлер орындалатын
Hex- редакторлар:
Hex- редакторлар жүктелетін
16-қ түрде және ассемблерлік
код түрінде қарауға жағдай
тудырады. Сонымен қатар бұл
1.2 Терезе түрлері
Windows - қа арналған
бағдарламалар қосымша деп
1. Терезе қосымша:
жұмыстың орындалуын
2. MDI- терезелер: Бұл терезе бірнеше құжаттарды бір уақытта өңдеуге арналған.
3. Көмекші
терезе. Бұл терезе көп жағдайда
операциялық жүйенің
4. Диалог
терезесі. Бұл терезе қосымша
мен қолданушының арасында
Құрастырушыға терезе қосымша мен операциялық жүйенің функционалдауымен жұмыс істейтін элементтер жиындығы болып табылады.
Бағдарламалық тілдерінің негізі бойынша терезе дегеніміз онымен әртүрлі әрекеттер жасауға болатын обьект, яғни айнымалы.
Обьект көптеген мәліметтерді баяндайтын және өзгертетін белгілі бір классқа жатады.
2-сурет Көптеген элементері бар:
1-Жүйелік
меню батырмасы; 2-Терезені пиктограммаға
айналдыру батырмасы; 3-Терезені
қалпына келтіру және
2 - суреттегі басты терезенің түрлі кнопкалары, менюі, құралдар панельі, көру сызығы, көру жолы және басқа элементтері бар. Бұл элементтер де терезелерге жатады және өздерінің мәліметтері мен өзгерту әдістері болады. Демек бұлар терезелер кластарына жатады.
Терезелер құру
үшін операциялық жүйеге оның қандай
классқа жататынын көрсету
1.3.1 Терезе классының қолданатын ресурстарын сипаттау
Класста қолданылатын ресурстар жиындығын WNDCLASS құрылымында баяндаймыз.
Бұл құрылым келесі түрде баяндалады:
int RegClass(WNDPROC Proc, LPCTSTR szNAME)
{ WNDCLASS wc;
wc.style=CS_HREDRAW | CS_VREDRAW;
wc.cbClsExtra=wc.cbWndExtra=0;
wc.IpfnWndProc=Proc; wc.hlnstance=hlnstance;
wc.hIcon=LoadIcon(NULL,IDI_
wc.hCurcor=LoadCursor(NULL,
wc.Background=(HBRUSH)(COLOR_
wc.lpszMenuName=(LPCTSTR)NULL;
wc.lpszClassName=szName;
return RegisterClass(&wc);
}
1. style келесі мәнді қабылдайды
wc.style= cs_HREDRAWICS_VREDRAWICS_
2. IpfnWndProc терезенің функциясын көрсетеді.
3. CbClsExtra клсстың
қосымша байттарының санына
4. CbWndExtra класстағы терезенің қосымша байт санына тең.
5. hlnstance ағымдағы
қосымшаның дескрипторын
6. hIcon терезе минимизацияланған кезде қайсы пиктограмма түрленетінін көрсетеді.
7. harsor LoadCursor сілтеменің
терезенің үстінен өткен кезде
оның түрінің өзгеруін
Сілтеменің ресурсы Loadcursor функциясымен баяндалады:
Hcursor Loadcursor (HINSTANCE hInst, LPCTSTR IpCursorName);
8. hbrBackground Терезе түсін бояу дискрипторын береді.
9. IpszMenuName Осы
класстағы терезенің басты
10. IpszClassName Тіркелетін
терезе классының аты бар
1.3.2 Терезе функциясы
Терезе функциясы оған түскен хабарларға қандай реакция болатынын баяндайды.
Ал әдеттегі функциялардан айырмашылығы:
Информация о работе Win 32 API функцияларын пайдаланып Assembler тілінде бағдарламалау