ҚАЗАҚСТАН РЕСПУБЛИКАСЫНЫЊ БІЛІМ ЖӘНЕ ҒЫЛЫМ МИНИСТРЛІГІ
Қаныш Сатпаев атындағы Ќазақ ¦лттық Техникалық Университеті
Есептеу техника кафедрасы
КУРСТЫҚ Ж¦МЫС
Тақырыбы: “ИППОДРОМ”
жетекші:
аға оқытушы
Болатова Г.К.
нормо баќылаушы:
аға оқытушы
Болатова Г.К.
Тапсырған күні:
“___” _________ 2005 г.
қолы:
_____________________
студент: Кокимов Д.М
тобы: РЭТб-04-1ќ
мамандығы: 050719
Алматы 2005
Курстық жұмысты орындауға тапсырма:_______________________________ __________________________________________________________________
Студент: Лиясова Д.С.
Тақырыбы: Файлды пароль көмегімен ашу
Аяқталған жұмысты тапсыру уақыты: “____”_____________ 2004 ж.
Жазбаша түсініктеме
Мазмұны (жұмысқа қатысты қарастырылатын сұрақтар);
Кіріспе, негізгі бөлім, мысалдар:______________________________________
Сызба материалдар саны:____________________________________________
Жетекшісі: аға оқытушы Мустафина Б.М.
Тапсырманы орындауға қабылдап алған студент: Лиясова Д.С.
Күні “____”________________ 2004 ж.
Мазмұны
Кіріспе……………………………………….…..……………………………...4
1. Программалау ортасы ………………………………………………….....5
Жалпы мағлұматтар……………….……………………………………..5
Алгоритмнің негізгі идеясын көрсету………………………………….6
2. Командаларды сипаттау…………………………….…………………....7
3. Логикалық құрылымды сипаттау……………………………………….10
3.1 Блок – схеманы сипаттау……………………………………………......10
3.2 Программаны жол бойынша сипаттау…………………………………10
3.3 Шақыру және жүктеу…………………………………………………..14
4. Қолданылатын техникалық құралдар ………….……………………….14
5. Программаның орындалу уақытын есептеу.............................................14
Қорытынды……………………………….…………………………………….16
Пайдаланылған әдебиеттер……………………………………………………17
Қосымша А……………………………………………………………………..18
Қосымша Б……………………………………………………………………..20
КІРІСПЕ
“Жүйелік программалау” пәнінің негізгі мақсаты болып ПЭВМ жүйелік
Айтылған мақсаттарға тек программалық және аппараттық құрылғылардың жұмысын
Осы пәнді үйрену кезеңінде біз қарапайымнан күрделіге өтіп
Бұл курстық жоба файлды ашқан кезде парольды сұрататын
Ассемблер тілі фактылы түрде командалардың коды атауларымен алмастырылған
Курстық жобада функциялар, командалар, процедуралар қолданылған, қатынаудың негізгі
1. Программалау ортасы
Жалпы мағлұматтар
Дербес компьютердің техникалық құралдарын басқару және жүйелік программалаудың
ассемблерлеу жүйесі;
жүктегіштер және байланыстыру программалары;
макропроцессорлар;
компиляторлар;
операциялық жүйелер;
драйвелер.
Асемблерлеу жүйесі командалары бар бастапқы файлды жүктегіш файлға
Ассемблер тілі – бұл машиналық тілдің символдық көрінісі.
Ал ойланып көрейік, егер программистте бір келеңсіз жағдай
Сол себепті ассемблер тілі барлығына қажетті.
Алгоритмнің негізгі идеясын көрсету
Курстық жобаның негізгі мақсаты файлды ашқан кезде пароль
салыстыру, элементтер жұптарының реттелгендігін тексереді;
ауыстырып қою, элементтер жұптарының орнын ауыстырады;
жиынның барлық эелементтері реттелгенше элементтерді салыстыруды және ауыстырып
Пузырек әдісі (таңдаумен сұрыптайтын алмастыру әдісі).
Әдістің идеясы оның атында көрсетілген. Массивтің ең жеңіл
Таңдаумен сұрыптау
Бұл жолы массивті қараған кезде кішірек элементті іздейміз,
Шелла әдісі
Бұл әдіс 1959 жылы Donald Lewis Shell авторымен
Хоора әдісі
Хоора әдісі тез сұрыптайтын (QuickSort) әдіс 1962 жылы
2. Командаларды сипаттау
Берілген курстық жобада ассемблер машиналық тілмен көрсетілетін стандартты
Жоғарыда айтылған кейбір функциялврды қарастырайық.
DOS үзуінің функциялары (21h):
09h –дисплейге қатарды шығарады.
Енгізу: AH – 09h
DS:DX – қатар адресі,‘$’ (ASCII 24)
Шығару: жоқ
'$' символы бар қатарларды (BX=0) сипаттаушы арқылы беруге
01h – пернетақтадан символды енгізуді орындайды.
Енгізу: AH – 02h
Шығару: AL – стандартты енгізуден алынған символ
Бұл символды стандартты шығару құрылғысына өрнектейді
02h – қатарды дисплейге курсорды жылжытумен шығаруды
Енгізу: AH – 02h
DL – стандартты шығаруға шығаратын символ
Шығару: жоқ
Символды DL – дан стандартты шығаруға жібереді.
06h – консольді енгізу – шығару.
Енгізу: AH – 06h
DL – стандартты шағаруға жіберілетін символ (
Шығару: ZF – егер де символ дайын болса,
AL – есептелген символ егер DL = 0ffh.
08h – экранда көрінбейтіндей символды пернетақтадан енгізуді орындайды.
Енгізу: AH – 08h
Шығару: AL – стандартты енгізу арқылы алынған символ
Стандартты енгізу құрылғысынан символды есептейді және осы символды
1Аh – DТА адресін орнату
Енгізу: AH – 1Аh
DS:DX – DТА үшін адрес
Шығару: жоқ
Барлық FCB – бағытталған операциялар DTA – мен
3Dh – сипаттауыш арқылы файлды ашу.
Енгізу: AH – 3Dh
DS:DX – файл атымен бірге ASCIIZ қатардың адресі.
AL – ашылу режимі.
Шығару: AX – қате кодасы, егер файл сипаттаушы
DS:DX – “d\ путь \ имя файла
AL =0 – тек оқу үшін ашу.
AL =1 – тек жазу үшін ғана ашу.
AL =2 – жазу және оқү үшін ашу.
Оқу\жазу көрсеткіші нольге орнатылады.
3Fh – сипаттаушы арқылы файлды оқу.
Енгізу: AH – 3Fh
BX –файл сипаттаушы.
DS:DX – деректерді оқу үшін буфер адресі.
CX – есептелетін байт саны.
Шығару: AX – қате кодасы, егер CF орнатылса.
AL – нақты оқылған байттар саны.
СХ деректер байты файлдан немесе құрылғыдан ВХ –
40h – файлға жазуды немесе деректерді құрылғыға шығаруды
Енгізу: AH – 40h
BX – файл немесе құрылғының логикалық номері. Дисплей
CX –шығарылатын символдар саны.
DS:DX – деректер алынатын буфер адресі.
Шығару: AL – нақты есептелген байт саны.
Егер CF=0 болса, онда АХ-ке жазылған байттар саны
4Еh – бірінші сәйкес келген файлды табу.
Енгізу: АН - 4Еh
DS:DX – ASCIIZ қатар адресі файл атымен
CX – салыстыру үшін файл атрибуты.
Шығару: AX – қате кодасы.
DTA – деректермен толтырылған (егер қате жоқ болса).
Іздеу үшін сәйкес файлдар ретін қарастырайық:
DTA – на локальды буферге орналастыру үшін 1Ah
СХ = атрибут, DS:DX => ASCIIZ диск, жолын,
4Еһ (бірінші файлды табу) функциясын шақыру.
Егер CF жалаушасы қатені көрсетсе, онда сіз аяқтайсыз,
DS:DX => DTA – ға орнату.
Қайталау.
DS:DX адресі бойынша файл атын және деректерді өңдеу.
CF жалаушасы басқа сәйкес жоқ деп шығарғанша 4Fh
10һ – видео сервис үзу функциямы:
02h – курсор позициясын орнату.
Енгізу: AH – 02h
BH – видео парақтың номері, 0 – бірінші
DH, DL – қатар, баған (0 –ден бастап).
06h – терезені жоғары парақтау (немесе тазалау).
Енгізу: AH – 06h
CH, CL – терезенің жоғарғы сол бұрышының жолы,
DH, DL – терезенің төменгі оң бұрышының жолы,
AL – төменнен шығарылатын бос қатарлар саны (0
BH – бос қатарларға қолданылатын видео атрибут.
BIOS (16h) үзу функциялары:
10h – кеңейтілген пернетақтаны оқу.
Енгізу: AH – 10h
AL – символ.
3.Логикалық структураны сипаттау
3.1 Блок – схеманы сипаттау
Әр программа өзінің жұмысын бейнелейтін блок – схемаға
программа басы
парольді енгізіңіз деген жазба шығады
ондық формада парольді енгізу
егер пароль дұрыс емес болса, онда пароль дұрыс
егер дұрыс болса, онда пароль екілік жүйеде енгізіледі
экранда парольді енгізу туралы қайтадан хабар шығады, бірақ
егер пароль дұрыс болса, онда файл ашылады, егер
программа соңы
3.2 Текстің жолдарымен байланыстырып программаның логикасын сипаттау
3-18 деректер сегменті
22-31 қатарды шығару макросы
35 экранды тазалау процедурасы
36,37 жоғары сол бұрышының координаттары беріледі
38 экран түсі анықталады
39,40 төменгі оң бұрышының координаттары беріледі
41-43 экранды тазалау командасы
44 ішкі программадан оралу
45 процедура соңы
49 курсордың координаттарын беретін макростың басы
50 парақ номерін анықтау, бұл жағдайда
51 қатарды беру
52 бағанды беру
53,54 курсор позициясын орнату
55 макростың соңы
59 пункті салу үшін макростың басы
60,61 жоғары сол бұрыштың қатары, бағаны
62,63 төменгі оң бұрыштың қатары, бағаны
64 пункт түсі
65-67 терезені тарату
68 макростың соңы
72 файлды табу процедурасы
73-75 DTA адресі анықталады
76 бірінші сәйкес файлды табу
77 салыстыру үшін файлдың атрибуты
78 ASCIIZ қатарының адресі файл атымен
80 көшу, егер көшу болса
81 егер көшу жоқ болса
82 no_file1 меткасы
83 call процедурасына қайтарылып көшу
84 пункт макросын шақырып, керек мәліметтерді
85 курсор координиттарын береміз
86 файл табылмады деген қатарды шақыру
87,88 кеңейтілген пернетақтаны оқу
89 escape басылды ма соны тексереміз
90 егер тең болса, онда exit3 меткасына
91 егер жоқ болса, онда жазба
92 exit3 меткасы
93 exit меткасына шартсыз көшу
94 exit1 меткасы
95 ішкі программадан қайту
96 процедура соңы
100 макрос басы, символдарды битке көшіру
106 qq меткасы
107 санағыштың 4-ке теңдігін салыстыру
108 иә, ww меткасына көшу
109 келесі разряд 1 – ге
110 егер тең болса, онда ее меткасына
111 егер тең бомаса, онда rr
112 ее меткасы
113 dl – ге 1 бит
114 келесі разрядты орналастыру үшін 1
115 si – ді өсіру
116 qq меткасына көшу
117 rr меткасы
118-120 114-116 пунктімен бірдей
121 ww меткасы
122 dl – ді оңға
127 макростың соңы
131 жазба процедурасының соңы
132 clean процедурасын шақыру
133 пункт координаталарын береміз
134 курсорды орнатамыз
135 файлдың атын енгізу туралы хабар
137 ww меткасы
138,139 пернетақтадан енгізу
140 enter басылған
141 иә, qq меткасына көшу
142 escape басылған
143 иә, exit6 меткасына көшу
144 жоқ, уу меткасына көшу
145 exit6 меткасы
146 exit6 меткасына шартсыз көшу
147 уу меткасы
148-150 файл атын енгіземіз
151 qq меткасы
152 find_file процедурасын шақыру
153,154 84,85 пункттеріне сәйкес
155 парольді енгізу туралы хабарды шығарады
156,157 бейнесіз консольді енгізу
158 142 пункті сияқты
159 иә, exit7 меткасына көшу
160 жоқ, uu меткасына көшу
161 exit7 меткасы
162
163 uu меткасы
164 дисплейге парольге шығару
166 * түрінде
171,172 153,154 пункт сияқты
173 парольді қайтадан енгізіңіз деген хабарлама
175 zzz меткасы
176 санағыш 4 –ке тең
177 иә, mmm меткасына
178 жоқ, bbb меткасына көшу
179 mmm меткасы
180 nnn меткасына көшу
181 bbb меткасы
182-188 156-162 пункттері сияқты, тек exit9
163-167 пункттері сияқты
196 uuu меткасы
197,198 күту процессі
199 қайтадан енгізілген пароль үшін аудару
201 dl – ге енгізілген сан енгізіледі
202 салыстырылады
203 егер дұрыс пароль болса, онда
204 егер дұрыс емес пароль болса,
205 bnn меткасы
206 экранды тазалау процедурасы шақырылады
207 курсор координаталары беріледі
208 дұрыс емес пароль туралы хабар
209 программадан шығу
210 mn меткасы
211 al – ге пароль енгізіледі
212 берілген және енгізілген сандардың көбейтіндісі
213 жоғарыда көрсетілген пунктегі туындымен берілген
214 иә, tt меткасына көшу
215 жоқ, wrong меткасына көшу
216 wrong меткасы
217 wrong_password меткасына ауысу
218 tt меткасы
219 файлдың ашылуы
220 оқу, жазу
223 дескрипторды сақтау
224 сипаттаушы арқылы файлды оқу
225 файл сипаттаушысы
226 осынша санаймыз
227 осында (деректерді оқу үшін адрес
229 нақты оқылған байттар
231 экранды тазалау процедурасын шақыру
232 курсор позициясын орнату
234 жазу функциясы
235 шығару дескрипторы
236 осыдан (жазылатын деректері бар адрес
238-239 кеңейтілген пернетақтаны оқу
240 escape басылған
241 иә, exit98 меткасына көшу
242 жоқ, sss меткасына көшу
243 exit98 меткасы
244 exit меткасына көшу
245 sss меткасы
246 жазба процедурасын шақыру
247 wrong_password меткасы
171-174 пункттері сияқты
257 exit2 меткасы
258 exit меткасына көшу
259 ішкі программадан қайтып оралу
260 процедура соңы
264 негізгі программаның басы
267 жазба процедурасын шақыру
268 exit меткасы
269-271 стандартты шығыс
272 негізгі программаның соңы
3.3 Шақыру және жүктеу
Программа Parol деп аталады, программаны функционалдау үшін керек
Алдымен tasm.exe файлының көмегімен программаны компиляциялаймыз, содан соң
4 Қолданылатын техникалық құрадар
Курстық жұмысты орындаған кезде Pentum III дербес компьютерін
5 Программаның орындалатын уақытын есептеу
80-86-Р5 санашықтары үшін командалардың орындалу жылдамдығы тактілерде берілген.
Операциялар келесі бейнеде белгіленеді:
im – тікелей операнд;
i8, i16 – көрсетілген өлшемдегі тікелей операнд;
r – кез-келген регистр;
r8 – ah, al, bh, bl, dh, dl,
r16 – ax, bx, cx, bp, sp, si,
sr - сегмент;
m – жадыдағы регистр;
Intel 80286 санашықтары коспьютерде программаның жұмыс істеу уақытын
Саны Командалар Уақыты
4 mov r16,m 3
3 mov r16,i8 2
2 mov sr,r16 2
3 mov r16,sr 2
5 mov i8,r16 2
4 mov r16,im 2
4 mov r8,im 2
2 mov im,r16 2
2 inc r 2
6 push t16 3
2 pop r16 5
6 push sr 3
2 pop sr 5
2 xor r16,r16 2
1 jnz i8 7
1 cmp m,im 6
1 jne i8 7
Программада қолданылған барлық командалардың уақытын қосамыз Т=4*3+
0*2+2+3*2+5*2+4*2+4*2+2*2+6*3+8*5+6*3+2*5+8+4*3+*2*2+11*2+6+7=12+20+22+6+10+8+8+4+7+4+18+40+18+10+8+12+4+22+6+7=178
T=178 уақытын аламыз.
Қорытынды
Берілген курстық жұмыс жаңа есептеуіш машиналарының архитектурасының өзгеруіне
Барлық операциялар тез орындалады, себебі экранға шығару тура
Берілген программа ассемлер тілінің күштілігі мен мүмкіндіктерінің көптілігін
Пайдаланылған әдебиттер
1. Юров В. Assembler –учебник: Санкт-Петербург,Питер,2001.
2. Юров В. Assembler -справочник : Санкт-Петербург,Питер,2001.
3. Зубков С.В. Assembler для DOS, Windows и
Қосымша А
Қосымша Б
; программа листингісі
1 .model small
2 .stack 100h
3 .data
4 dta db 43 dup(0)
5 file1 db 15 dup(' '),0
6 no_file
7 enter_file db 'Please enter file :
8 enter_password db 'Please enter password :
9 repeat_password db 'Please repeat password :
10 wrong_password db 'Wrong password !!!$'
11 no_password db 'Passwords not determined !!!$'
12 password db 0
13 rep_password db 5 dup(' ')
14 num dw 12
15 num1 db 3
16 num2 db 0
17 deskr dw 0
18 buf db 1024 dup(' ')
19 .code
20 ;----------------------------------
21 ;========== вывод строки ==========
22 ;----------------------------------
23 strout macro str
24 push ax
25 push dx
26 mov ah,09h
27 mov dx,offset str
28 int 21h
29 pop dx
30 pop ax
31 endm
32 ;------------------------------------
33 ;========== очистка экрана ==========
34 ;------------------------------------
35 clean proc
36 mov ch,0
37 mov cl,0
38 mov bh,00000111b
39 mov dh,25
40 mov dl,80
41 mov ah,06h
42 mov al,0
43 int 10h
44 ret
45 endp
46 ;------------- ----------------------
47 ;==== задаем координаты курсора =====
48 ;------------------------------------
49 gotoxy macro i,j
50 mov bh,0
51 mov dh,i
52 mov dl,j ;столбцы
53 mov ah,02h
54 int 10h
55 endm
56 ;----------------------------------
57 ;========== рисуем пункт ========
58 ;----------------------------------
59 punkt macro i,j,i1,j1,cvet
60 mov ch,i
61 mov cl,j
62 mov dh,i1
63 mov dl,j1
64 mov bh,cvet
65 mov ah,06h
66 mov al,0
67 int 10h
68 endm
69 ;---------------------------------
70 ;========== поиск файла ==========
71 ;---------------------------------
72 find_file proc
73 mov ah,1ah
74 mov dx,offset dta
75 int 21h
76 mov ah,4eh
77 mov cx,0
78 mov dx,offset file1
79 int 21h
80 jc no_file1
81 jnc exit1
82 no_file1:
83 call clean
84 punkt 2,10,4,60,01010000b
85 gotoxy 3,15
86 strout no_file
87 mov ah,10h
88 int 16h
89 cmp al,27
90 je exit3
91 call zastavka
92 exit3:
93 jmp exit
94 exit1:
95 ret
96 endp
97 ;-------------------------------
98 ;=== перевод символов в биты ===
99 ;-------------------------------
100 perevod macro num
101 local qq,ww,ee,rr
102 push ax
103 push dx
104 push si
105 xor dx,dx
106 xor si,si
107 qq:
108 cmp si,4
109 je ww
110 cmp num[si],'1'
111 je ee
112 jne r
113 ee:
114 add dl,1
115 shl dl,1
116 inc si
117 jmp qq
118 rr:
119 shl dl,1
120 inc si
121 jmp qq
122 ww:
123 shr dl,1
124 mov num2,dl
125 pop si
126 pop dx
127 pop ax
128 endm
129 ;------------------------------
130 ;========== заставка ==========
131 ;------------------------------
132 zastavka proc
133 call clean
134 punkt 2,10,4,60,01010000b
135 gotoxy 3,15
136 strout enter_file
137 xor si,si
138 ww:
139 mov ah,01h
140 int 21h
141 cmp al,13
142 je qq
143 cmp al,27
144 je exit6
145 jne yy
146 exit6:
147 jmp exit2
148 yy:
149 mov file1[si],al
150 inc si
151 jmp ww
152 qq:
153 call find_file
154 punkt 6,10,8,60,01010000b
155 gotoxy 7,15
156 strout enter_password
157 mov ah,08h
158 int 21h
159 cmp al,27
160 je exit7
161 jne uu
162 exit7:
163 jmp exit2
164 uu:
165 mov password,al
166 mov ah,02h
167 mov dl,'*'
168 int 21h
169 mov dl,password
170 sub dl,30h
171 mov password,dl
172 punkt 10,10,12,60,01010000b
173 gotoxy 11,15
174 strout repeat_password
175 xor si,si
176 zzz:
177 cmp si,4
178 je mmm
179 jne bbb
180 mmm:
181 jmp nnn
182 bbb:
183 mov ah,08h
184 int 21h
185 cmp al,27
186 je exit9
187 jne uuu
188 exit9:
189 jmp exit2
190 uuu:
191 mov rep_password[si],al
192 mov ah,02h
193 mov dl,'*'
194 int 21h
195 inc si
196 jmp zzz
197 nnn:
198 mov ah,10h
199 int 16h
200 perevod rep_password
201 xor dx,dx
202 mov dl,num2
203 cmp dl,password
204 je mn
205 jne bnn
206 bnn:
207 call clean
208 gotoxy 4,10
209 strout no_password
210 jmp exit
211 mn:
212 mov al,password
213 mul num1
214 cmp ax,num
215 je tt
216 jne wrong
217 wrong:
218 jmp wrong_password1
219 tt:
220 mov ah,3dh ;открытие файла
221 mov al,2
222 mov dx,offset file1
223 int 21h
224 mov deskr,ax ;сохраним дескриптор
225 mov ah,3fh
226 mov bx,deskr
227 mov cx,1024
228 mov dx,offset buf
229 int 21h
230 mov cx,ax
231 push cx
232 call clean
233 gotoxy 1,1
234 pop cx
235 mov ah,40h
236 mov bx,1
237 mov dx,offset buf
238 int 21h
239 mov ah,10h
240 int 16h
241 cmp al,27
242 je exit98
243 jne sss
244 exit98:
245 jmp exit
246 sss:
247 call zastavka
248 wrong_password1:call clean
249 punkt 2,10,4,60,01010000b
250 gotoxy 3,15
251 strout wrong_password
252 mov ah,10h
253 int 16h
254 cmp al,27
255 je exit2
256 call zastavka
257 exit2:
258 jmp exit
259 ret
260 endp
261 ;--------------------------------------
262 ;========== начало программы ==========
263 ;--------------------------------------
264 start:
265 mov ax,@data
266 mov ds,ax
267 call zastavka
268 exit:
269 mov ah,04ch
270 mov al,0
271 int 21h
272 end start
2
конец
Открытие файла
8
10
9
Ввод пароля
5
Перевод в двоичную сс
Неправиль
ный пароль
Ввод пароля
Ввод
файл
заставка
начало