Мегаобучалка Главная | О нас | Обратная связь


Fn 00H: завершить программу



2015-12-06 541 Обсуждений (0)
Fn 00H: завершить программу 0.00 из 5.00 0 оценок




Вход

  • AH = 00H
  • CS = сегмент PSP завершающегося процесса

Выход

  • нет = (неприменим)

Описание:

передает управление на вектор завершения в PSP (выходит в родительский процесс). Идентична функции INT 20H Terminate. регистр CS должен указывать на PSP. восстанавливает векторы прерываний DOS 22H-24H (завершение, Ctrl-Break и Критическая ошибка), устанавливая значения, сохраненные в родительском PSP. выполняет сброс файловых буферов. файлы должны быть предварительно закрыты, если их длина изменилась.

Замечание:

Проще и более аккуратно - использовать функцию DOS Fn 4cH Exit.

Fn 01H: ввод с клавиатуры

Вход

  • AH = 02H

Выход

  • AL = символ, полученный из стандартного ввода

Описание:

Считывает (ожидает) символ со стандартного входного устройства. Отображает этот символ на стандартное выходное устройство (эхо). при распознавании Ctrl-Break выполняется INT 23H.

Замечание:

ввод расширенных клавиш ASCII (F1-F12, PgUp, курсор и т.п.) требует двух обращений к этой функции. первый вызов возвращает AL=0. Второй вызов возвращает в AL расширенный код ASCII.

Fn 09H: Выдать строку на дисплей

Вход

  • AH = 09H
  • DS:DX = адрес строки, заканчивающейся символом '$' (ASCII 24H)

Выход

  • нет =

Описание:

строка, исключая завершающий ее символ '$', посылается на стандартный вывод. символы Backspace обрабатываются как в функции 02H Display Char. обычно, чтобы перейти на новую строку, включают в текст пару CR/LF (ASCII 13H и ASCII 0aH). строки, содержащие '$', можно выдать через 40H Write Handle (BX=0).

Fn 06H: Консольный ввод-вывод

Вход

  • AH = 06H
  • DL = символ (от 0 до 0feH), посылаемый на стандартный вывод
  • = 0ffH запрос ввода со стандартного ввода

Выход

  • ZF = Сброшен (NZ), если символ готов ҐҐЈҐ при запросе ввода

Описание:

при DL = 0ffH выполняет ввод с консоли "без ожидания", возвращая взведенный флаг нуля (ZF), если на консоли нет готового символа. если символ готов, сбрасывает флаг ZF (NZ) и возвращает считанный символ в AL. если DL не равен 0ffH, то DL направляется на стандартный вывод.

Замечание:

Не проверяет Ctrl-Break. вызывайте дважды для расширенного ASCII.

Fn 0aH: ввод строки в буфер

Вход

  • AH = 0aH
  • DS:DX = адрес входного буфера (смотри ниже)

Выход

  • нет = буфер содержит ввод, заканчивающийся символом CR (ASCII 0dH)

Описание:

при входе буфер по адресу DS:DX должен быть оформлен так:

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

¦max¦ ? ¦ ? ? ? ? ? MAX - максимально допустимая

+---+---+---+---+---+---+ - - длина ввода (от 1 до 254)

при выходе буфер заполнен данными следующим образом:

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

¦max¦len¦ T E X T 0dH LEN - действительная длина данных

+---+---+---+---+---+---+ - - без завершающего CR (здесь - 04H).

символы считываются со стандартного ввода вплоть до CR (ASCII 0dH) или до достижения длины MAX-1. если достигнут MAX-1, включается консольный звонок для каждого очередного символа, пока не будет введен возврат каретки CR (нажатие Enter).

Второй байт буфера заполняется действительной длиной введенной строки, не считая завершающего CR. последний символ в буфере - всегда CR (который не засчитан в байте длины). символы в буфере (включая LEN) в момент вызова используются как "шаблон". В процессе ввода действительны обычные клавиши редакти рования: Esc выдает "\" и начинает с начала, F3 выдает буфер до конца шаблона, F5 выдает "@" и сохраняет текущую строку как шаблон, и т.д. большинство расширенных кодов ASCII игнорируются. при распознавании Ctrl-Break выполняется прерывание INT 23H (буфер остается неизменным).

Fn 25H: установить вектор прерывания

Вход

  • AH = 25H
  • AL = номер прерывания
  • DS:DX = вектор прерывания: адрес программы обработки прерывания

Выход

  • нет =

Описание:

устанавливает значение элемента таблицы векторов прерываний для прерывания с номером AL равным DS:DX. это равносильно записи 4-байтового адреса в 0000:(AL*4), но, в отличие от прямой записи, DOS здесь знает, что вы делаете, и гарантирует, что в момент записи прерывания будут заблокированы.

Предупреждение:

Не забудьте восстановить DS (если необходимо) после этого вызова.

Fn 35H: дать вектор прерывания

Вход

  • AH = 35H
  • AL = номер прерывания (00H до 0ffH)

Выход

  • ES:BX = адрес обработчика прерывания

Описание:

возвращает значение вектора прерывания для INT (AL); то есть, загружает в BX 0000:[AL*4], а в ES - 0000:[(AL*4)+2].

Предупреждение:

Эта функция изменяет сегментный регистр ES.

Fn 27H: читать произвольный блок файла

Вход

  • AH = 27H
  • DS:DX = адрес открытого FCB
  • CX = число считываемых записей

Выход

  • AL = 0 если чтение успешно и DTA заполнена данными
  • AL = 1 если достигнут конец файла (EOF) и данные не считаны
  • AL = 2 если DTA + FCB (RecSize * CX) выходит за границу сегмента
  • AL = 3 если EOF и считана усеченная порция (дополнена нулями)
  • CX = действительное число считанных записей

Описание:

Читает несколько записей из файла, начиная с файлового адреса, специфицированного полем RandomRec в FCB. Помещает данные в память, начиная с адреса DTA. число считанных байт = FCB RecSize*CX. Поля RandomRec, CurBlk и CurRec корректируются, чтобы указывать на следующую запись (первую запись за прочитанными).

Fn 31H: завершиться и остаться резидентным - KEEP

Вход

  • AH = 31H
  • AL = код выхода
  • DX = объем памяти, оставляемой резидентной, в параграфах

Выход

  • нет = (неприменим)

Описание:

выходит в родительский процесс, сохраняя код выхода в AL. код выхода можно получить через функцию 4dH Wait. DOS устанавливает начальное распределение памяти, как специфицировано в DX, и возвращает управление родительскому процессу, оставляя указанную память резидентной (число байт = DX * 16). Эта функция перекрывает функцию INT 27H, которая не возвращает код выхода и неспособна установить резидентную программу, большую 64K.



2015-12-06 541 Обсуждений (0)
Fn 00H: завершить программу 0.00 из 5.00 0 оценок









Обсуждение в статье: Fn 00H: завершить программу

Обсуждений еще не было, будьте первым... ↓↓↓

Отправить сообщение

Популярное:



©2015-2020 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (541)

Почему 1285321 студент выбрали МегаОбучалку...

Система поиска информации

Мобильная версия сайта

Удобная навигация

Нет шокирующей рекламы



(0.008 сек.)