Організація переривань у IBM PC .

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

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

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

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

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

Міністерство освіти і науки України Національний університет „Львівська політехніка” Кафедра електронних обчислювальних машин Звіт про виконання лабораторної роботи № 5 з курсу „ Системне програмування ” Тема: Організація переривань у IBM PC . Виконав: студент групи КІ- Львів – 2004 Мета роботи: Знайомство з механізмом переривань, оволодіння навичками їх обробки. Короткі теоретичні відомості Механізм і типи переривань. Для обробки подiй, що вiдбуваються асинхронно стосовно виконання програми, найкраще пiдходить механiзм переривань. Переривання можна розглядати як деяку особливу подiю в системi, що потребує моментальної реакцiї. Наприклад, добре спроектованi системи пiдвищеної надiйностi використовують переривання по аварiї в мережi живлення для виконання процедур запису вмiсту регiстрiв i оперативної пам'ятi на магнiтний носiй, iз тим щоб пiсля вiдновлення живлення можна було б продовжити роботу з того ж мiсця. Оскiльки переривання можуть виникати за рiзноманiтними причинами, кожному перериванню присвоюється номер переривання, з яким зв'язується та або iнша подiя. Система в разi надходження тої чи iншої подiї запускає вiдповiдну процедуру реакцiї на подiю. За джерелом i характером виникнення переривання роздiляються на групи (Рис. 1): Переривання       Апаратнi Програмнi       Зовнiшнi Внутрiшнi      Маскованi Немаскованi    Рис. 1. Програмнi переривання викликаються самими програмами, тому вони не є асинхронними. Для цього вони використовують команду INT. Програмнi переривання зручно використовувати для органiзацiї доступу до окремих спiльних для всiх програм модулiв. Наприклад, програмнi модулi операцiйної системи доступнi прикладним програмам саме через переривання, i немає необхiдностi при виклику цих модулiв знати їхню поточну адресу в пам'ятi. Прикладнi програми самi можуть встановлювати свої обробникi переривань для їхнього наступного використання iншими програмами. Для цього обробникi переривань, що вбудовуються, повиннi бути резидентними в пам'ятi. Апаратнi переривання викликаються фiзичними пристроями i надходять асинхронно. Цi переривання iнформують систему про подiї, пов'язанi iз роботою пристроїв, наприклад, про те, що завершено друк символу на принтерi i можна видати наступний символ, або про те, що потрiбний сектор диска вже прочитано i його вмiст доступний програмi. Використання переривань при роботi з повiльними зовнiшнiми пристроями дозволяє сполучити ввiд/вивiд з обробкою даних в центральному процесорi i в результатi пiдвищує загальну продуктивнiсть системи. Зовнiшнi апаратнi переривання викликаються сигналами, зовнiшнiми стосовно цетрального процесора, i подаються на його входи INT i NMI. Переривання по входi INT вiдносяться до апаратних маскованих переривань, оскiльки можуть бути дозволенi або забороненi прапором IF регiстра прапорiв. Номер вектора переривань, що маскуються, передається до процесора по його вiсьми молодших розрядах шини даних. Вхiд немаскованого переривання NMI звичайно використовується для повiдомлень про "катастрофiчнi" подiї (вiдключення живлення, виявлення помилок пам'ятi i т.д.). Номер цього переривання дорiвнює 2. Внутрiшнi (логiчнi) переривання формуються безпосередньо процесором, коли виникає така особлива ситуацiя, як, наприклад, дiлення на 0. Цi переривання мають номери 0, 1, 3, 4 (див. табл.1). Завдання на лабораторну роботу 1. Створити програму, що виконує функцiї транзитного обробника одного iз зарезервованих для користувача переривань i реалiзує вказаний викладачем варiант завдання. 2. Запустити створену програму та задокументувати результати її виконання. Варіант 9. Визначити тип мікропроцесора і тип ПЕОМ; перевірити, чи акумулятор функціонує нормально  Вміст .asm-файлу DOSSEG .MODEL SMALL .STACK 100h .DATA ProcMsg db 10,13,'Type of microprocessor: $' P1Msg db '8086.$' P2Msg db '80286.$' P3Msg db '80386 or later.$' PCMsg db 10,13,'Type of computer: $' ATMsg db 'AT.',10,13, '$' nonATMsg db 'non - AT.',10,13, '$' AcumOKMsg db 'Acumulator is charged and working properly.',10,13,10,13,'$' AcumBadMsg db 'Acumulator is not working properly!',10,13,10,13,'$' HndlrMsg db 'New handler for CTRL+C is set.',10,13 db 'Press CTRL+C to see computer info.$' .CODE start: push ds sub ax,ax push ax ;initialize stack segment mov ax,@data mov ds,ax ;initialize data segment mov ah,9h mov dx,offset HndlrMsg int 21h ;-----Setting new handler address push ds ;save ds mov ax,seg NewHandler ;set new handler address mov ds,ax mov ah,25h ;"set vector" function mov al,23h ;handler ID mov dx,offset NewHandler ;ds:dx now points to new handler int 21h pop ds ;restore ds ;-----EXIT mov ah,01h int 21h mov ah,4Ch ;DOS terminate program function int 21h ;terminate the program NewHandler: push ax push bx push cx push dx ;-----Detection of microprocessor type mov dx,OFFSET ProcMsg ;DS:DX points to the ProcMsg mov ah,09 ;DOS string print function int 21h ;print the ProcMsg mov ax,0000 push ax popf pushf mov ax,0000 pop ax CMP ax,0F000h JZ i8086 JMP else1 i8086: mov dx,OFFSET P1Msg else1: mov ax,0F000h push ax popf pushf mov ax,0000 pop ax CMP ax,0000 JZ i80286 mov dx,OFFSET P3Msg JMP print1 i80286: mov dx,OFFSET P2Msg print1: mov ah,09 int 21h ;-----Detection of PC type mov dx,OFFSET PCMsg mov ah,09 int 21h ;print the PCMsg MOV ax,0F000h MOV ds,ax ;set DS to point to F000h MOV bx,0FFFEh MOV dl,[bx] mov ax,@data mov ds,ax CMP dl,0FCh ;Checking if PC is AT ( [F000:FFFE]=FCh ? ) JZ isAT mov dx,OFFSET nonATMsg JMP print2 isAT: mov dx,OFFSET ATMsg print2: mov ah,09 int 21h ;-----Acumulator check mov al,0Eh OUT 70h,al nop IN al,71h nop AND al,80h CMP al,80h JZ Bad mov dx,OFFSET AcumOKMsg JMP print3 Bad: mov dx,OFFSET AcumBadMsg print3: mov ah,09 int 21h pop dx pop cx pop bx pop ax iret END start Результат виконання програми New handler for CTRL+C is set. Press CTRL+C to see computer info.^C ( Натиснуто CTRL+C Type of microprocessor: 80386 or later. ( Викликано обробник переривання <CTRL+C> Type of computer: AT. Acumulator is charged and working properly. x ( Натиснуто символьну клавішу (будь-яку) для виходу з програми CTRL+C Висновок: Виконуючи дану лабораторну роботу, я ознайомився з механізмом переривань, оволодів навичками їх обробки на прикладі створення програми, що замінює стандартний обробник переривання новим.
Антиботан аватар за замовчуванням

01.01.1970 03:01-

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

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

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

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

Admin

26.02.2023 12:38

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