У нас: 141825 рефератів
Щойно додані Реферати Тор 100
Скористайтеся пошуком, наприклад Реферат        Грубий пошук Точний пошук
Вхід в абонемент





 

КУРСОВИЙ ПРОЕКТ

з дисципліни СИСТЕМНЕ ПРОГРАМУВАННЯ

Тема розробка системного загрузчика який здійснює ревізію конфігурації комп’ютера та виводить отриману інформацію на екран

Анотація

В курсовому проекті проаналізована функція ревізії конфігурації комп’ютера на рівні Bios-переривання int 11h, а також детально розглянута структура та параметри загрузочної області. На основі даного алгоритму написаний системний загрузчик, який здійснює ревізію конфігурації комп’ютера та виводить отриману інформацію на екран.

Summary

In a course project there is the analyzed function of revision of configuration of computer at the level of Bios-breaking of int 11h, and also the in detail considered structure and parameters of boots region. On the basis of this algorithm the written system boots, this carries out the revision of configuration of computer and destroys obtained information on a screen.

Зміст

1 опис основних функцій, що використані в програмі, блок-схема програми 8

2 код програми ревізії конфігурації комп’ютера з поясненнями (ремарками) 14

3 опис роботи 14

Висновки 17

Перелік використаних літературних джерел 18

Додаток А Програма запису системного загрузчика в загрузочну область

1 опис основних функцій, що використані в програмі, блок-схема програми

Системний загрузчик, програми ревізії конфігурації комп’ютера складається з наступних частин:

тіло програми, в якому відбувається перевірка відповідних значень та виведення повідомлень на екран;

функція встановлення відео режиму 00h переривання int 10h;

функція ревізії обладнання комп’ютера переривання int 11h;

функція виведення символів на екран 0Eh переривання int 10h.

2 код програми ВИЗНАЧЕННЯ КОНФІГУРАЦІЇ КОМП'ЮТЕРА з поясненнями (ремарками)

.model tiny ;вибір моделі пам'яті для компіляції сом-файлу CS=ES=SS=DS

.code ;початок кодового сегменту

org 100h ;зміщення в 256 байт для PSP

start: ;мітка першої інструкції

mov ax,0003h ;функція встановлення відеорежиму 3(очистка екрана і ;встановлення

;курсора в 0,0)

int 10h ;виклик переривання виконання функції

int 11h ;виклик переривання визначення обладнання

mov si,ax ;збереження повернутого значення в регістрі SI

and ax,0001h ;накладання маски для перевірки 0-го біту (наявності FDD)

jz m1 ;якщо 0-й біт дорівнює 0 переходимо на мітку m1

;за допомогою функції виводу символу на екран виводимо строку "FDD="

mov ax,0e46h

mov bx,0007h

int 10h

mov ax,0e44h

int 10h

mov ax,0e44h

int 10h

mov ax,0e3dh

int 10h

mov ax,si ;якщо 0-й біт дорівнює 1, виводимо кількість дисководів

and ax,00c0h

add ax,31h

mov ah,0eh

int 10h

m1:

;*********Функція переводу курсора на новий рядок

mov ah,02h

xor bl,bl

mov dx,0100h

int 10h

;*********

mov ax,si

and ax,0002h ;накладання маски для перевірки 1-го біту (наявності ;сопроцесора 8087)

jz m2 ;якщо 1-й біт дорівнює 0 переходимо на мітку m2

;за допомогою функції виводу символу на екран виводимо строку "SOPROCESSOR 8087"

mov ax,0e53h

mov bx,0007h

int 10h

mov ax,0e4fh

int 10h

mov ax,0e50h

int 10h

mov ax,0e52h

int 10h

mov ax,0e4fh

int 10h

mov ax,0e43h

int 10h

 

mov ax,0e45h

int 10h

mov ax,0e53h

int 10h

mov ax,0e53h

int 10h

mov ax,0e4fh

int 10h

mov ax,0e52h

int 10h

mov ax,0e20h

int 10h

mov ax,0e38h

int 10h

mov ax,0e30h

int 10h

mov ax,0e38h

int 10h

mov ax,0e37h

int 10h

m2:

;*********Функція переводу курсора на новий рядок

mov ah,02h

xor bl,bl

mov dx,0200h

int 10h

;*********

mov ax,si

and ax,000ch ;накладання маски для перевірки 2-3-го бітів (RAM)

