Функции ОС для работы с векторами прерываний
Функции работы с системными временем и датой
Пример. Управление звуком от таймера. Генерация тона ( высоты звучания )
Обобщенная структура com. файла
108.00K
Category: programmingprogramming

Функции ОС для работы с векторами прерываний

1. Функции ОС для работы с векторами прерываний

35h AH
; Получить вектор прерывания
AL номер вектора прерывания
Возвращает: в ES:BX текущее значение вектора прерывания.
25h AH
; Изменить вектор прерывания
DS:DX новое значение вектора прерывания
AL номер прерывания
Пример:
mov ax, 25NNh ; NN – номер прерывания
lea dx, new_NN ; эффективный адрес нового обработчика прерывания NN
push ds
push cs
pop ds
int 21h
pop ds

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

2Ah AH
; Получение системной даты
Функция возвращает в регистрах:
AL – день недели ( 0 – воскресенье, …, 6 – суббота );
DH - месяц ( 1 – 12 );
DL - число (1 – 31 ).
CX - год ( 1980 – 2099 );
2Bh AH
; Изменение даты
Входные данные:
CX год ( до 2099 ); DH месяц ( 1 – 12 ):
DL число ( 1 – 31 ). Функция возвращает в AL – 00h, если дата действительная,
FFh, если дата недействительная.
2Ch AH
; Получение системного времени
Функция возвращает в регистрах:
CH - час ( 0 – 23 );
CL - минуты ( 0 – 59 ); DH - секунды ( 0 – 59 ); DL – сотые доли сек.
2Dh AH
; Изменение системного времени
Входные данные:
CH - час ( 0 – 23 );
CL - минуты ( 0 – 59 ); DH - секунды ( 0 – 59 ); DL – сотые доли сек.

3. Пример. Управление звуком от таймера. Генерация тона ( высоты звучания )


mov al, 0B6h ; Управляющее слово таймера
out 43h, al
; в порт 43h (регистр команд
таймера )
mov ax, 11930 ; в фиксатор константа пересчета
; ~100 гц
out 42h, al
; установка частоты канала 2
mov al, ah
; по байту в соответствии с управout 42h, al
; ляющим словом таймера
in al, 61h ; включение динамика и разрешеor al, 11b
; ние таймера ( канал 2 )
out 61h, al
;
Delay 100
; задержка
and al, 11111100b ; выключение динамика и
out 61h, al
; запрет таймера
……
Макрос задержки
Delay macro t
local M1, M2
push cx
mov cx, t
M1: push cx
mov cx, 65535 ; FFFFh
M2: loop M2
pop cx
loop M1
pop cx
endm

4. Обобщенная структура com. файла

prog1
segment para ‘code’
assume cs: prog1, ds: prog1, ss: prog1, es: prog1
org 100h
start:
jmp M1
A
dw ?
B db ‘Пример com.’
old_N dd ?

M1: mov al, ES: [80h]


int 20h
; mov ax, 4c00h
int 21h
Stec
dw 200 dup(?)
prog1 ends
end start
English     Русский Rules