|
Монітор використання ресурсів комп'ютера |
Монітор використання ресурсів комп'ютера
6 Міністерство освіти і науки України Кiровоградський Державний Технiчний Унiверситет Факультет автоматики енергетики та програмування Кафедра програмного забезпечення Курсовая работа з дисципліни “ASM-86 ” на тему: "Монітор використання ресурсів комп'ютера" Зміст - 1. Вступ
- 2. Постановка задачі
- 3. Обґрунтування вибору методів розв'язку задачі
- 4. Алгоритм програми
- 5. Реалізація програми
- 6. Системні вимоги
- 7. Інструкція для користувача
- 8. Висновки
- 9. Використана література
- Додаток
1. ВступТепер комп'ютери відіграють у житті людини все більшу та більш роль. Раніше, коли ще не було комп'ютерів, чи вони були мало розповсюдженні, все робилося вручну. Коли комп'ютери одержали широке розповсюдження, комп'ютер став допомагати людині, бо він може багато операцій робити набагато швидше, ніж людина.Але є багато типів комп'ютерів, які розрізняються своїми можливостями. Щоб досконаліше знати можливості свого комп'ютера, призначені програми, які виводять на екран характеристики машини.2. Постановка задачіРозробити програму “Монітор використання ресурсів комп'ютера" на мові програмування ASM-86.3. Обґрунтування вибору методів розв'язку задачіОтже, необхідно написати програму, яка виводе на екран ресурси комп'ютера. При виборі алгоритму програми у мене виникло багато варіантів, бо ресурси машини можна знаходити різними засобами. Але на мою думку, я вибрав алгоритми, які більш-менш прості та зрозумілі користувачу.4. Алгоритм програмиАлгоритм головної програми:Очищення екрануВиведення рамкиАналізує і виводить тип комп'ютераАналізує і виводить версію MS-DOSАналізує і виводить день тижняАналізує і виводить поточну датуПідготовка виводу системного часуАналізує і виводить розмір пам'ятіАналізує і виводить інформацію про дискАналізує і виводить інформацію про мікропроцесорВиклик процедури виводу часуЧитання порту клавіатуриПорівняння з ESC14Якщо не ESC, продовження виводу часу15. Закінчити програму.5. Реалізація програмиПрограма написана на мові ASM-86 з використанням команд процесора 86/286. Вона складається з головної програми, яка викликає процедури, та процедур, які виконують необхідні дії по визначенню ресурсів машини.Для визначення системної дати та дня тижня я використовував функцію 2AH переривання 21H.Для визначення системного часу я використовував функцію 2СH переривання 21H.Для визначення розміру пам'яті я використовував пам'ять CMOS, порти 70h та 71h.Для визначення метки тому, формату FAT я читав BOOT-сектор диску, та аналізував інформацію в ньому. Читання сектору я проводив за допомогою переривання 25H.Для визначення вільного місця, кількості загальних та вільних кластерів я використовував функцію 36H переривання 21H.Для визначення версії DOS я використовував функцію 30H переривання 21H.Для визначення типу комп'ютера я використовував байт пам'яті, який знаходиться по адресу: 0F000H: 0FFFEH.Програма компілюється Turbo Assembler, зв'язується за допомогою TLINK.6. Системні вимогиIBM сумісний комп'ютер із мікропроцесором Intel 80086 або старшим.Операційна система - ДОСПам'ять - 640 К і вище7. Інструкція для користувачаДля запуску програми-монітору використання ресурсів комп'ютера, потрібно в командному рядку набрати kurs1. exe та натиснути Enter.Програма аналізує та виводе на екран відомості про тип комп'ютера, поточну дату, день тижня, розмір пам'яті, розмір розширеної пам'яті, версію MS-DOS, метку тому диска, формат FAT диску, вільне місце на диску, кількість вільних кластерів на диску та тип процесора. Також програма виводе на екран поточний час до тих пір, поки користувач не натисне клавішу ESC.8. ВисновкиОтже, на мові ASM-86 створено програму-монітор використання ресурсів комп'ютера.9. Використана література1. Р. Джордейн “Справочник программиста персональных компьютеров типа IBM PC” М: Мир, 1991р.2. П. Абель “Мова асемблера для IBM PC та програмування." М.: Вища школа, 1992.3. “Основи мови” Асемблер” В.I. Криволап. Москва 1997р. ст.3094. “Ассемблер для початкiвцiв” М.П. Шукiн. Київ 1980р. ст.1555. “Турбо Асемблер” Л.В. Захаров. Харків 1995 р ст.1786. “Макро Асемблер” К.С. Кропiйко, О.Д. Богатирова. Київ - “Наука” 1991р.7. Електронний довідник BOOK. ДодатокЛістинг програмиSTACKSG SEGMENT PARA STACK 'Stack'; СтекDW 32 DUP (?)STACKSG ENDS; - ---------------------------------------------------DATASG SEGMENT PARA 'Data'; Данныеsaved_cpuid dd?vendor_id db 12 dup (?)cpu_type db?themodel db?stepping db?id_flag db 0intel_proc db 0id_msg db "Ця система маэ: $"c8086 db "8086/8088 мiкропроцессор$"c286 db "Intel 286 мiкропроцнссор$"c386 db "Intel386 (TM) мiкропроцессор$"c486 db "Intel486 (TM) DX мiкропроцессор$"Pentium db "Pentium (TM) мiкропроцессор", 13, 10, '$'intel db " Genuine Intel Processor", 13, 10, "$"modelmsg db "Модель: $"steppingmsg db "Шаг: $"familymsg db "Процессор сiмейства: $"period db ". ",13,10,"$"dataCR db?,13,10,"$"intel_id db "GenuineIntel"TYPEC DB 'Тип комп"ютера','$'MJR DB 'PCjr ','$'MPC DB 'PC','$'MXT DB 'XT','$'MAT DB 'AT','$'VER DB 'ВЕРСIЯ MS-DOS ','$'STAR DB 2 DUP (?)TOCH DB '. 'MLAD DB 2 DUP (?)TOCH1 DB '. ','$'SDAT DB 'СИСТЕМНA ДАТА ','$'GOD1 DB 2 DUP (?)GOD2 DB 2 DUP (?),'-'MUNS DB 2 DUP (?),'-'DAY DB 2 DUP (?)TOCH2 DB '. ','$'MEMMS DB 'Розмiр пам"ятi','$'MEMMS1 DB 'Розмiр розширеноi пам"ятi','$'MEM1 DB 2 DUP (?)MEM2 DB 2 DUP (?),'$'DENTIG DB 'День тиждня','$'NED DB 'Недiля',13,10,'$'PON DB 'Понедiлок',13,10,'$'VIV DB 'Вiвторок',13,10,'$'SER DB 'Середа',13,10,'$'CHE DB 'Четверг',13,10,'$'PYA DB 'П"ятниця',13,10,'$'SUB DB 'Субота',13,10,'$'TIME DB 'Системний час','$'HOUR DB 2 DUP (?),': 'MIN DB 2 DUP (?),': 'SEC DB 2 DUP (?),'$'COL DB 00ROW DB 00chast dw 00sit db 10 dup ('$'); строка для выводаSpace dw 00h; longdw 00hBuffer dw 17000 dup (00);prompt1 db 13,10,' Кiлькiсть вiльних кластерiв на диску = ','$'prompt2 db 13,10,' Доступне дискове пространство = ','$'prompt3 db 13,10,' Кiлькiсть всього кластерiв на диску = ','$'prompt4 db 13,10,' Загальне дискове пространство = ','$'MetkaToma db 13,10,' Метка тому = ',11 dup (0),'$'RFAT db 13,10,' Формат FAT = ',8 dup (0),'$'Sectors_Per_Cluster dw 00hfree_cluster dw 00zag_cluster dw 00fat_format dw 00crlf db 13,10,'$'mnoj dd 00hfor_eax dd 00hfor_eax1 dd 00hostt dd 00hmemo dd 0ahDATASG ENDS; - ---------------------------------------------------CODESG SEGMENT PARA 'Code'; Код программыBEGIN PROC FARASSUME CS: CODESG,DS: DATASG,SS: STACKSG,ES: DATASGPUSH DSSUB AX,AX; Обнуление AXPUSH AXMOV AX,DATASG; Загрузка сегмента данныхMOV DS,AXMOV ES,AXMOV AX,0600HCALL Q10SCR; Очистить экранCALL Q20CURS; Установить курсорCALL TABL; Выводит рамкуCALL COMP1; Анализирует и выводит тип компютераCALL MSDOSVER; Анализирует и выводит версию MS-DOSCALL SYSTDAT; Анализирует и выводит день неделиCALL SMM1; Анализирует и выводит текущую датуCALL TIME1; Подготовка вывода системного времениCALL MEMORY2; Анализирует и выводит размер памятиCALL DISC; Анализирует и выводит информацию о дискеCALL CPUID; Анализирует и выводит информацию о микропроцессореAS:CALL TIME2; Вызов процедуры вывода времениin al,60h; Чтение порта клавиатурыcmp al,1; Сравнение с ESCjne as; Если не ESC, продолжение вывода времениmov ah,004ch; Выход из программыint 21hRETBEGIN ENDPCPUID PROC.8086; This part of the program must run on an 8086call get_cpuidcall printRETCPUID ENDPget_cpuid proc; 8086 CPU check; Bits 12-15 are always set on the 8086 processorcheck_8086:pushf; save FLAGSpop bx; store FLAGS in BXmov ax, 0fffh; clear bits 12-15and ax, bx; in FLAGSpush ax; store new FLAGS calue on stackpopf; replace current FLAGS valuepushf; set new flagspop ax; store new flags in AXand ax, 0f000h; if bits 12-15 are set, then CPUcmp ax, 0f000h; is an 8086/8088mov cpu_type, 0; save the CPU typeje END1JMP FF1END1: RETFF1:; Intel 286 CPU check; Bits 12-15 are always clear on the Intel processor.check_80286:.286or bx, 0f000h; try to set bits 12-15push bxpopfpushfpop axand ax, 0f000h; if bits 12-15 are cleared,; CPU=Intel 286mov cpu_type, 2; turn on Intel 286 Cpu flagjz END2; if CPU is intel 286, checkJMP FF2; for Intel 287 math coprocessorEND2: RETFF2:; Intel386 CPU check; The AC bit (bit 18), is a new bit introduced in the EFLAGS; register on the Intel486 DX CPU to generate alignment faults.; This bit can not be set on the Intel386 CPU.;check_intel386:.386pushfdpop eax; get original EFLAGSmov ecx,eax; save original EFLAGSxor eax,40000h; flip AC bit in EFLAGSpush eax; save for EFLAGSpopfd; copy to EFLAGSpushfd; push EFLAGSpop eax; get new EFLAGS valuexor eax,ecx; can't toggle AC bit, CPU=Intel386mov cpu_type, 3; turn on Intel386 CPU flagje end_get_cpuid; if CPU is Intel386, now check; for an Intel 287 or Intel387 MCP; Intel486 DX CPU, Intel 487 SX MCP, and Intel486 SX CPU checking;; Checking for the ability to set/clear the ID flag (bit 21) in EFLAGS; which diferentiates between Pentium (or greater) and the Intel486.; If the ID flag is set then the CPUID instruction can be used to; determine the final version of the chip, else it's a 486;;check_Intel486:.486mov cpu_type, 4; turn on Intel486 CPU flagpushfd; push original EFLAGSpop eax; get original EFLAGS in eaxmov ecx,eax; save original EFLAGS in ecxor eax, 200000h; flip ID bit in EFLAGSpush eax; save for EFLAGSpopfd; copy to EFLAGSpushfd; push EFLAGSpop eax; get new EFLAGS valuexor eax,ecxje end_get_cpuid; if ID bit cannot be changed,; CPU=Intel486 without CPUID; instruction functionality; Otherwise, execute CPUID instruction to determine vendor,; family, model and stepping.check_vendor:.586mov id_flag, 1; set flag for indicating use of; CPUID instmov eax, 0; set up for CPUID instructioncpuidmov dword ptr vendor_id, ebx; Test for "GenuineIntel" vendor id.mov dword ptr vendor_id [+4], edxmov dword ptr vendor_id [+8], ecxmov si, offset vendor_idmov di, offset intel_idmov cx, length intel_idcompare:repe cmpsbcmp cx, 0; must be a GenuineIntel if ecx =0jne cpuid_dataintel_processor:mov intel_proc, 1mov [intel-1], '¦'; add a space so the Genuine Intel; message prints out.cpuid_data:mov eax, 1cpuidmov saved_cpuid,eax; save for future useand eax, 0F00H; mask everything but familyshr eax, 8mov cpu_type, al; set cpu_type with familymov eax,saved_cpuid; restore datamov stepping, aland stepping, 0FH; isolate stepping infomov eax, saved_cpuidmov themodel, aland themodel, 0F0H; isolate model infoshr themodel, 4end_get_cpuid:.8086retget_cpuid endp;; This procedure prints the appropriate cpuid string; If the CPUID instruction was supported, it prints out; the cpuid info.print procpush axpush bxpush cxpush dxMOV COL,2MOV ROW,15CALL Q20CURSmov dx, offset id_msgmov ah, 9hint 21h; print initial messagecmp id_flag, 1; if set to 1, cpu supported CPUID; instruction; print detailed CPUID informationje print1print_86:cmp cpu_type, 0jne print_286MOV COL,30MOV ROW,16CALL Q20CURSmov dx, offset c8086mov ah, 9hint 21hjmp end_printprint1: jmp print_cpuid_dataprint_286:cmp cpu_type, 2jne print_386MOV COL,30MOV ROW,16CALL Q20CURSmov dx, offset c286mov ah, 9hint 21hjmp end_printprint_386:cmp cpu_type, 3jne print_486MOV COL,30MOV ROW,16CALL Q20CURSmov dx, offset c386mov ah, 9hint 21hjmp end_printprint_486:MOV COL,30MOV ROW,16CALL Q20CURSmov dx, offset c486mov ah, 9hint 21hjmp end_printprint_cpuid_data:cmp cpu_type, 5jne print_cpuid_contMOV COL,30MOV ROW,16CALL Q20CURSmov dx, offset Pentiummov ah, 9int 21hprint_cpuid_cont:MOV COL,2MOV ROW,16CALL Q20CURSmov dx, offset familymsg; print family msgmov ah, 9hint 21hmov al, cpu_typemov byte ptr dataCR, aladd byte ptr dataCR, 30H; convert to ASCIIMOV COL,30MOV ROW,17CALL Q20CURSmov dx, offset dataCR; print family infomov ah, 9hint 21hMOV COL,2MOV ROW,18CALL Q20CURSmov dx, offset steppingmsg; print stepping msgmov ah, 9hint 21hmov al, steppingmov byte ptr dataCR, aladd byte ptr dataCR, 30H; convert to ASCIIMOV COL,30MOV ROW,18CALL Q20CURSmov dx, offset dataCR; print stepping infomov ah, 9hint 21h
Страницы: 1, 2
|
|
|
© 2003-2013
Рефераты бесплатно, курсовые, рефераты биология, большая бибилиотека рефератов, дипломы, научные работы, рефераты право, рефераты, рефераты скачать, рефераты литература, курсовые работы, реферат, доклады, рефераты медицина, рефераты на тему, сочинения, реферат бесплатно, рефераты авиация, рефераты психология, рефераты математика, рефераты кулинария, рефераты логистика, рефераты анатомия, рефераты маркетинг, рефераты релиния, рефераты социология, рефераты менеджемент. |
|
|