Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка1.doc
Скачиваний:
6
Добавлен:
01.04.2025
Размер:
2 Мб
Скачать
☆

Функция 50h

Назначение: установка текущего префикса программного сегмента. Функция 50H используется обычно в резидентных программах для того, чтобы сообщить DOS сегмент своего префикса программного сегмента. Если этого не сделать, DOS будет считать, что текущей программой является та программа, которая была прервана при переключении на обработчик прерывания резидентной программы. Сегмент префикса программного сегмента заносится в регистр BX.

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

CODE SEGMENT

ORG 100H

. . .

New2FH PROC ; обработчик программного прерывания

. . .

MOV BX, CS

MOV AH, 50H

INT 21H

. . .

IRET

New2FH ENDP

. . .

CODE ENDS

Для этого примера следует отметить, что прерывание DOS 21H вызывается в обработчике программного, а не аппаратного прерывания.

Функция 51h

Назначение: получение сегмента префикса программного сегмента текущей программы. Функция 51H возвращает в регистре BX значение префикса программного сегмента. Если функция вызвана в обработчике программного прерывания, то возвращаемое в регистре BX значение является сегментом префикса программного сегмента прерванной программы, а не резидентной. Для того чтобы в резидентной программе можно было использовать префикс программного сегмента, нужно его значение во время инициализации резидентной программы записать в переменные резидентной части. Это справедливо для программ типа EXE. Для COM программ регистр CS всегда указывает на префикс программного сегмента и использование функции 51H не имеет смысла.

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

MOV AH, 51H

INT 21H

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

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

Функция 2ah

Назначение: получение текущей даты DOS. Функция возвращает следующие значения:

  • в регистре CX – текущий год (от 1980 до 2099);

  • в регистре DH – месяц (от 1 до 12);

  • в регистре DL – день месяца (от 1 до 31)

  • в регистре AL – день недели (0 – воскресенье, 1 – понедельник, 2 – вторник и т. д.)

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

MOV AH, 2AH

INT 21H

DOS версии 2.X не гарантирует возвращение в регистре AL дня недели. Другие версии DOS гарантируют это. В DOS до версии 2.1 есть проблемы с возвращением даты.

Функция 2bh

Назначение: установка текущей даты DOS. Значение даты заносится в регистры CX, DX и AL в соответствии с тем, как эти значения возвращает функция 2AH. Функция 2BH возвращает в регистре AL значение 0, если устанавливаемая дата корректна и 0FFH в противном случае.

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

MOV CX, 2001 ; 2001 г.

MOV DH, 8 ; август

Mov dl, 13 ; 13-е число

MOV AL, 1 ; понедельник

MOV AH, 2BH

INT 21H

Функция 2сh

Назначение: получение текущего времени DOS. Функция возвращает следующие значения:

  1. в регистре CH – часы (от 0 до 23);

  2. в регистре CL – минуты (от 0 до 59);

  3. в регистре DH – секунды (от 0 до 59);

  4. в регистре DL – сотые доли секунды (от 0 до 99).

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

MOV AH, 2CH

INT 21H

Значение времени DOS обновляется с приходом каждого прерывания от таймера примерно 18.2 раза в секунду. Поэтому точность значения сотых долей секунд невелика.