jz m5 ;якщо 2-3-й біти дорівнють 0 переходимо на мітку m5

;за допомогою функції виводу символу на екран виводимо строку "MEMORY:Kb"

mov ax,0e4dh

mov bx,0007h

int 10h

mov ax,0e45h

int 10h

mov ax,0e4dh

int 10h

mov ax,0e4fh

int 10h

mov ax,0e52h

int 10h

mov ax,0e59h

int 10h

mov ax,0e3ah

int 10h

mov ax,0e4bh

int 10h

mov ax,0e62h

int 10h

mov ax,si

and ax,000ch

cmp al,04h ;якщо AL=08h виводимо на екран число "16" (RAM=16Kb)

jnz m3 ;інакше переходимо на мітку m3

mov ax,0e31h

int 10h

mov ax,0e36h

int 10h

m3: cmp al,08h ;якщо AL=08h виводимо на екран число "32" (RAM=32Kb)

jnz m4 ;інакше переходимо на мітку m4

mov ax,0e33h

int 10h

mov ax,0e32h

int 10h

m4: cmp al,0ch ;якщо AL=0сh виводимо на екран число "64" (RAM=64Kb)

jnz m5 ;інакше переходимо на мітку m5

mov ax,0e36h

int 10h

mov ax,0e34h

int 10h

m5:

;*********Функція переводу курсора на новий рядок

mov ah,02h

xor bl,bl

mov dx,0300h

int 10h

;*********

mov ax,si

and ax,0100h ;накладання маски для перевірки 8-го біту (присутності DMA)

jz m6 ;якщо 8-го біт дорівнє 0 переходимо на мітку m6

;за допомогою функції виводу символу на екран виводимо строку "DMA Present"

mov ax,0e44h

mov bx,0007h

int 10h

mov ax,0e4dh

int 10h

mov ax,0e41h

int 10h

mov ax,0e20h

int 10h

mov ax,0e70h

int 10h

mov ax,0e72h

int 10h

mov ax,0e65h

int 10h

mov ax,0e73h

int 10h

mov ax,0e65h

int 10h

mov ax,0e6eh

int 10h

mov ax,0e74h

int 10h

m6:

;*********Функція переводу курсора на новий рядок

mov ah,02h

xor bl,bl

mov dx,0400h

int 10h

;*********

mov ax,si ;LPT

and ax,0c000h ;накладання маски для перевірки 14-15-го бітів ;(присутності LPT)

mov di,ax ;збереження результату логічної операції в регістрі DI

jz m9 ;якщо 14-15-й біти дорівнють 0 переходимо на мітку m9

;за допомогою функції виводу символу на екран виводимо строку "LPT:"

mov ax,0e4ch

mov bx,0007h

int 10h

mov ax,0e50h

int 10h

mov ax,0e54h

int 10h

mov ax,0e3ah

int 10h

mov ax,0e20h

int 10h

cmp di,4000h ;якщо DI=4000h виводимо на екран число "1" (LPT:1)

jnz m7 ;інакше переходимо на мітку m7

mov ax,0e31h

int 10h

m7: cmp di,8000h ;якщо DI=8000h виводимо на екран число "2" (LPT:2)

jnz m8 ;інакше переходимо на мітку m8

mov ax,0e32h

int 10h

m8: cmp di,0c000h ;якщо DI=C000h виводимо на екран число "3" (LPT:3)

jnz m9 ;інакше переходимо на мітку m9

mov ax,0e33h

int 10h

m9:

ret

end start

3 опис роботи

На початку програми вибирається модель пам’яті та тип процесора командами model та .386 відповідно. Виконання програми починається із мітки start.

Далі за допомогою функції встановлення відео режиму 00h переривання int 10h ми встановлюємо відео режим 3, тобто текстовий режим з переводом курсору в позицію 0,0. Після встановлення відео режиму викликаємо переривання int 11h, в результаті отримаємо і зберігаємо вихідне значення регістру АХ.

Перевіряємо 0 біт регістру АХ. Якщо він дорівнює 0, переходимо до перевірки 1-го біту, інакше за допомогою функції виводу символів 0Еh переривання int 10h строку “FDD=”, виконуємо логічну операцію АХ&00с0, збільшуємо значення на 1 і отримаємо кількість дисководів, що виводиться на екран. За допомогою функції 02h переривання int 10h переводимо курсор на нову строку.

Перевіряємо 1 біт регістру


Сторінки: 1 2