рефераты конспекты курсовые дипломные лекции шпоры

Реферат Курсовая Конспект

INT тип_прерывания

INT тип_прерывания - раздел Философия, ОСНОВЫ АЛГОРИТМИЗАЦИИ И ПРОГРАММИРОВАНИЯ Где Тип_Прерывания Представляет Собой Номер Прерывания, Которых В Эвм Ibm Нас...

где тип_прерывания представляет собой номер прерывания, которых в ЭВМ IBM насчитывается 256 (типы прерываний имеют номера 0-255):

- тип 0 – возникает при делении на 0 или если частное от деления превышает разрядную сетку;

- тип 1 – действует в режиме “трассировки” (после выполнения каждой команды программы происходит останов);

- тип 2 – немаскируемые технические прерывания;

- тип 3 – прерывания по команде INT, включенной в программу (вызывает останов и отображение содержимого регистров микропроцессора);

- тип 4 – прерывание по команде INTO, включенной в программу (выполняется при условии, что при выполнении предыдущей команды произошло переполнение разрядной сетки);

- типы 8-15 – аппаратные прерывания, инициируемые внешними устройствами;

- типы 16 - 31 – планируемые программные прерывания BIOS;

- типы 32-255 – программные прерывания DOS.

В некоторых типах прерываний BIOS и DOS имеется много разновидностей, иногда более 10. Так, прерывание 33 (21Н) имеет около 100 разновидностей. В таких случаях вид прерывания (внутри типа) определяется содержимым регистра AH.

Каждому прерыванию в памяти ЭВМ соответствует вектор прерывания (эти вектора размещены в оперативной памяти, начиная с нулевого адреса). Каждый вектор прерывания размещается в 32-битовой ячейке памяти и представляет собой адрес, по которому размещена собственно программа прерывания. По сути, такие программы очень похожи на процедуры, отличие в том, что программа прерывания заканчивается командой возврата IRET.

При выполнении команды INT микропроцессор производит следующие действия:

а) помещает в стек регистр флагов;

б) обнуляет флаг трассировки TF и флаг включения-выключения прерываний IF для блокировки других действий, кроме обработки вызванного прерывания;

в) помещает в стек значение регистра CS;

г) вычисляет адрес вектора прерываний, умножая тип_прерывания на 4 (т.к. вектор прерывания занимает 4 байта или 32 бита);

д) обращается ко второму слову из вычисленного адреса вектора прерываний и помещает его в регистр CS;

е) помещает в стек значение указателя команд IP;

ж) загружает в IP первое слово вектора прерываний.

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

Команда IRET, как было уже сказано, является командой возврата после прерывания. Она извлекает из стека значения регистров CS и IP и регистра флагов (считывает три ячейки стека), а затем микропроцессор по новому содержанию регистров команд продолжит выполнение программы пользователя.

Команда INTО представляет собой команду условного прерывания. Она инициирует прерывание в том случае, когда флаг переполнения OF равен 1. Применять эту команду надо после арифметических операций, которые могут вызвать переполнение. Однако обрабатываться прерывание будет только при наличии переполнения, при отсутствии эта команда будет игнорироваться. Команда INTО вызывает команду обработки по вектору прерывания 4, для определения выполняемых командой действий необходимо обратиться к техническому руководству для конкретной ЭВМ. Выбор действий по обработке ситуаций переполнения возлагается на пользователя.

Наиболее распространенным в программах пользователя является использование прерывания 21H, которое предназначено для вызова функций DOS. В нижеприведенной таблице описываются только некоторые из видов этого прерывания.

 

Таблица 1. – Наиболее часто используемые виды прерывания 21Н (DOS)

 

АН Операция Входные регистры Выходные регистры
Ожидание набора символа на клавиатуре с последующим изображением его на экране (AL) = символ
Вывод символа на экран (DL)=ASCII-код символа
Изображение строки на экране дисплея (DS:DX)= адрес строки, которая должна заканчиваться символом $
A Чтение клавиатурной строки в буфер (DS:DX)= адрес буфера, первый байт = размер буфера Второй байт буфера = число прочитанных символов

 

