Ввод-вывод с устройствами организован системно, устройство сопоставляется файлу. Используются унифицированные функции, которые одинаково работают с экраном, принтером, клавиатурой и дисковым файлом.
В любой программе существует 5 стандартных файлов-устройств, ко-
торые задаются описателями:
0 - ввод с клавиатуры;
1 - вывод на экран;
2 - вывод ошибок на экран;
3 - ввод-вывод в последовательный порт;
4 - вывод на принтер.
На диске много файлов, если в программе открыт 1-й файл, то ему при-
сваивается N5, второму файлу - N6, если закрыть второй файл, то описа-
тель 6 освобождается, и тогда при открытии 3-го файла ему ставится в
соответствие описатель N6. Допустимое количество одновременно открытых
файлов в MS DOS задается в файле config.sys следующей командой
files= <количество файлов>.
В функциях расширенной версии используются регистры AX,CX,BX,DX.
В большинстве случаев эти регистры используются для следующих целей:
AX: на входе AH - код функции
на выходе AX - число : при открытии файла - номер файла, в опе-
рациях чтения/записи - число реально
перданных байт. При возникновении ошибки
AX - номер ошибки.
BX: описатель файла.
CX: число затребованных байт при вводе и выводе.
DX: адрес строки, при открытии файла или адрес поля ввода-вывода в операциях чтения и записи.
Флаг CF (перенос) на выходе сигнализирует об ошибке при выполнении любых операций.
Вывод на экран
IOA db 10 dup(?)
-------------------------
mov ah,40h
mov BX,1 ; описатель экрана
mov CX,5 ; количество реально выводимых байт из IOA
lea DX,IOA
int 21h
jc err ; в AX - код системной ошибки
Если ошибки нет(CF=0), то в AX - число реально выведенных байт.
Функция выводит заданное количество байт, она не следит за правой
границей IOA. Управляющие символы обрабатываются также, как и в режиме
телетайпа . Количество выводимых символов не ограничено, при заполнении
экрана осуществляется скролинг.