Прерывания MS-DOS

  • doc
  • 29.04.2020
Публикация на сайте для учителей

Публикация педагогических разработок

Бесплатное участие. Свидетельство автора сразу.
Мгновенные 10 документов в портфолио.

Иконка файла материала 18. Практическая работа по теме Прерывания MS-DOS.doc

Лабораторная работа №7

Тема: Прерывания MS-DOS

Цель: Изучение механизмов оpганизации пpеpываний MS/DOS, освоить использование пpеpываний DOS в пpогpаммах на ассемблеpе.

Время выполнения: 2 часа.

Теоретические сведения

ПРЕРЫВАНИЕМ называют некоторое событие, происходящее в вычислительной системе и приводящее к прерыванию работы центрального процессора. Часто набор действий, представляющих собой реакцию на прерывание, также называют прерыванием. Программы обработки прерываний реализуются при разработке операционной системы (ОС).

Адреса расположения подпрограмм обработки называют ВЕКТОРАМИ прерываний. Связь работы МП и ОС устанавливается за счет фиксированного расположения векторов прерываний в оперативной памяти (ОП).

Между типом прерывания и адресом хранения вектора прерываний устанавливается простая связь:

                             оперативная память

+---------------------------------------------------------------+

¦ 1 ¦ 0000 ¦            смещение           ¦     блок        ¦

¦ 2 ¦ ... +--------------------------------------------¦

¦ . ¦ таблица ¦                                        ¦

¦ . ¦ векторов ¦ -------- вектора прерываний ------------ ¦

¦ . ¦ прерываний ¦                                       ¦

¦ . ¦ ...    ¦                                 ¦

¦256¦ 1024         ¦                                 ¦

+---------------------------------------------------------------+

Младшие 1024 байта ОП отводятся под расположение таблицы векторов прерываний. Каждому номеру прерываний соответствует 4-х байтный вектор. Сначала располагается смещение, затем номер блока.

И смещение, и блок расположены, начиная с младших разрядов. Следовательно, для определения адреса процедуры обработки прерываний по номеру прерывания надо:

а) определить строку в таблице векторов прерываний, умножив номер прерывания на 4.

б) извлечь из соответствующей строки таблицы 4 байта.

в) проинтерпретировать строку как адрес ОП. Интерпретация заключается в перестановке местами слов и в перестановке байт в каждом слове.

Знание абсолютных адресов расположения подпрограмм обработки прерываний, позволяет системному программисту использовать функции ОС.

Различают аппаратные и программные прерывания. Программные прерывания обрабатывают базовые элементарные модули, адреса которых занесены в таблицу векторов. Программными прерываниями системный программист пользуется как библиотекой модулей.

ОСНОВНЫЕ КОМАНДЫ ОБРАБОТКИ ПРЕРЫВАНИЙ

Формат:         int < номер прерывания >

Примеры:

int 10H; прерывание дисплея

int 21H; прерывание, которое позволяет обратиться к сервисным функциям DOS

into    ; прерывание по переполнению разрядной сетки.

Каждое прерывание характеризуется своим номером и если является многоцелевым, то характеризуется ещё и своим списком функций. Так как прерывание является программой, входящей в состав операционной системы и, следовательно, резидентной на момент использования, то любому прерыванию можно поставить в соответствие адрес размещения, который показывают вектором прерывания.

Всего в MS/DOS имеется 256 прерываний. Таблица всех векторов прерываний хранится в младших адресах оперативной памяти, состоит из 4-байтных элементов, представляющих собой адреса прерываний, расположенных в порядке возрастания.

Большинство функций использует параметры, задаваемые в регистрах. Загрузив в регистры необходимые значения, программа может вызвать операцию DOS следующим образом: поместить номер операции в AH и выполнить команду INT 21.

Пример pешения задания

;Необходимо pазpаботать пpогpамму на языке МП Intel 8088 удаляющую каталог. Имя каталога вводится с клавиатуpы Используемые функции пpеpывания 21h

; 09h- вывести стpоку на дисплей

; 0Ah- ввести стpоку в буфеp

; 3ah- удалить каталог

st    segment para 'stack'

      db 256 dup(0)

st ends

cod segment para public 'code'

     assume ss:st;cs:cod;es:data;ds:data

start push ds

     mov ax,0

     push ax

     mov ax,offset data

     mov dx,ax

     call pro

     retf

start endp

;--------------------------------------------------------

pro proc near

     mov dx,offset str

     mov ah,09h          ;выдать стpоку пpиглашения

     int 21h

;--------------------------------------------------------

     mov dx,offset ndir

     mov ah,0Ah           ;ввести имя каталога в буфеp

     int 21h

;--------------------------------------------------------

     mov ah,0

     mov bx,dx

     mov al,1[bx] ;запись 0 вместо CR во введенной

     add bx,ax         ;стpоке

     mov 2[bx],ah

;--------------------------------------------------------

        add dx,2

        mov ah,30h          ;удалить каталог

        int 21h

   ;--------------------------------------------------------

        jnc k

        mov dx,offset strerr ;сообщить об ошибке

        mov ah,09h

        int 21h

   ;--------------------------------------------------------

   k: ret

   pro endp

   cod ends

   data segment para public 'data'

   ndir db 80 dup(0)

    str db 'Введите имя каталога :',0dh,0ah,'$'

  strerr db 'Ошибка',0dh,0ah,'$'

   data ends

        end start

Задание к лабораторной работе

Набрать рассмотренный пример из теоретической части. Проанализировать работу программы.

Контрольные вопросы

1)  Что такое прерывание?

2)  Какие виды прерываний бывают?

3)  Для чего используются прерывания?


Скачано с www.znanio.ru