Ассемблер тілінде TASM көмегімен жүзеге асырылған Жыланша ойынының курстық жобасы

ҚАЗАҚСТАН РЕСПУБЛИКАСЫ БІЛІМ ЖӘНЕ ҒЫЛЫМ МИНИСТРЛІГІ
Қаныш Сатбаев атындағы Қазақ ұлттық техникалық университеті
Есептеу техника кафедрасы
Курстық жобаға
Т Ү С І Н І К Т Е М Е Қ А Ғ А З
Тақырыбы: “Жыланша” ойыны
жетекші:
аға оқытушы
Мустафина Б. М.
тапсырған күні:
“___” 2003 г.
қолы:
студент: Нұрбаев А. Б.
тобы: ЗБИ-00-1
мамандығы: 3704
Àëìàòû 2003
ÒÀÏÑÛÐÌÀ
“Æûëàíøà” îéûíûí ìåíãåðåòií ïðîãðàììà æàçûíûç
Òàïñûðìàíû áåðãåí ″___″2003æ. À¹à îºûòóøы: Ìóñòàôèíà Á. Ì.
Òàïñûðìà àë¹àí ″___″2003г. студент: ͽðáàåâ À. Б.
ÌÀÇ̵ÍÛ
Êiðiñïå. 4
1. Әäiñòi ñèïàòòàó. . . . 5
2. Ïðîãðàììàíû ñèïàòòàó . . . 6
2. 1 Æàëïû ìà¹ë½ìàòòàð. . . 6
2. 2 Ôóíêöèîíàëäûº áåëãiëåíói . . . 6
3. Ëîãèêàëûº ñòðóêòóðà ñèïàòòàìàñû. …. 6
3. 1 Блок-схема . . 7
3. 2 Ïðîãðàììàíûң æîëäûº ñèïàòòàìàñû. 7
3. 3 Øàºûðó æ¸íå æ¾êòåó . . . 7
3. 4 Ïàéäàëàíûëàòûí òåõíèêàëû æàáäûºòàð. 8
²îðûòûíäû. . . . 9
°äåáèåòòåð òiçiìi. 10
²îñûìøà А . 11
²îñûìøà В . 21
ÊIÐIÑÏÅ
Á½ë êóðñòûº æîáà “æûëàíøà” îéûíûí ìåíãåðåòií ïðîãðàììàíû өңäåóãå àðíàëãàí. Программа ассемблер òiëiíäå жазылғандықтан, îë оның æ½ìûñ iñòåó æûëäàìäû¹ûí åä¸óið æî¹àðûëàòûï¸ ê¼ëåìií àéòàðëûºòàé àçàéòàäû¸áàñòàïºû ñèÿºòû îðûíäàëàòûí ôàéë ê¼ëåìií äå.
Àссемблер òiëi - á½ë ìàøèíàëûº òiëäiң ñèìâîëäûº ê¼ðiíiñi. ̸øèíåäåãi áàðëûº ¾ðäiñòåð ең төмен¸ àïïàðàòòûº äåíãåéäåí ¸ðåêåòêå òåê машиналық тілдің èíñòðóêöèÿëàðû àðºûëû êåëåäi. Á½äàí æàëïû áåëãiëåíóãå ºàðàìàñòàí àññåìáëåð òiëi ¸ðáið êîìïüþòåð òèïi ¾øií æåêåøå. Á½ë àññåìáëåð òiëiíäå æàçûë¹àí ïðîãðàììàíûң iøêi ò¾ðiíå äå ºàòûñòû. Àññåìáëåð òiëií áiëìåé àïïàðàòóðàìåí áàéëàíûñòû åñåïòåðäi øåøó ì¾ìêií åìåñ. Программист æ¸íå ïàéäàëàíóøû êåç êåëãåí æî¹àðû äåíãåéëi æàáäûқòàðäû âèðòóàëäû ¸ëåì ê½ðóãà áîëàòûí æà¹äàéëàð¹à äåéií ïàéäàëàíà àëàäû.
Аë åíäi ïðîãðàììèñòòå қèûí жағдай òóûíäàäû äåëiê¸ ïðîãðàììèñò ºàíøàëûºòû àêûëäû áîëñà äภîë ïðîãðàììàíû æàç¹àí òië қàíøàëûқòû æàºñû áîëñà äภàññåìáëåðäi áiëìåéiíøå á½ë æà¹äàéäûң øåøiìií òàáó ºèûí. Ñîíäûºòàí áàðëûº æî¹àðû äåíãåéëi òiëäåð êîìïèëÿòîðëàðû қ½ðàìûíûң ìîäóëäåðiíiң àññåìáëåð òiëiíiң ìîäóëüäåðiìåí áàéëàíûñòû æàáäûºòàðû áàð íåìåñå àññåìáëåð ïðîãðàììàëàó äåңãåéiíå øû¹óäû ºîëäàéäû.
Ñîíäûºòàí êîìïüþòåðìåí áàéëàíûñòû ¸ðáið àäàì ¾øií àññåìáëåð òiëií áiëó ìàңûçäû.
- Әдісті сипаттауМассивтерді сұрыптау
Әдетте сұрыптау есептерін шешу кезінде қосымша жадыны минималды пайдалану шарты алға тартылады, бұдан қосымша массивтерді пайдалану мүмкіндігі азаяды.
Әр түрлі сұрыптау әдістерінің алгоритмдерінің тез әрекеттілігін бағалау үшін екі көрсеткіш пайдаланылады:
- меншіктеу саны;
- салыстыру саны;
- барлық сұрыптау әдістерін 2 үлкен топқа бөлуге болады: сұрыптаудың тура және жақсартылған әдістері;
Сұрыптаудың тура әдістерін 3 топшаға бөлуге болады:
- қою арқылы сұрыптау (қосу арқылы)
- таңдау арқылы сұрыптау (бөлу арқылы)
- ауыстыру арқылы сұрыптау (“түйіршіктеу” арқылы)
Сұрыптаудың жақсартылған әдістері сұрыптаудың тура әдісіне негізделген, бірақ сұрыптау үрдісін жеделдету үшін кейбір оригиналды идеялар қолданылады. Тура әдістер тәжірибеде сирек қолданылыды, өйткені олардың тез әрекеттілігі өте төмен.
- 1. 1 Қою арқылы сұрыптау
Берілген курстық жобада жоғарыда көрсетілген массивтерді сұрыптау әдісі баяндалады.
Әдіс принципі:
Массив 2 бөлікке бөлінеді: сұрыпталған және сұрыпталмаған. Сұрыпталған бөліктің элементтері кезекпен таңдалып алынып, сұрыпталынған бөлікке ондағы элементтер ретін бұзбайтындай етіп қойылады. Алгоритм жұмысының басында массивтің сұрыпталған бөлігі ретінде тек бір элемент алынады. Ал сұрыпталмаған бөлігі ретінде - қалғандары.
Осылайша алгоритм құрамында n-1 кірістен тұрады, бұлардың әрбіреуі 4 әрекеттен тұрады:
- кезектегі і-ші сұрыпталмаған элементті алып, оны қосымша айнымалыға сақтау;
- аланған элементтің болуы элемент ретін бұзбайтын массивтің сұрыпталған бөлігінен j позициясын іздеу;
- i-1 -ден j-1-ге дейін массив элементтерін оңға жылжыту, қоюдың табылған позицияларын босату үшін;
- алынған элементті табылған j - позицияға қою;
Берілген методты меңгеру үшін бір-бірінен қою позициясын іздеу тәсілімен ерекшеленетін бірнеше әдісті ұсынуға болады.
- 1. 2 Таңдау арқылы сұрыптау
Әдіс принципі:
Массивтен мәні минималды элементті тауып, 1-элементтен n-ші элементке дейінгі интервалдан, кейін оны 1-ші элементтің орнымен ауыстырамыз. Екінші қадамда 2-ден n-ге дейінгі интервалдан минималды мәнді элементті тауып оны 2-ші элементтің орнымен ауыстырамыз.
Осылайша барлық элементтер үшін n-1-ге дейін.
- 1. 3 Ауыстыру арқылы сұрыптау(“түйіршіктеу” арқылы сұрыптау)
Әдіс принципі:
Солдан оңға қарай екі көрші элемент салыстырылады, егер олардың орналасу қатынасы бір-бірімен реттік шартқа сай болмаса, онда олар орындарымен ауысады. Кейін келесі көрші екі элемент алынып, массивтің соңына дейін осылайша жалғасады.
- Программаны баяндау
- 1 Жалпы мағлұматтар
Программа ZMEYA деп аталады. Программаның жұмыс атқаруына қажетті программалық қамтама: ОЖ Windows 95/98/2000 және Tasm программалар пакеті.
- 2 Функционалдық белгіленуі
Программа демалу және көңіл көтеруге арналған.
- Логикалық құрылымның баяндалуы
Программаның негізгі әдісі - массивтерді сұрыптау. Символдар массиві(жыланша) - бұл жыланша бөліктері. Жыланша бағытша пернелерін басу арқылы жылжиды.
Жыланша белгіленген терезеде белгіленген жылдамдық арқылы жылжидыб ал жыланша терезеден шыққан кезде ойынның соңы болады. Жылдамдықты программадан белгілеуге болады. Жыланның ұзындығына терезе ұзындығы сай келеді, яғни терезе 100x100 болса, онда жыланша ұзындығы сәйкесінше 1 символ.
Ойынды бастар алдында ойыншының атын енг!зу туралы белг! Шығады, осы жерге атын енг!зед!. Ойыншы атын енг!згеннен кей!н нег!зг! программа ж!бер!лед!. Жыланшаны басқару жоғарыда айтылғандай жүзеге асырылады.
Символдардың пайда болуы кездейсоқтықпен !ске асады, координаттары да кездейсоқтықпен !ске асады. Бұл кезде координата орындарында басқа символдардың бар жоғы тексер!лед!. Бар болса басқа координата алынады.
- 1 Блок-схема
(B қосымшасын қараңыз)
0 басы
1 Айнымалыларды баяндау және деректерд! орнату
2 Пернен!ң басылуына тексеру, басылып тұрса, онда 3-блокқа, басылмаса 24-блокқа
3 Жоғарғы бағытшаға басылып тұрса, 8-блокқа, жоқ болса 4-блокқа
4 Төменг! Бағытшаға басылып тұрса, 12-блокқа, жоқ болса 5-блокқа
5 Оң бағытшасына басылып тұрса, 16-блокқа, жоқ болса 6-блокқа
6 Сол бағытшасына басылып тұрса, 20-блокқа, жоқ болса 7-блокқа
7 ESC басылып тұрса, 24-блокқа, жоқ болса 2-блокқа
8 Жыланшаны еск! Орнынан өш!р!п, 9-блокқа
9 y координатасын 1-ге азайтып, 10-блокқа
10 К!д!р!с процедурасын шақырып, 11-блокқа
11 Жыланшаны жаңа жерде кеск!ндеп, 2-блокқа
12 Жыланшаны еск! Орнынан өш!р!п, 13-блокқа
13 y координатасын 1-ге арттырып, 14-блокқа
14 К!д!р!с процедурасын шақырып, 15-блокқа
15 Жыланшаны жаңа жерде кеск!ндеп, 2-блокқа
16 Жыланшаны еск! Орнынан өш!р!п, 17-блокқа
17 x координатасын 1-ге арттырып, 18-блокқа
18 К!д!р!с процедурасын шақырып, 19-блокқа
19 Жыланшаны жаңа жерде кеск!ндеп, 2-блокқа
20 Жыланшаны еск! Орнынан өш!р!п, 21-блокқа
21 x координатасын 1-ге арттырып, 22-блокқа
22 К!д!р!с процедурасын шақырып, 23-блокқа
23 Жыланшаны жаңа жерде кеск!ндеп, 2-блокқа
24 Соңы
- 2 Мәт!нн!ң жолдарына байланысты программа логикасын баяндау
1 Программа моделін баяндау
2 Стек үшін жадыдан орын бөлу
3 Деректер сегменті
4-17 Айнымалыларды баяндау
18 Кода сегменті
20 delay макросын құру
21-34 Берілген макрос кідіріс функциясын орындайды
36 ust_sym макросын құру
37-62 Берілген макроста символды еркін экран координаталарын орнату алгоритмі келесі ретте осы макросты шақыру қаралады
64 game процедурасын құру
655-658 Бұл процедурада ойынның өзі қарастырылады. Ойын алгоритмі төмендегідей: алдымен перненің басылуын күтеміз, кейін перненің басылуын тексеру жүреді
658 Программамызды көрсететін start тамғасын баяндаймыз
670-671 ds сегменті мен днрнктер сегментін біріктіреміз
663 clean макросын шақырамыз
667 game процедурасын шақырамыз
669-677 программа соңы
- 3 Шақыру және жүктеу
Алдымен tasm. exe файлының көмегімен программаны компилируйтетуіміз керек. Кейіннен қате болмаған жағдайда obj файлын tlink. exe файлының көмегімен линктеуіміз керек.
Осыдан алынған exe файлын жүктеуге болады.
- 4 Қолданылатын техникалық жабдықтар
Курстық жобамен жұмыс кезінде Celeron 900 ПК және DeskJet 3325 принтері қолданылды.
- Қорытынды
Бұл курстық жобаны орындау кезінде “Жүйелік программалау”, ”Жоғарғы математика” пәндерінен алған барлық теориялық және практикалық білім қолданылды.
Ассемблер тілі машиналық тілдің аналогы болып табылатындықтан, ол микропроцессор архитектурасымен үздіксіз байланысты. Сондықтан оның архитектурасына өзгеріс енгізерліктей жағдай болса, ассемблер кеңінен қолданылады.
Компьютерде ассемблерді білмей-ақ жұмыс істеуге болар, бірақ кәсіпқой программистті дайындау элементі болып ассемлерді оқу болып табылады. Ассемблерді оқу арқылы сіз міндетті түрде компьютер архитектурасымен танысасыз. Ал бұл сізге болашақта басқа да тілдерде эффективті программалар жасап, біріктіруге жол ашады.
Ассемблер тілінің компьютер құрылымын оқып, үйренуде маңызы зор.
Пайдаланылған әдебиеттер тізімі
1. Юров В. Assembler -учебник : Санкт-Петербург, Питер, 2001.
2. Юров В. Assembler -справочник : Санкт-Петербург, Питер, 2001.
3. Черник А., Аваков С.
«Справочная книга программиста», Москва, 1991.
4. П. Абель "Язык ассемблера для IBM PC и про-
граммирования ", М. :Высшая школа,
1991
ҚОСЫМША A
1. model small
2. stack 100h
3. data
4 x1 db 25 dup(0)
5 y1 db 80 dup(0)
6 c1 db 25 dup(0)
7 d1 db 80 dup(0)
8 num1 db 100 dup(0)
9 kol dw 0
10 x db 25 dup(0)
11 y db 80 dup(0)
12 i1 db 0
13 j1 db 0
14 kol2 dw 0
15 sym db "=Molodec=Good_boy" ;
16 lose db 'Game over$'
17 time1 dw 70
18. code
19;
20delay macro time
21 local qq, ww
22;
23 mov cx, time
24;
25qq:
26 push cx
27 mov cx, 5
28;
29ww:
30 loop ww
31 pop cx
32 loop qq
33;
34endm
35;
36ust_sym macro
37;
38 push ax
39 push si
40;
41 inc kol2
42 mov si, kol2
43;
44 mov ah, i1
45 add ah, 1
46 mov i1, ah
47;
48 mov al, j1
49 add al, 2
50 mov j1, al
51;
52 mov ah, i1
53 mov x[si], ah
54 mov al, j1
55 mov y[si], al
56;
57 symbol x[si], y[si], sym[si], 111b
58;
59 pop si
60 pop ax
61;
62endm
63;
64game macro
65;
66 mov si, 0
67;
68 inc si
69 mov kol, si
70;
71 mov si, 0
72;
73 mov dl, 10
74 mov al, 40
75 mov ah, 01h
76 int 16h
77 jz aaa11
78 jne ttt11
79;
80ttt11:
81 jmp
82;
83aaa11:
84 jmp aaa1
85;
86:
87 cmp ah, 77
88 je vpravo1
89 jne q
90;
91vpravo1:
92 jmp vpravo
93;
94q:
95 cmp ah, 75
96 je vlevo1
97 jne w
98;
99vlevo1:
100 jmp vlevo
101;
102w:
103 cmp ah, 80
104 je vniz1
105 jne e
106;
107vniz1:
108 jmp vniz
109;
110e:
111 cmp ah, 72
112 je verh1
113 jne r
114;
115verh1:
116 jmp verh
117;
118r:
119 cmp al, 27
120 je exit11
121;
122exit11:
123 jmp exit1
124;
125vpravo:
126 mov si, 0
127 mov cl, 80
128 push si
129 mov si, kol2
130 mov ah, x[si]
131 mov al, y[si]
132 pop si
133;
134vp2:
135 cmp ah, x1[si]
136 je vp21
137 jne vp22
138;
139vp21:
140 cmp al, y1[si]
141 je vp23
142 jne vp22
143;
144vp23:
145 inc kol
146 mov di, kol2
147 push si
148 mov ch, x1[si]
149 mov cl, y1[si]
150 mov si, kol
151 dec si
152 mov al, sym[di]
153 mov num1[si], al
154 add cl, 2
155 mov x1[si], ch
156 mov y1[si], cl
157 pop si
158 ust_sym
159;
160vp22:
161 cmp si, kol
162 je vp3
163 jne vp4
164;
165vp3:
166 jmp vp5
167;
168vp4:
169 push si
170 symbol x1[si], y1[si], num1[si], 101b
171 pop si
172 inc si
173 jmp vp2
174;
175vp5:
176 mov si, 0
177;
178vp6:
179 cmp si, kol
180 je vp7
181 jne vp9
182;
183vp7:
184 jmp vp8
185;
186vp9:
187 mov al, x1[si]
188 mov c1[si], al
189 mov al, y1[si]
190 mov d1[si], al
191 inc si
192 jmp vp6
193;
194vp8:
195 mov si, 0
196 mov di, 1
197 mov al, y1[si]
198 add al, 2
199 mov y1[si], al
200;
201vp10:
202 cmp si, kol
203 je vp11
204 jne vp12
205;
206vp11:
207 jmp vp13
208;
209vp12:
210 mov al, c1[si]
211 mov x1[di], al
212 mov al, d1[si]
213 mov y1[di], al
214 inc si
215 inc di
216 jmp vp10
217;
218vp13:
219 mov si, kol
220 delay time1
221 symbol x1[si], y1[si], num1[si], 0
222 mov ah, 01h
223 int 16h
224 jz vp14
225 jnz vp15
226;
227vp14:
228 jmp vpravo
229;
230vp15:
231 mov ah, 10h
232 int 16h
233 cmp ah, 75
234 je vp20
235 jne vp17
236;
237vp20:
238 jmp vpravo
239;
240vp17:
241 cmp ah, 77
242 je vp19
243 jne vp18
244;
245vp19:
246 jmp vpravo
247;
248vp18:
249 jmp
250;
251vlevo:
252 mov si, 0
253 mov cl, 0
254 push si
255 mov si, kol2
256 mov ah, x[si]
257 mov al, y[si]
258 pop si
259;
260 cmp y1[si], cl
261 je vl1
262 jne vl2
263;
264vl1:
265 jmp exit1
266;
267vl2:
268 cmp ah, x1[si]
269 je vl21
270 jne vl22
271;
272vl21:
273 cmp al, y1[si]
274 je vl23
275 jne vl22
276;
277vl23:
278 inc kol
279 mov di, kol2
280 push si
281 mov ch, x1[si]
282 mov cl, y1[si]
283 mov si, kol
284 dec si
285 mov al, sym[di]
286 mov num1[si], al
287 sub cl, 2
288 mov x1[si], ch
289 mov y1[si], cl
290 pop si
291 ust_sym
292;
293vl22:
294 cmp si, kol
295 je vl3
296 jne vl4
297;
298vl3:
299 jmp vl5
300;
301vl4:
302 push si
303 symbol x1[si], y1[si], num1[si], 101b
304 pop si
305 inc si
306 jmp vl2
307;
308vl5:
309 mov si, 0
310;
311vl6:
312 cmp si, kol
313 je vl7
314 jne vl9
315;
316vl7:
317 jmp vl8
318;
319vl9:
320 mov al, x1[si]
321 mov c1[si], al
322 mov al, y1[si]
323 mov d1[si], al
324 inc si
325 jmp vl6
326;
327vl8:
328 mov si, 0
329 mov di, 1
330 mov al, y1[si]
331 sub al, 2
332 mov y1[si], al
333;
334vl10:
335 cmp si, kol
336 je vl11
337 jne vl12
338;
339vl11:
340 jmp vl13
341;
342vl12:
343 mov al, c1[si]
344 mov x1[di], al
345 mov al, d1[si]
346 mov y1[di], al
347 inc si
348 inc di
349 jmp vl10
350;
351vl13:
352 mov si, kol
353 delay time1
354 symbol x1[si], y1[si], num1[si], 0
355 mov ah, 01h
356 int 16h
357 jz vl14
358 jnz vl15
359;
360vl14:
361 jmp vlevo
362;
363vl15:
364 mov ah, 10h
365 int 16h
366 cmp ah, 75
367 je vl20
368 jne vl17
369;
370vl20:
371 jmp vlevo
372;
373vl17:
374 cmp ah, 77
375 je vl19
376 jne vl18
377;
378vl19:
379 jmp vlevo
380;
381vl18:
382 jmp
383;
384vniz:
385 mov si, 0
386 mov cl, 24
387 push si
388 mov si, kol2
389 mov ah, x[si]
390 mov al, y[si]
391 pop si
392;
393 cmp x1[si], cl
394 je vn1
395 jne vn2
396;
397vn1:
398 jmp exit1
399;
400vn2:
401 cmp ah, x1[si]
402 je vn21
403 jne vn22
404;
405vn21:
406 cmp al, y1[si]
407 je vn23
408 jne vn22
409;
410vn23:
411 inc kol
412 mov di, kol2
413 push si
414 mov ch, x1[si]
415 mov cl, y1[si]
416 mov si, kol
417 dec si
418 mov al, sym[di]
419 mov num1[si], al
420 add ch, 1
421 mov x1[si], ch
422 mov y1[si], cl
423 pop si
... жалғасы- Іс жүргізу
- Автоматтандыру, Техника
- Алғашқы әскери дайындық
- Астрономия
- Ауыл шаруашылығы
- Банк ісі
- Бизнесті бағалау
- Биология
- Бухгалтерлік іс
- Валеология
- Ветеринария
- География
- Геология, Геофизика, Геодезия
- Дін
- Ет, сүт, шарап өнімдері
- Жалпы тарих
- Жер кадастрі, Жылжымайтын мүлік
- Журналистика
- Информатика
- Кеден ісі
- Маркетинг
- Математика, Геометрия
- Медицина
- Мемлекеттік басқару
- Менеджмент
- Мұнай, Газ
- Мұрағат ісі
- Мәдениеттану
- ОБЖ (Основы безопасности жизнедеятельности)
- Педагогика
- Полиграфия
- Психология
- Салық
- Саясаттану
- Сақтандыру
- Сертификаттау, стандарттау
- Социология, Демография
- Спорт
- Статистика
- Тілтану, Филология
- Тарихи тұлғалар
- Тау-кен ісі
- Транспорт
- Туризм
- Физика
- Философия
- Халықаралық қатынастар
- Химия
- Экология, Қоршаған ортаны қорғау
- Экономика
- Экономикалық география
- Электротехника
- Қазақстан тарихы
- Қаржы
- Құрылыс
- Құқық, Криминалистика
- Әдебиет
- Өнер, музыка
- Өнеркәсіп, Өндіріс
Қазақ тілінде жазылған рефераттар, курстық жұмыстар, дипломдық жұмыстар бойынша біздің қор #1 болып табылады.
Ақпарат
Қосымша
Email: info@stud.kz