Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Информатика. Ассемблер для процессора i8086

.pdf
Скачиваний:
47
Добавлен:
05.02.2023
Размер:
1.18 Mб
Скачать

91

Примером интерпретатора является интерпретатор команд ОС. Входные операторы (команды) этого лингвистического процессора представляют собой имена загрузочных модулей, подлежащих выполнению. Эти команды поступают на вход интерпретатора или с клавиатуры терминала, или от утилиты типа Norton commander, или из командного файла. Командный файл имеет расширение .bat и содержит программу, операторами которой являются команды ОС (основные операторы), а также вспомогательные операторы, позволяющие задавать порядок выполнения основных операторов, отличный от последовательного.

Выполнение (интерпретация) очередной команды ОС сводится к загрузке и инициированию требуемой утилиты, лингвистического процессора или прикладной программы. Интересно, что с точки зрения самой ОС интерпретатор ее команд (как и любой другой лингвистический процессор или утилита) представляет собой обычную прикладную программу. Так как интерпретатор команд ОС может обращаться к ней, как и прикладная программа, только с помощью инструкций INT.

Например, загрузочный модуль интерпретатора команд MS-DOS хранится на диске в виде файла Command.com. Если мы заменим содержимое этого файла, сохранив его имя, то MS-DOS будет работать с другим интерпретатором команд, “не заметив” этого.

10.4. Подпрограммы управления аппаратурой

Среди управляющих программ, оказывающих помощь прикладным программам в использовании ресурсов ВС, особо важное значение имеют программы управления аппаратурой, называемые драйверами. Каждый драйвер обслуживает однотипные периферийные или другие устройства. В ВС обязательно имеются драйвер экрана, драйвер клавиатуры, драйвер дисковода (для каждого типа дисководов свой драйвер) и некоторые другие драйверы.

Кроме драйверов реальных устройств многие ОС имеют драйверы виртуальных устройств. Например, в состав таких “устройств” могут входить некоторые области ОП и ВП. Поэтому встречаются: драйвер таблицы FAT, драйвер файловой структуры логического диска и т.п. При наличии обширной системы виртуальных устройств практически любая помощь прикладным программам в использовании ресурсов ВС оказывается драйверами. При этом драйверы виртуальных устройств обычно пользуются услугами других драйверов, управляющих виртуальными или реальными устройствами.

Драйверы некоторых реальных устройств входят в состав как ОС так и BIOS. Причем ОС может иметь несколько драйверов для устройств данного типа. Например в п. 8.4 были рассмотрены два примера программ (.com и

.exe), выполняющие вывод строки символов на экран путем обращения (INT

92

21h, функция 09h) к драйверу экрана, входящему в состав ОС. В следующем фрагменте программы вывод на экран этой же строки выполняется путем обращения (INT 21h, функция 40h) к другому драйверу MS-DOS, выполняющему работу с файлами. При этом экран считается стандартным файлом, имеющим дескриптор файла, равный 1. (Дескриптор файла – число, заменяющее имя файла в некоторых операциях над ним.)

 

. . . . . . . . . . . . . . . . .

 

 

 

MOV

CX, Msgl

; CX Длина сообщения

 

MOV

DX, SEG Msg

; DS:DX Адрес сообщения

 

MOV

DS, DX

;

--//--

 

MOV

DX, OFFSET Msg ;

 

--//--

 

MOV

AH, 40h

; 40h – функция записи в файл

 

MOV

BX, 1

; 1 – дескриптор файла (экрана)

 

INT

21h

; Вывод строки на экран

. . . . . . . . . . . . . . . . . . .

 

 

Msg

DB ‘Hello’, cr, lf

; Сообщение

 

Msgl

EQU

$-Msg

; Длина сообщения

. . . . . . . . . . . . . . . . . . . .

В следующем фрагменте программы вывод этой же строки символов на экран производится путем обращения (INT 10h, функция 0Eh) к драйверу BIOS, выполняющему работу с экраном. Так как данный драйвер выводит строку не целиком, а посимвольно, то в программе предусмотрен индексный

цикл.

 

 

 

 

 

. . . . . . . . . . . . . . . . .

 

 

 

MOV

CX, Msgl

; CX Длина сообщения

 

MOV

AH, 0Eh

; 0Eh – функция вывода символа

 

MOV

BH, 0

;

 

 

XOR

SI, SI

; SI 0

Next:

MOV

AL, Msg[SI]

; Вывод следующего

 

INT

10h

;

символа

 

INC

SI

 

 

 

LOOP

Next

; Повторить для след. символа

. . . . . . . . . . . . . . . . . . .

 

 

Msg

DB ‘Hello’, cr, lf

;

Сообщение

Msgl

EQU

$-Msg

; Длина сообщения

. . . . . . . . . . . . . . . . . . . .

Что касается внутренней структуры драйвера, то она представляет собой совокупность подпрограмм, связанных между собой не по управлению (подпрограммы драйвера не вызывают друг друга), а через общие структуры данных. Обычно одной из подпрограмм драйвера реального устройства является обработчик прерываний данного устройства. Другая подпрограмма (процедура) выполняет инициализацию (подготовку к работе) самого драйвера и устройства, выполняясь в начале работы системы. Остальные

93

процедуры обслуживают запросы прикладных и системных программ по работе с данным устройством.

Многие прикладные программы работают с ПУ, в особенности с экраном и клавиатурой, не с помощью системных драйверов, а напрямую, то есть, фактически, имеют свои собственные драйверы. Причиной этого, во-первых, является неэффективность системных драйверов (большое время выполнения), а во-вторых, желание учесть индивидуальные потребности прикладной программы по работе с конкретным устройством. К сожалению, программирование драйверов выходит за рамки данного вводного курса.