Пример 1. В программе требуется дать ответ Д или Н на вопрос о продолжении или прекращении программы. Ввод Д заставляет программу перейти к группе команд, помеченных как YES, а Н – к командам с меткой NO. При ошибочном нажатии какай либо другой клавиши программа возвращается на ввод символа до тех пор, пока не будет нажата либо Д, либо Н.

get_key:

mov ah,01h ;в ah функция чтения символа

int 21h ;прерывание DOS, чтение символа в al

cmp al,’Д’ ;считан Д?

je yes ;если да, то перейти к yes

cmp al,’Н’ ;считан Н?

je no ;если да, то перейти к no

jne get_key ; иначе возврат на чтение символа.

В приведенном фрагменте распознаются только прописные буквы Д и Н.

Пример 2. В программе требуется, чтобы пользователь ввел строку с информацией, например, свое полное имя (ФИО). Для этой цели служит функция А прерывания 21Н. Чтобы воспользоваться этой функцией, в программе пользователя требуется зарезервировать в сегменте данных место для вводимой строки (в таблице это называется буфер строки). Количество выделяемых байтов должно быть на 2 больше максимального размера вводимой строки. Причем первый байт буфера должен задавать эту самую максимальную длину (фактически он будет содержать значение количества выделенных байтов памяти минус 2). Например, чтобы предусмотреть в программе ввод пользовательской строки из 50 символов, в сегменте данных нужно описать область данных, где первый байт – константа 50, за ней следуют незаполненные 51 байт для сообщения:

string db 50, 51 dup (?)

Чтение строки выполняется командами:

lea dx, string ; указатель на буфер поместить в ds:dx

mov ah,0ah ; вызвать функцию с номером 0аh

int 21h ; прочитать строку.

Функция помещает количество фактически введенных символов во второй байт буфера string и не изменяет указатель ds:dx. Т.е. после выполнения команды INT первый информационный символ введенной строки находится по адресу (dx)+2.

Пример 3. Фрагмент программы для выдачи приглашения ‘Введите ФИО’. Для функции 9 необходимо, чтобы текст сообщения заканчивался символом $, поэтому в сегменте данных опишем:

mess1 db ‘Введите ФИО: $’.

В командном сегментном коде предусмотрим команды вызова функции 9:

lea dx, mess1 ;загрузка смещения строки в dx

mov ah,09h ;загрузка номера функции в ah

int 21h.

 

– Конец работы –

Эта тема принадлежит разделу:

ОСНОВЫ АЛГОРИТМИЗАЦИИ И ПРОГРАММИРОВАНИЯ

РЕСПУБЛИКИ БЕЛАРУСЬ... Учреждение образования... ВЫСШИЙ ГОСУДАРСТВЕННЫЙ КОЛЛЕДЖ СВЯЗИ ВИТЕБСКИЙ ФИЛИАЛ Кафедра программного обеспечения сетей телекоммуникаций...

Если Вам нужно дополнительный материал на эту тему, или Вы не нашли то, что искали, рекомендуем воспользоваться поиском по нашей базе работ: INT тип_прерывания

Что будем делать с полученным материалом:

Если этот материал оказался полезным ля Вас, Вы можете сохранить его на свою страничку в социальных сетях:

Все темы данного раздела:

ОСНОВЫ АЛГОРИТМИЗАЦИИ И ПРОГРАММИРОВАНИЯ
  Конспект лекций для учащихся специальности 2–45 01 33 – Сети телекоммуникаций   Минск УО ВГКС УДК 681.3.06(075)

ЭТАПЫ РАЗВИТИЯ ЭВМ
Современному человеку сегодня трудно представить свою жизнь без электронно-вычислительных машин (ЭВМ). Путь к этому достижению был труден и долог. Много веков назад люди хотели иметь приспособления

Поколения ЭВМ
1-е поколение (1945-1954 гг.) - время становления машин с фон-неймановской архитектурой. В этот период формируется типовой набор структурных элементов, входящих и состав ЭВМ. Это - центральн

МАШИННО-ОРИЕНТИРОВАННЫЕ ЯЗЫКИ ПРОГРАММИРОВАНИЯ
Язык программирования — формальная знаковая система, предназначенная для записи компьютерных программ. В настоящее время разработаны сотни языков программирования. Обычно их разделя

АРХИТЕКТУРА ЭВМ
Архитектура ЭВМ – это абстрактное представление ЭВМ, которое отражает ее схемотехническую и логическую организацию. Понятие архитектуры ПЭВМ является комплексным и включает в себя:

МИКРОПРОЦЕССОРЫ INTEL
Микропроцессоры корпорации Intel и персональные компьютеры на их базе прошли не очень длинный во времени, но значительный по существу путь развития, на протяжении которого кардинально изменялись их

Регистры общего назначения
Данная группа регистров являются основными рабочими регистрами ассемблерных программ. Их можно разделить на группы: · регистры данных, их можно использовать для временного хранения

Сегментные регистры
Все сегментные регистры содержат адреса памяти, с которых начинаются соответствующие сегменты.   СS    

Регистры состояния и управления
К даннаму типу регистров относятся: IP – регистр указателя команды (Instruction Pointer). Он содержит смещение команды в сегменте кода, которая должна быть выполнена. Этот

Сегментная организация памяти
В архитектуру процессора i8086/i8088 была заложена идея сегментной организации памяти, которая сохранилась с появлением новых моделей процессоров. Изменялись только адресуемые размеры сегмен

ТИПЫ ДАННЫХ
Программы оперируют с большим количеством самых разнообразных данных, имеющих определённый формат, определяемый размером ячейки (количеством бит), где данное хранится, и способом его представления.

Вещественые числа
Вещественные числа обрабатываются сопроцессором. Данные этого типа описываются тремя форматами: коротким, длинным, расширенным. Все они имеют для хранения ячейки разной длины. Внутреннее п

ФОРМАТ КОМАНД
Машинная команда представляет собой закодированное по определенным правилам указание процессору на выполнение некоторой операции. Правила кодирования команд называются форматом команд. &nb

ОБРАБОТКА ПРЕРЫВАНИЙ
Прерывание– это приостановка выполнения программы с целью выполнения какой-то более важной или нужной в данный момент другой программы или процедуры, после завершения которой продолжается вы

СИНТАКСИС АССЕМБЛЕРА
Программа на ассемблере представляет собой совокупность блоков памяти, называемых сегментами. Программа может состоять из одного или нескольких таких блоков-сегментов. Сегменты программы и

Алфавит ассемблера
Определим алфавит ассемблера, то есть допустимые для написания текста программ символы: 1) все латинские буквы А - Z, а - z, причем прописные и строчные буквы считаются эквивалентны

ДИРЕКТИВЫ СЕГМЕНТАЦИИ
Программа состоит из описаний сегментов. Сегментом называется часть программы, содержащая совокупность логически однородной информации. Типичный набор сегментов программы содержит с

Упрощённые директивы сегментации
Для простых программ, содержащих по одному сегменту для кода, данных и стека описание упрощено. Для этого в трансляторы MASM и TASM введена возможность использования упрощенных директив сегм

ДИРЕКТИВЫ РЕЗЕРВИРОВАНИЯ И ИНИЦИАЛИЗАЦИИ ДАННЫХ
Для описания простых типов данных используются специальные директивы резервирования и инициализации данных, которые являются указаниями транслятору на выделение определенного объема оперативной пам

Операнды
Операнды – это объекты, над которыми или при помощи которых выполняются действия, задаваемые инструкциями или директивами. Машинные команды могут либо совсем не иметь операндов, либ

Прямая адресация
Прямая адресация – это простейший вид адресации операнда в памяти, так как эффективный адрес содержится в самой команде и для его формирования не используется никаких дополнительных источников или

Косвенная базовая адресация со смещением
Косвенная базовая (регистровая) адресация со смещением является дополнением предыдущего вида адресации и предназначена для доступа к данным с известным смещением относительно некоторого базового ад

Косвенная индексная адресация со смещением
Косвенная индексная адресация со смещением очень похожа на косвенную базовую адресацию со смещением. Здесь также для формирования эффективного адреса используется один из регистров общего назначени

Команды общего назначения
К группе команд пересылки данных относятся следующие команды: mov <операнд назначения>,<операнд-источник> MOV – это основная команда

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

Преобразование данных
Команда преобразования данных XLAT имеет следующий формат записи: xlat [адрес_таблицы_перекодировки] Действие этой команды заключается в том, что

Работа со стеком
Стек – это область памяти, специально выделяемая для временного хранения данных программы. Важность стека определяется тем, что для него в структуре программы предусмотрен отдельный сегмент. На тот

Форматы арифметических данных
Целое двоичное число – это число, закодированное в двоичной системе счисления. Размерность – 8,16 или 32 бита. Знак двоичного числа определяется тем, как интерпретируется старший бит. Среди

Сложение двоичных чисел со знаком
Кроме флага переноса cf и команды adc есть и другое средство – регистрация состояния старшего (знакового) разряда операнда, которое осуществляется с помощью флага

Вычитание двоичных чисел без знака
Как и при анализе операции сложения, проанализируем процессы, происходящие при выполнении операции вычитания: · если уменьшаемое больше вычитаемого, то разность положительная, результат ве

Умножение двоичных чисел без знака
Для умножения двоичных чисел без знака предназначена команда MULсомножитель1 Второй операнд – сомножитель2 задан неявно. Его местоположение фиксировано и з

Деление двоичных чисел без знака
Для деления чисел без знака предназначена команда DIV делитель. Делитель может находиться в памяти или в регистре и иметь размер 8,

Логические команды
Эти команды выполняют логические операции над битами операндов. Размерность операндов, естественно, должна быть одинакова. Команда последовательно повторяет действия над всеми битами. Кома

Линейный сдвиг
К командам линейного сдвига относятся команды, осуществляющие сдвиг по следующему алгоритму: 1. Очередной выдвигаемый бит устанавливает флаг CF. 2. Бит, появляющийся с другого кон

Циклический сдвиг
К командам циклического сдвига относятся команды, сохраняющие значения сдвигаемых битов. Команды простого циклического сдвига: • ROL операнд,счетчик_сдв

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

JCC метка_перехода
Вместо символов «сс» указывается конкретное условие, анализируемое командой. Что касается операнда метка_перехода, то он определяет метку перехода, которая может находиться только в пределах текуще

Сmр операнд_1,операнд_2
Флаги, устанавливаемые командой СМР, можно анализировать специальными командами условного перехода.   Таблица 11. – Перечень команд условного перехода для команды CMP

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

ОРГАНИЗАЦИЯ ЦИКЛОВ
Организовать циклическое выполнение некоторого фрагмента программы можно, к примеру, используя команды условной передачи управления или команду безусловного перехода JMP. Например, подсчит

Loopne/loopnz метка_перехода
Команды реализуют описанные далее действия. 1. Декремент регистра СХ. 2. Сравнение регистра СХ с нулем и анализ состояния флага нуля ZF: ü если (СХ) > 0 и ZF = 0,

Принципы организации вложенных циклов.
Основная проблема, которая при этом возникает, – как сохранить значения счетчиков в регистре СХ для каждого из циклов. Для временного сохранения счетчика внешнего цикла на время выполнения внутренн

ОСНОВЫ АЛГОРИТМИЗАЦИИ И ПРОГРАММИРОВАНИЯ
  Конспект лекций для учащихся уровня среднего специального образования специальности 2–45 01 33 – Сети телекоммуникаций     Сос

Хотите получать на электронную почту самые свежие новости?
Education Insider Sample
Подпишитесь на Нашу рассылку
Наша политика приватности обеспечивает 100% безопасность и анонимность Ваших E-Mail
Реклама
Соответствующий теме материал
  • Похожее
  • Популярное
  • Облако тегов
  • Здесь
  • Временно
  • Пусто
Теги