Таймерді орнату және оқу


Жұмыс түрі: Материал
Тегін: Антиплагиат
Көлемі: 30 бет
Таңдаулыға:
Мазмұны
Кіріспе
Қазіргі таңда бар барлық программалау тілдерін шартты түрде екі категорияға бөлуге болады, оның біреуі ассемблер тілі де, екіншісіне қалғандары жатады.
Жоғарғы деңгейлі тілдер қолданбалы тапсырмаларды (материалдық, экономикалық және т. б. ) шешуге ориентир алатын болса және осы тапсырмалардың алгоритмдік мазмұнын өзінде сақтаса, ассемблер тілі архитектуралық процестің сонымен қатар, программалық құрылғылардың режимдерінің және функционалдау алгоритмдердің айнасы болып табылады. Ассемблер тілінің операторы микропроцессордың тек қана машиналық түрде көрсетілген кодтар ғана емес, азды-көпті мнемоникалық белгілермен көрсетілген нақты командаларын көрсетеді. Ассемблер тілінің бұл ерекшелігі оның мүмкіндіктері мен қолдану аймағын анықтайды.
Бәрімізге белгілі ассемблер тілінде жазылған программалар (әрине егер олар дұрыс жазылса) жоғары тиімділігімен соған сәйкес минималды көлемімен және максималды жылдам әрекет етуімен ерекшеленеді. Бұл ассемблер тілі программа жұмысының жылдамдығы немесе оған шығындалатын жады шешуші мән алған жағдайда кеңінен қолдануға мүмкіндік береді. Кейбәр программалар класын (мысалы, қатты құрылыммен ерекшеленетін құрылғылар драйверлерінің программасы) құру кезінде ассемблер тілін міндетті түрде программалау керек. Сонымен қатар ассемблер тілін компьютпрлік ғылыми өлшемдермен немесе технологиялық процесті басқарылатын жүйесімен қосылған стандартты емес аппаратураларды басқаратын программаларды жазуға ыңғайлы. Сонымен бірге математикалық немесе логарифдік сипаттағы модельдеуден, сандық немесе символдық ақпараттарды өңдеуге, мәлімет базасына қызмет көрсететін программаларды жетілдіру үшін жоғарғы деңгейдегі тілдер қажет.
Ассемблер тілі алғашқы тексті жоқ программаларды зерттейтін негізгі құрал болып табылады. Орындалатын программалардың шартты белгілерін ашу деассемблер - қызметтік программалар көмегімен жүзеге асады. Ол орындалатын программалық текстік кодты ассемблер түріне түрлендіреді. Әрине мұндай текстпен жұмыс істеу үшін пайдаланып отырған программалау тілін жетік меңгеру керек.
Ассемблер тілін меңгеру ПК-де (дербес компьютерде) программа жазатын барлық маманға міндетті.
Ассемблер тілінің басқа да программалау тілдері сияқты көптеген тұрғызылған құралдары бар. Ол кез келген бір жағдайда программалау процесін жеңілдетеді әрі жеделдетеді және құрылған программаның сапасын көтереді. Ассемблер тілінде кәсіптік жұмыс істеу аталған құралдармен жеке-жеке танысуды қажет етеді. Бірақ қолданбалы мамандардың кең шеңбері үшін, егер ассемблер тілін негізгі программалау тілі ретінде пайдаланбаса ассемблер тілінің әрбір бөлшектерін жеке меңгеру қажет емес. Ассемблер тілінде қолданбалы программаларды (алгоритмдік жоспарда онша қиын емес) құруда ең бастысы құрылған программаларды оқып әрі түсіне білу керек, команда жүйесі туралы және адресациялау әдісі туралы көрсететін болуы жеткілікті және тілдің бір жағынан процессор және компьютердің толық архитектурасы жайлы толық және ашық көрсетілген болу керек.
Қазіргі таңда IBM PC типті дербес компьютерлердің операциондық жүйесін программалау екі класқа бөлінеді. MS-DOS бір тапсырмалы текстік жүйе және көп тапсырмалы Windows графикалық жүйесі. MS-DOS операциондық жүйесі нақты режимдегі жүйе болып табылад; басқа сөзбен айтқанда ол 8086 процессорлы құралдарды пайдаланады, тіпті егер ол Pentium процессорлы компьютерде орнатылса да. Windows жүйесі - қорғаныс режиміндегі жүйе; Қазіргі заман процессорларының мүмкіндіктерін кеңінен пайдаланады. Жекелей алғанда, көп тапсырмалылық және кеңейтілген адрестік кеңістік.
1 Таймерді орнату және оқу
Барлық IBM PC жүйелік сағаттар микросхемасымен сәйкес болу үшін 8253 (немесе 8254) таймері микросхемасын қолданады. Жүйелік сағаттардың цикл саны 1 импульске түрленеді, ал осы импульстердің жүйелілігі уақытты анықтауға есептеледі немесе белгілі жиілікті дыбысты генерациялауға компьютердің лауыс зорайтқышына беріледі. 8253 микросхемасы 3 ұқсас тәуелсіз каналдан тұрады, олардың әрқайсысы программалана алады.
8253 микросхемасы процессордан тәуелсіз жұмыс істейді. Процессор микросхеманы программалайды, сосын басқа жұмыстарға кіріседі. Осылайша 8253 микросхемасы нақты уақыт сағаты ретінде әрекет етеді - ол өзінің импульстерін компьютерде өтіп жатқан әрекеттерден тәуелсіз есептейді. Алайда максимал программаланатын интервал 1/12 секундты құрайды. Уақыт интервалын сағат және минут бойынша есептеу үшін басқа амалдар қажет. Осыған орай таймер микросхемасының нөлдік каналынан шығатын импульстер BIOS мәліметтер облысындағы айнымалыға жиналады. Бұл қорлануды тәулік уақытының есептелуі дейді. Секундына 18, 2 рет 0 каналының шығысы аппараттық үзілумен (таймер үзілуі) өңделеді. Ол біраз уақытқа процессорды тоқтатады және тәулік уақыты есептеуішін ұлғайтады. 0 саны 12:00 мезгіліне сәйкес келеді, есептеуіш 24 сағатына эквивалент мәнге жеткенде нөлге теңестіріледі. Тәулік уақытын есептеуіш уақытқа байланысты көптеген операцияларда қолданылады.
2 Таймер микросхемасын программалау
8253 (АТ үшін 8254) таймер микросхемасының 3 каналының әрқайсысы 3 регистрден тұрады. 3 регистрден тұратын әрбір топқа рұқсат немесе өту бір порт арқылы жүзеге асады: порттар номері 40h-тан 42h-қа дейін 0-2 каналдарына сәйкес келеді. Порт осы канал үшін мәліметтер жіберетін және қабылдайтын 8-биттік енгізу/шығару регистрімен байланысқан. Канал программаланған кезде осы порт арқылы 2 байтты мән жіберіледі, бірінші кіші байт беріледі. Бұл сан 16-биттік регистр-фиксаторға беріледі, ол осы санды сақтайды және оның көшірмесін 16-биттік есептеуіш регистрге орналастырады. Есептеуіш регистрде сан канал арқылы жүйелік сағаттардан импульс өткен сайын 1 бірлікке азайып отырады. Осы санның мәні нөлге жеткенде канал шығыстық сигнал береді және ысырма регистр құрамының жаңа көшірмесі есептеуіш регистрге жылжиды, осыдан кейін процесс қайталанады. Есептеуіш регистрде сан аз болған сайын ритм жылдам болады. Барлық 3 канал да ылғи активті: процессор оларды қоспайды және ажыратпайды. Есептеуіш регистрдің кез келгенінің ағымдағы мәні кез келген уақыт моментінде оқыла алады.
Әрбір каналдың екі кірістік және бір шығыстық линиялары бар. Шығыстық линия есептеу нәтижесінде туындаған импульстерді шығарады. Бұл сигналдардың мақсаттары IBM PC типіне байланысты анықталады.
0 каналы тәулік уақытының жүйелік сағаттарымен қолданылады. Бұл канал импульстерді секундына 18, 2 рет шығарып отырады. Осы импульстердің 4-байтты есептеуіші жадыда 0040:006С (кіші байт бірінші сақталады) адресімен сақталады. Әрбір импульс таймер үзілуін қолдайды және осы үзілу есептеуіш көрсеткішін жоғарылатады. Бұл - аппараттық үзілу, сондықтан ол әрқашан процессордан тәуелсіз өңделеді, егер аппараттық үзілулер рұқсат етілсе.
1 каналы жадыны жаңартуды басқарады, сондықтан оған тиіспеген дұрыс. Осы каналдың шығыстық линиясы жадыға жедел рұқсат микросхемасымен байланысқан және оның импульсі DMA микросхемасын барлық жадыны жаңартуға мәжбүрлейді.
2 каналы компьютердің дауыс зорайтқышымен байланысқан және дыбысты генерациялау үшін қарапайым тік бұрышты импульстер өндіреді. Программистер басқа каналдарға қарағанда осы каналды бақылауды жақсы жүргізеді. Қарапайым дыбыстар басқа да программалық операциялармен бірге генерациялана береді, ал күрделі дыбыстық эффектілер процессор көмегімен іске асырылады. 2 каналы дауыс зорайтқыштан жоғарылатылуы және синхпрондау үшін қолданылуы мүмкін. Бұл каналдың шығыстық линиясы компьютер динамигімен байланысқан. Алайда динамик 8255 перифериялы интерфейс микросхемасының арнайы орнатылуы жүзеге асқанша дыбысты өзі генерациялай алмайды.
Әр каналдың 2 шығыстық линиясы қақпа (gate) деп аталатын линиялар есеп жүйелік сағаттар микросхемасынан сигнал беретін сағаттар линиясынан тұрады. Қақпа сағаттардан сигналды қосып және ажыратады. Қақпалар 0 және 1 каналдар бойынша сағаттар сигналдары үшін ылғи да ашық. Бірақ олар 2 каналы үшін жабық болуы мүмкін, мұның өзі дыбыспен бірқатар арнайы манипуляция жасауға мүмкіндік береді. Қақпалар 8255 микросхема регистрі болып табылатын адресі 61h порттың кіші бит құрылғысымен жабылады. Бұл битті алып тастау қақпаны қайта ашады. 2 каналының шығысы сияқты 61h портының 1 биті динамикпен байланысқан және дыбысты генерациялауда қолданыла алады.
Таймер микросхемасы тікелей уақыттық операцияларға қолданылуы мүмкі бірақ мұның қолайлылығы сирек. Сағаттардан енгізу секундына 1, 19318 миллион рет жасалады. 16 битте сақталатын максимал сан 65535 болса және осы сан 18, 2-ге тең сағаттардан импульстердің жиілігіне бөлінсе, онда импульстер арасындағы мүмкін болатын интервал 1/12 секундқа жуық. Сондықтан көптеген уақыттық операциялар BIOS тәулік уақыты есептеуішін қолданады.
8253 микросхемасы әр канал үшін 6 жұмыс режимін ұсынады. Программистер, көбінесе, үшінші режиммен шектеледі, синхрондау кезінде 0 каналы үшін сияқты 2 каналына да синхрондау және дыбысты генерациялау үшін қолданылады. Бұл режимде ысырма регистр санды қабылдаған сәтте-ақ оның көшірмесін есептеуіш регистрге жүктейді. Есептеуіште мән нөлге жеткенде ысырма регистр лезде есептеуішті қайта жүктейді және т. с. с. Санаудың жартысында шығыстық линия қосылған, ал қалған жартысында - өшірілген. Нәтижесінде дыбысты генерациялауға, сонымен бірге есептеуге де жарамды тік бұрышты толқындар пайда болады.
8-биттік командалық регистр сандарды каналға жүктеу әдісімен басқарады. Бұл регистр үшін порт адресі - 43h. Командалық регистрге қандай каналды программалау керек, қай режимде екендігін көрсететін байт, сонымен қатар ысырма регистрдің бір немесе екі байты міндетті түрде берілуі керек. Ол сонымен бірге сан екілік және BCD (екілік кодталған ондық) яормада болатынын көрсетеді. Бұл регистрдің бит мәні:
бит 0 егер 0, екілік мәлімет, әлде BCD
3-1 режим номері, 1-5 (000-101)
5-4 операция типі:
00=есептеуіш мәнін ысырмаға беру
01=тек үлкен байтты оқу/жазу
10=тек кіші байтты оқу/жазу
11=бірінші үлкен, сосын кіші байтты оқу/жазу
7-6 программаланатын канал номері, 0-2 (00-10)
3 Таймердің жұмыс принципі
Компьютерлерде, негізінен, тәуелсіз 2 таймер болады. Оның біреуі (“нақты уақыт сағаты”) токпен өте аз қоректенетін микросхема құрамына енген, ол жүелік платада орналасқан батарейка немесе аккумулятордан қоректенеді және желіден ағытылған машинада да жұмыс істей береді. Бұл таймерде сақталады және автоматикалық түрде ағымдағы күнтізбелік уақыт (жыл, ай, күн, сағат, минут, секунд) жылжи береді.
Компьютерді қосқаннан кейін жұмысқа басқа таймер кіріседі, ол таймер жүйелік деп аталады. Ол үшін уақыт сигналы датчигі ретінде 1, 19318МГц жиілікте жұмыс істейтін кварцтық генератор істейді. Одан шыққан сигнал қайта есептеуден кейін 65536:1 қатынасында үзілу бақылаушысына енеді және үзілуді вектор 8 арқылы 18, 2065Гц жиілікпен жүзеге асырады. Бұл үзілулер BIOS программасын активтендіреді. Машинаны қосқаннан кейін BIOS программалары нақты уақыт сағаттарынан тәуліктің ағымдағы уақытын алып, оны жүйелік таймердің такт санына түрлендіреді (интервал саны 1/18, 2065сек) және ағымдағы уақыт ұяшығына жазады. Келесі кезекте осы ұяшық құрамы үзілу режимінде жұмыс істейтін жүйелік таймер арқылы жылжып ұлғаяды.
Ағымдағы уақытты анықтау үшін қолданбалы программа 21һ DOS сәйкес үзілу функцияларын шақыра алады (дата алу үшін - 2Аһ, тәулік уақытын алу үшін - 2Сһ), тіпті уақытты тікелей нақты уақыт сағаттарынан 1Аһ BIOS үзілуі көмегі арқылы оқи алады. Бұл кезде 1Аһ үзілуі ағымдағы уақытты оқу (02һ функциясы) және ағымдағы датаны (04һ функциясы) оқудан басқа көптеген функцияларды орындайды. Мысалы, оның ең маңыздысы - будильник орнату, яғни сағаттар микросхемасына сағаттар аппараттық үзілулер сигналын шығаратын күнтізбелік уақытты жазу. Бұл сигнал 70һ векторы арқылы BIOS құрамына кіретін будильниктің орнатылуына жету нәтижесінде үзілу туды ма, соны тексеретін үзілулер өңдеушісін жүзеге асырады және сонымен бірге микросхемалық батарейканың қоректендіруін тексереді, сосын үзілу тексерушісінің екеуіне де үзілу соңы командасын жібереді және iret командасымен аяқталады. Өзінің орын далу барысында 70һ үзілу өңдеушісі int4Ah командасын орындайды. Бұл команда осы үзілудің өңдеушісіне басқаруды ъ\береді және ол да BIOS құрамына кіреді. 4Аһ үзілудің жүйелік өңдеушісі маңызды еш нәрсе істемейді. Бірақ программасы 4Аһ векторына будильниктен үзілумен активтелетін үзілудің қолданбалы өңдеушісі адресін жазуға мүмкіндік бар. Қолданбалы өңдеушінің функцияларын программист өзі анықтайды.
Төмендегі мысалда өзінен-өзі шақырылмайтын 4аһ үзілудің қолданбалы өңдеушісі орнатылады. Бұл қолданьалы өңдеушінің өз-өзінен шақырылмау себебі - үнсіздік бойынша нақты уақыт сағатының будильнигі жұмыс істемейді. Егер жүйелік уақытты 1аһ үзілуінің 02һ функциясымен оқысақ және оған бір шаманы, мысалы, 1секундты қоссақ, сөйтіп осы уақытқа будильникті орнатсақ (1аһ үзілуінің 06һ функциясы көмегімен), онда 1 секундтан кейін біздің өңдеуші активтеледі. Мысалда бұл процесс шексіз жасалған: будильниктің үзілу өңдеушісінде уақытты оқу, оған 1 секунд қосу және будильникті жаңа уақытқа орнату қайта орнатылады. Нәтижесінде өңдеуші әр секунд сайын программа біткенше шақырылып отырады.
Будильникті келесі секундқа орнату функциясы қызметінен басқа үзілу өңдеушісі пайдалы жұмыс та істейді: ол ағымдағы уақытты экранның белгілі бір бөлігіне шығарады. Өңдеуші әр секунд сайын активтелетін болғандықтан, шығарылған уақыт мәні әр секунд сайын жаңартылып отырады.
Нақты уақыт сағаттарында уақыт мәні қатталған екілік-ондық сан түрінде болады. BCD сандарымен арифметикалық операциялар орындау кезінде (біздің жағдайдағы операция - 1 мәнін қосу) осы үшін арналған процессор командасын қолдану керек. Мысалда осы командалардың бірі - daa қолданылған.
Уақыт мәнін экранға шығару үшін оны ASCII кодтарының тізбегіне, ретіне түрлендіру керек. Екілік-ондық сандарды символдар жолдарына түрлендіру процедурасы да мысалда бар.
Бұл мысалда көптеген командалар қолданылған:стекте сақтау және жалпы мақсаттағы барлық регистрлерді қалпына келтіру командалары (pusha және popa), сонымен бірге shl ілгері жүріс командасы сандық операндамен. Осы командалар ассемблермен танылу үшін . 586 директивасы енгізілген (. 386 директивасын да қолдануға болады) . Бұл жағдайда 2 сегменттіде USE16 сипаттаушысымен жариялау керек.
Программа main негізгі процедурасынан, new_4a будильниктен үзілу өңдеушісі процедурасынан, сонымен қатар 3 көмекші - add_time, add_unit және conv процедура-подпрограммалардан тұрады. Негізгі процедура 4аһ үзілудің бастапқы векторын сақтайды, осы үзілудің жаңа өңдеушісін орнатады, ағымдағы уақытты оқиды және ағымдағы уақыттан 1 секунд арттағы уақытқа будильник орнатады, сосын кез келген клавишаның басылуын күтумен тоқтайды. Программа тоқтап тұрғанда будильниктен үзілу өңделеді және экранның оң жақ бұрышында әр секунд сайын ағымдағы уақыт көрсетіліп тұрады. Кез келген клавишаны басқанда программа будильникті ағытып, 4аһ векторының бастапқы құрамын қалпына келтірумен аяқталады.
Осы ұсынылған мысалда программаның практикалық маңызы аз, өйткені уақытты көрсеткеннен өзге пайдалы жұмыс атқармайды. Программа аяқталмай тұрған кезде басқа программаны жүктеу мүмкін емес, себебі DOS бір әрекетті жүйе болып табылады. Егер бұл программаны . COM форматында жазып және оны резидентті қылсақ, онда біз өзге программаларды жүктеп және бірмезгілде экраннан ағымдағы уақытты да көре аламыз. Ал DOS- та мұндай құрал жоқ.
Енді будильниктің үзілу өңдеушісі программасын қарастырайық. Программада pusha (push all - барлығын сақтау) константасының көмегімен жалпы мақсаттағы барлық регистрлер, сонымен бірге өңдеушіде қолданылған ds және es 2 сегменттік регистрлер де сақталады. Келесіде ds регистрі hour ұяшығы кіретін сегменттің сегменттік адресіне бағытталады. Бұл әрекет, бір қарағанда, мәні жоқ сияқты. Main процедурасының басында ds регистріне data мәліметтер сегментінің адресі орналастырылған. 4Аһ программалық үзілу өңдеушісі болғалы тұрған new_4a процедурасы кез келген аппараттық үзілу сияқты кез келген уақыт моментінде шақырылатын нақты уақыт сағаттарынан аппараттық үзілулер өңдеушісі болып табылады. Үзілетін программа осы сәтте кез келген әрекетті орындауы мүмкін. Сондықтан ds регистрі құрамы да кез келген болуы мүмкін. Осы программа клавишаның басылуын күтетін қалыпта болады. Бұл циклды уаыт сайын өзінің клавиатура драйверіне қатынасатын 01һ функциясы ұйымдастырады. Ал клавиатура драйвері BIOS-тың клавиатурадан символ енгізу программаларына бағытталады.
Регистрлерді сақтап және ds-ті баптап, ағымдағы уақытты оқу үзілуінің (1Аһ) 02һ функциясын шақырамыз. Уақыт CH (сағат), CL (минут), DH (секунд) регистрлеріне екілік-ондық форматта (1 байтта 2цифрдан) қайтарылады. Бізге бұл уақыт тағы да будильникті қайта орнату үшін өңдеушінің аяғында қажет болады және екінші рет 02һ функциясын шақырмау үшін алынған уақыт, яғни cx және dx регистрлерінің құралы стекте сақталады.
Келесі әрекетте уақытты құрайтын BCD-цифрлардың сәйкес символдардың ASCII кодтарына түрлендірілуі жүреді. Сағаттар саны (2 BCD-цифр) Al регистріне орын ауыстырады және сағаттардың үлкен цифрын ASCII кодына түрлендіретін conv подпрограммасы шақырылады және оны AH регистріне қайтарады. Бұл код мәліметтер сегментіндегі жол - hour шаблонына орналасады. Осы шаблонда уақытты құрайтын цифр символдары үшін бос орындар дайындалған, сонымен қатар бөлгіш қос нүктелер де бар. Бұл жол элементтеріне қатынау қолайлылығы үшін ол бөліктерге бөлінген және әр бөлік сәйкес атпен қамтамасыз етілген (min - минут өрісі үшін, sec - секунд өрісі үшін) .
Conv подпрограммасы 3 сөйлемнен тұрады (ret қорытындылаушы команданы ескермегенде) . 2-разрядты BCD-сан Al регистрінде подпрограммаға жіберіледі. Соңғы нәтижені алу үшін қабылдауыш ретінде қызмет атқаратын AH регистрі нөлденгенде Al құрамы shl командасы арқылы солға 4 бит ығысады, нәтижесінде Al регистрінің үлкен жарты байты, яғни санның үлкен цифры регистріне орналасады. Екілік-ондық цифр цифрдың екілік бөлмесінде болады. Оның кодына “0” символының кодын (30һ саны) қосу осы цифрдың ASCIIкодын береді.
Біз CH регистрінің тек үлкен жарты байтын түрлендірдік. Кіші жарты байтты белгілеу үшін CH регистріне 0Fh маска төселеді. Бұл маска кіші жарты байтқа тиіспей, тек үлкен жарты байтты нөлдейді. Нөлдің ASCII кодын ондық цифрдың кодына қосу осы санның ASCII кодын береді. Осы ASCII код шаблон жолына тасымалданады. Сипатталған программа сосын CL (минут) және DH (секунд) регистрлері үшін де қайталанады.
Экранға уақыт жолын шығару үшін видеожадыға тікелей қатынас пайдаланылады. ES регистріне В800һ видеобуферінің сегменттік адресі, ал DI қажетті ығысуы енгізіледі, SI регистріне көздің жол адресі енгізіледі. CX регистріне - қадам саны, ал AH регистріне - таңдалған символдар атрибуттары (көк өрістегі қызыл символдар) . Шаблон-жолмен де, экран бойынша да орын ауыстыру тек алға болғандықтан, cld командасымен DF жалаушасы алынып тасталынады. Ladsb және stosw жұп команданың циклдық орындалуы экранның берілген орнына hour барлық жолын шығаруды жүзеге асырады.
Экранға ағымдағы уақытты шығарған соң будильникті тағы орнату керек. Ол үшін алдында орнатылған будильниктің жұмысы тоқтатылады, dx және cx регистрлеріндегі ағымдағы уақыт қалпына келтіріледі және add_time процедурасын шақырумен ағымдағы уақытқа 1 секунд қосылады. Сосын 06һ функциясын шақырумен жаңадан будильник орнатылады, өңдеуші программаның басындағы регистрлер қалпына келтіріледі және iret командасы арқылы өңдеуші өз жұмысын аяқтайды.
... жалғасы- Іс жүргізу
- Автоматтандыру, Техника
- Алғашқы әскери дайындық
- Астрономия
- Ауыл шаруашылығы
- Банк ісі
- Бизнесті бағалау
- Биология
- Бухгалтерлік іс
- Валеология
- Ветеринария
- География
- Геология, Геофизика, Геодезия
- Дін
- Ет, сүт, шарап өнімдері
- Жалпы тарих
- Жер кадастрі, Жылжымайтын мүлік
- Журналистика
- Информатика
- Кеден ісі
- Маркетинг
- Математика, Геометрия
- Медицина
- Мемлекеттік басқару
- Менеджмент
- Мұнай, Газ
- Мұрағат ісі
- Мәдениеттану
- ОБЖ (Основы безопасности жизнедеятельности)
- Педагогика
- Полиграфия
- Психология
- Салық
- Саясаттану
- Сақтандыру
- Сертификаттау, стандарттау
- Социология, Демография
- Спорт
- Статистика
- Тілтану, Филология
- Тарихи тұлғалар
- Тау-кен ісі
- Транспорт
- Туризм
- Физика
- Философия
- Халықаралық қатынастар
- Химия
- Экология, Қоршаған ортаны қорғау
- Экономика
- Экономикалық география
- Электротехника
- Қазақстан тарихы
- Қаржы
- Құрылыс
- Құқық, Криминалистика
- Әдебиет
- Өнер, музыка
- Өнеркәсіп, Өндіріс
Қазақ тілінде жазылған рефераттар, курстық жұмыстар, дипломдық жұмыстар бойынша біздің қор #1 болып табылады.

Ақпарат
Қосымша
Email: info@stud.kz