Жоспар №13205

Жүйелік программалау: Ассемблер тілінде файлды пароль көмегімен ашуды жүзеге асыру

Сұрақ-жауап

Сұрағыңызға жасанды интеллект жауап береді

 ҚАЗАҚСТАН РЕСПУБЛИКАСЫНЫЊ БІЛІМ ЖӘНЕ ҒЫЛЫМ МИНИСТРЛІГІ Қаныш Сатпаев атындағы Ќазақ ¦лттық Техникалық Университеті Есептеу техника кафедрасы КУРСТЫҚ Ж¦МЫС Тақырыбы: “ИППОДРОМ” жетекші: аға оқытушы Болатова Г.К. нормо баќылаушы: аға оқытушы Болатова Г.К. Тапсырған күні: “___” _________ 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 Перевод в двоичную сс Неправиль ный пароль Ввод пароля Ввод файл заставка начало 

Мәтінді көшіру үшін белсенді жазылым қажет.

Пайдаланушы ID: 295586

Жарияланған күні: