Студопедия  
Главная страница | Контакты | Случайная страница

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Команды прерываний и возврата из них.

Читайте также:
  1. Арифметические команды
  2. Внешние команды MS DOS
  3. ВНЕШНИЕ КОМАНДЫ MS DOS. (УТИЛИТЫ MS DOS).
  4. ВНИМАНИЕ!При выполнении действий, связанных с настройкой ленты в окне Параметры Word можно также использовать команды контекстного меню в области списка вкладок и групп на ленте.
  5. ВНУТРЕННИЕ КОМАНДЫ MS DOS.
  6. Глава 3 ПОРЯДОК ВОЗВРАТА (ПОГАШЕНИЯ) КРЕДИТА И УПЛАТЫ ПРОЦЕНТОВ
  7. Для возврата денежных средств по неиспользованным абонементам необходимо иметь при себе удостоверение личности и оригинал неиспользованного абонемента.
  8. Дополнительные команды-утилиты
  9. Изученные команды отладчика.
  10. Использование символов возврата каретки, конца строки и табуляции для вывода на экран

Таблица 4- Команды прерываний и возврат из них

Мнемоника Формат Комментарий
INT INT номер_прер Выполнить прерывание
INTO INTO Выполнить прерывание по переполнению
IRET IRET Вернуться из прерывания

 

INT При исполнении в стек загружается содержимое регистра флагов F, затем CS, затем IP. По коду прерываний (байт) из таблицы прерываний, хранимой в ОЗУ читается полный указатель прерывающей программы, (адрес загружается в СS и IP). После этого процессор начинает исполнять вызванную программу. Обработчик прерываний всегда в качестве последней содержит команду IRET.

INTO – условное прерывание и выполняется

IRET- команда возврата из прерывающей программы в основную. После исполнения из стека возвращаются СS, IP, F; т.к. для компьютера это немного, подпрограммы каждой

из этих программ указываются программистом через регистр АН. С помощью команды INT программист обращается к любым аппаратным средствам компьютера,

вместо того, чтобы писать программы обращения в ПУ.

Схема работы команды INT изображена на рисунке 7

 
 

Рисунок 7- схема работы команды INT

 

Функции ввода/вывода DOS.

Все функции DOS вызываются прерыванием 21h, при этом в AH содержится номер функции. Ниже везде, где есть слова "стандартный ввод", под ними подразумевается клавиатура, однако ввод может быть переопределен (например, из файла). Аналогично, "стандартный вывод" – экран, но вывод также может быть переопределен (например, в файл). ASCIIZ-строка (нуль-терминированная строка) – это строка символов, заканчивающаяся нулевым символом (код 00h).

 

1. Ввод символа с отображением. Прерывание 21h функция 01h. Вызов: AH=01h. Возвращает: AL=введенный символ. Действие: читает символ (возвращаемый в AL) со стандартного ввода (клавиатуры) и выводит его на стандартный вывод (экран). Если ввод был перенаправлен, то невозможно обнаружить EOF.

- если при вводе нажата Ctrl+C и BREAK=ON, то вызывается прерывание 23h;

- чтобы прочитать расширенные коды (например, клавиш F1-F12), надо вызвать функцию дважды. Первый раз возвращается 00h, затем – код клавиши.

2. Вывод символа. Прерывание 21h функция 02h. Вызов: AH=02h; DL=выводимый символ. Возвращает: ничего. Действие: выводит символ на стандартный вывод. Если вывод был перенаправлен, то невозможно обнаружить, что нет места на диске.

- если Ctrl+C после вывода символа, то вызавается прерывание 23h;

- если стандартный вывод не был перенаправлен, то символ Backspace (08h) перемещает курсор влево на одну позицию.

3. Прямой консольный ввод/вывод. Прерывание 21h функция 06h. Вызов: AH=06h; DL=действие: если DL=00h-FEh, то вывод; если DL=FFh, то ввод. Возвращает:

