DevioLabавтоматичне керування капіталом
ПРАЦЮЄ 24/7
КРИПТОВАЛЮТИ · АКЦІЇ · 10 БІРЖ

Портфель, який керується автоматично

DevioLab підбирає стратегії, відстежує ринки та автоматизує купівлю і продаж активів. Кількість доступних криптовалют, акцій і торгових можливостей зростає щодня.

10підключених біржCrypto + Stocksв одному портфелі24/7автоматичний контроль

Обробка переривань в операційній системі MS-DOS

Оригінальна назва роботи

оробка переривань в операційній системі MS-DOS

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Інститут комп’ютерних наук та інформаційних технологій
Факультет:
Комп’ютерні науки
Кафедра:
Кафедра програмного забезпечення

Інформація про роботу

Рік:
2009
Тип роботи:
Звіт про виконання лабораторної роботи
Предмет:
Системне програмування
Група:
ПІ
Коротко про документ

Про що ця робота

Звіт присвячено розробці резидентної програми для виведення ненульових векторів переривань у середовищі MS-DOS. Наведено алгоритм, блок-схему та код програми мовою Pascal із використанням переривань.

У роботі розглядаються

  • Операційні системи
  • MS-DOS
  • Апаратні переривання
  • Резидентні програми
  • Системне програмування
  • Мова програмування Pascal

Зміст і розділи

  1. Завдання
  2. Використані типи даних
  3. Алгоритм виконання завдання
  4. Текст програми
  5. Результат роботи програми
Для кого:Студенти технічних спеціальностей, вивчаючі системне програмування та операційні системи.
Викладачі:Викладач кафедри програмного забезпечення

Ключові поняття

вектор перериваньMS-DOSрезидентна програмаобробник перериваньсегментзміщенняTurbo Pascalапаратний портклавіатурапам'ять

Частина тексту файла (без зображень, графіків і формул):

МІНІСТЕРСТВО ОСВІТИ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА” КАФЕДРА ПРОГРАМНОГО ЗАБЕЗПЕЧЕННЯ  Звіт Про виконання лабораторної роботи № 1 з дисципліни «Операційні системи та системне програмування» Тема: оробка переривань в операційній системі MS-DOS Завдання Скласти програму, яка б виводила на екран зміст всіх ненульових векторів переривань. Після виклику програма повинна залишатись резидентною. Вектор переривань, яким ініціалізується програма, підібрати самостійно. Використані типи даних ^word; - для опису вказівників на слово, для того щоб в них вмістити адрес сегмента та зміщення всередині цього сегмента; word, integer - для опису цілих змінних, нап., для лічильників у циклі; string - для запису шістнадцяткових номерів, адрес та зміщень var OldVect: procedure; - для запису адреси стандартного обробника переривань. Алгоритм виконання завдання Після початку роботи програми ми зберігаємо стандартний вектор обробки переривань від клавіатури, та заміняємо його на обробник. Обробник перевіряє яка клавіша була натиснута, і якщо це була F12, то він починає виконувати поставлене завдання, інакше управління передається стандартному обробнику переривання. Для виконання завдання, обробник очищає екран, і отримує адреси всіх переривань, якщо вони не нульові, то виводить їх на екран. Для отримання адреси отримуємо сегмент в якому знаходиться переривання та зміщення всередині сегменту, виходячи з того, що переривання починають розміщуватися з нульової адреси оперативної пам’яті. Після виконання програма залишається резидентною в пам’яті. Блок-схема алгоритму роботи програми Текст програми program lab1; uses dos, crt; var OldVect: procedure; ofset,seg:^word;{pointer to WORD} b:word; {dec to hex} function hex(a:word):string; var b,c:integer; d:string; begin d:=''; for b:=0 to 3 do begin c:=a mod 16; if c>9 then c:=c+39; d:=chr(c+48)+d; a:=a div 16; end; hex:=d; end; {F+} procedure GetAllNotNullVect; interrupt; var i: byte; p: pointer; NLineIndex: byte; begin if Port[$60]=$58 then begin clrscr; {pereburaem vsi pereruvannya} for b:=0 to 255 do begin {get segment} seg:=ptr(0,(b*4)); {get offset} ofset:=ptr(0,(b*4+2)); if (seg^<>0)and(ofset^<>0)then begin textcolor(green); write(' ',hex(b),': '); textcolor(blue); write(hex(seg^),':',hex(ofset^)); end; end; end; OldVect; end; {$F-} {$M $2048, 0, 0} Begin clrscr; GetIntVec($9, @OldVect); SetIntVec($9, @GetAllNotNullVect); Keep(0); readln; readln; End. Результат роботи програми: 
Допоможи студентському архіву

Ми допомогли тобі — допоможи наступному студенту

Файл ще не обрано

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!