Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

11.7  Функции MS-DOS. Функция 01H. 3. Функции управления памятью;. 4. Функции управления процессами;. 3. Функции управления памятью;




11. 7  Функции MS-DOS

Функции MS-DOS – это различные сервисные возможности, которые операционная система MS-DOS предоставляет пользовательским программам через прерывание DOS 21H и некоторые другие прерывания. Функции MS-DOS облегчают выполнение таких стандартных операций, как ввод с клавиатуры, вывод на экран, работа с файлами, операции с памятью и т. д. Каждая функция MS-DOS имеет свой номер и набор параметров. Для выполнения функции необходимо ее номер занести в регистр AH, в другие регистры занести необходимые параметры и вызвать прерывание DOS командой INT 21H. Некоторые функции возвращают результаты своего выполнения в различных регистрах или ячейках памяти. Некоторые функции имеют возможность возвращать состояние своего выполнения, т. е. выполнилась ли функция успешно или в процессе ее выполнения возникла какая-то ошибка. По функциональному назначению функции MS-DOS можно разделить на следующие категории:

1. Функции ввода-вывода;

2. Функции для работы с файлами;

3. Функции управления памятью;

4. Функции управления процессами;

5. Функции настройки даты/времени;

6. Другие функции.

Функции ввода-вывода позволяют выполнять операции по вводу с клавиатуры и выводу на экран или другие устройства (принтер, коммуникационный порт).

Функции управления памятью предназначены для получения и изменения информации о выделенных блоках памяти, выделения и освобождения блоков памяти.

Функции управления процессами включают такие функции, как завершение программы, завершение резидентной программы, запуск программы, получение сегмента префикса программного сегмента и т. п.

Функции настройки даты/времени позволяют получить или установить дату и время DOS, а начиная с DOS 3. 3, эти функции можно использовать и для установки даты/времени BIOS.

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

 

Функция 01H

Назначение: чтение символа с клавиатуры с отображением на экране. Функция 01H ожидает ввода с клавиатуры очередного символа и помещает его в регистр AL, при этом символ отображается на экране. Если после вызова функции в регистре AL содержится значение 0, то была нажата клавиша с расширенным ASCII кодом (например, F1, Home, стрелка вниз и т. д. ). В этом случае для получения расширенного ASCII кода необходимо вызвать функцию 01H еще раз.

Пример использования функции 01H:

MOV AH, 01H

INT 21H

 

Функция 02H

Назначение: выводит символ на экран и передвигает курсор. ASCII код символа заносится в регистр DL. Если задан ASCII код клавиши Backspace (08H), функция 02H передвигает курсор назад (влево).

Пример использования функции 02H:

MOV AH, 02H

MOV DL, ‘A’

INT 21H

Функция 05H

Назначение: выводит символ на стандартный принтер (LPT1). ASCII код символа заносится в регистр DL. Чтобы переназначить вывод на другой порт (например, COM1), следует воспользоваться командой DOS MODE.

Пример использования функции 05H:

MOV AH, 05H

MOV DL, ‘*’

INT 21H

 

Функция 06H

Назначение: ввод-вывод символа. Если регистр DL содержит значение 0FFH, то функция читает символ с клавиатуры в регистр AL, не ожидая ввода. Если очередного символа для чтения с клавиатуры нет, то функция 06H устанавливает флаг нуля ZF. Если после вызова функции в регистре AL содержится значение 0, то была нажата клавиша с расширенным ASCII кодом. Если регистр DL содержит любое значение, кроме 0FFH, действие функции 06H аналогично функции 02H.

Примеры использования функции 06H:

MOV AH, 01H

MOV DL, 0FFH

INT 21H

 

MOV AH, 01H

MOV DL, ‘w’

INT 21H

 

Функция 07H

Эта функция аналогична функции 01H, но не выводит символ на экран.

Пример использования функции 07H:

MOV AH, 07H

INT 21H

 

Функция 09H

Назначение: вывод на экран строки символов. В регистровую пару DS: DX заносится адрес (сегмент: смещение) строки символов, выводимой на экран. Строка должна заканчиваться символом ‘$’, который не отображается на экране, а служит признаком конца строки для DOS. Функция 09H обрабатывает ASCII код клавиши Backspace, так же, как и функция 02H. Для перевода на новую строку необходимо последовательно вывести символы с кодами 0DH, 0AH (переход на новую строку, курсор в начало строки).

Пример использования функции 09H:

STR DB ‘Hello! ’      ; выводимая строка

. . .

MOV AH, 09H

MOV AX, SEG BUF

MOV DS, AX                     ; настройка DS: DX

MOV DX, OFFSET BUF ; на строку STR

INT 21H

 

Функция 0AH

Назначение: буферизованный ввод строки символов с клавиатуры. В регистровую пару DS: DX заносится адрес (сегмент: смещение) буфера, куда будет помещена введенная с клавиатуры строка символов. Первый байт буфера должен содержать максимальную длину строки (от 1 до 254). По окончании ввода строки буфер выглядит так, как показано на рис. 10.

 

Максимальная длина строки Реальная длина строки символ 1 символ 2 . . . символ N ASCII код 0DH

 

Рис. 10. Вид буфера после ввода строки

 

Реальная длина строки показывает, сколько символов содержит введенная строка, не считая символа перевода строки (0DH). В конце введенной строки в буфере всегда будет помещаться ASCII код символа перевода строки (0DH). Если при вводе строки достигнута ее максимальная длина, то при попытке ввести следующий символ прозвучит звуковой сигнал. Если реальная длина строки равна 0, то буфер содержит только символ перевода строки. При вводе строки специальные клавиши (Esc, F3, F5, Ins, Backspace и т. д. ) обрабатываются так же, как и в командной строке DOS.

Пример использования функции 0AH:

BUF DB 10                    ; максимальная длина строки

DB 10 DUP (? ); сам буфер ввода

. . .

MOV AH, 0AH

MOV AX, SEG BUF

MOV DS, AX                     ; настройка DS: DX

MOV DX, OFFSET BUF ; на буфер ввода

INT 21H

 

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...