если вызов с DL=00h-FEh, то ничего;

если вызов с DL=FFh, то: если есть символ – ZF=0, AL=введенный символ

если нет символа – ZF=1.

Действие: используется, если нужно прочитать или записать все возможные символы и управляющие коды без действий ОС. Читает символ со стандартного ввода или записывает символ на стандартный вывод. Если вывод был перенаправлен, то невозможно обнаружить EOF или что нет места на диске.

- Никакой реакции на Ctrl+C;

- чтобы прочитать расширенные коды (например, клавиш F1-F12), надо вызвать функцию дважды. Первый раз возвращается 00h, затем – код клавиши.

4. Ввод символа без отображения. Прерывание 21h функция 07h. Вызов: AH=07h. Возвращает: AL=введенный символ. Действие: читает символ (возвращаемый в AL) со стандартного ввода (клавиатуры) без отображения на стандартном выводе (экране). Если нет символа, то ждет его появления. Если ввод был перенаправлен, то невозможно обнаружить EOF.

- Никакой реакции на Ctrl+C. Нужно использовать функцию 08h, если реакция требуется;

- чтобы прочитать расширенные коды (например, клавиш F1-F12), надо вызвать функцию дважды. Первый раз возвращается 00h, затем – код клавиши.

5. Ввод символа без отображения. Прерывание 21h функция 08h. Вызов: AH=08h. Возвращает: AL=введенный символ. Действие: читает символ (возвращаемый в AL) со стандартного ввода (клавиатуры) без отображения на стандартном выводе (экране). Если нет символа, то ждет его появления. Если ввод был перенаправлен, то невозможно обнаружить EOF.

- если при вводе нажата Ctrl+C и BREAK=ON, то вызывается прерывание 23h. Нужно использовать функцию 08h, если реакции не требуется;

- чтобы прочитать расширенные коды (например, клавиш F1-F12), надо вызвать функцию дважды. Первый раз возвращается 00h, затем – код клавиши.

6. Вывод строки. Прерывание 21h функция 09h. Вызов: AH=09h, DS:DX=сегмент:смещение строки. Возвращает: ничего. Действие: посылает строку символов на стандартный вывод. Если вывод был перенаправлен, то невозможно обнаружить, что нет места на диске.

- Строка должна заканчиваться на символ $(код 24h), который не выводится. Любые другие символы ASCII, включая управляющие, могут содержаться в строке. Для перевода курсора на начало новой строки нужно вывести строку, содержащую символы "перевод строки"/"возврат каретки":

string DB 10,13,'$'

или использовать прерывание 10h функцию 02h (см. 6.8.2.).

- Если Ctrl+C нажата на клавиатуре, то вызывается прерывание 23h.

7. Буферизованный ввод с клавиатуры. Прерывание 21h функция 0Ah. Вызов: AH=0Ah, DS:DX=сегмент:смещение буфера. Возвращает: ничего. Действие: читает строку символов со стандарного ввода, до появления символа возврата каретки (0Dh) и помещает в буфер (включая завершающий 0Dh). Символы отображаются на стандартном выводе. Если ввод был перенаправлен, то невозможно обнаружить EOF.

 

Таблица 5- формат буфера

Байт Описание
  Максимальное количество символов (устанавливается перед вызовом)
  Количество реально прочитанных символов (устанавливается функцией после ее вызова)
2 и след. Прочитанная строка, заканчивающаяся 0Dh

- Если буфер заполнился (больше символов, чем максимум), последующий ввод игнорируется и подается сигнал до тех пор, пока не нажата клавиша ENTER;

- Если при вводе нажата Ctrl+C и BREAK=ON, то вызывается прерывание 23h.

 

 




Дата добавления: 2014-12-19; просмотров: 32 | Поможем написать вашу работу | Нарушение авторских прав




lektsii.net - Лекции.Нет - 2014-2024 год. (0.008 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав