Inc cx ;позиция на экране
Inc di ;позиция в буфере
jmp wwa ;за очередным символом
mm: ret
ENDP
;==================================
Proc _FileRead ;чтение файла с заданным именем
mov ax,4E00h ;проверяем наличие файла на диске
mov cx,00h
mov dx,OFFSET FName ;адрес поля с именем файла
int 21h ;прерывание DOS 21h
jnc @@2 ;если С=0, продолжаем работу
jmp goto_9_1 ;иначе – выход по ошибке 1
@@2:
mov ax,[word ptr ExSg] ; исходное значение регистра ES
mov es,ax ;восстановим его
mov ax,es:9Ah ;длина файла - в регистр ах
mov bx,es:9Ch ;что то в регистр вх
cmp bx,0
jz @@11 ;если ноль дальше, иначе
jmp goto_9_2 ;ошибка 2 – файл больше 16384 байт
@@11:
test ah,11000000b ;проверить крайние разряды
jz @@15 ;если не установлены, дальше, иначе
jmp goto_9_2 ;выход по ошибке 2
@@15:
cmp ax,3800 ;проверить длину ах
jbe @@12 ;если ниже или равно, дальше; иначе
jmp goto_9_3 ;выход по ошибке 3
@@12:
mov [word ptr FileLen], ax ;запомнить длину файла
mov ax,3D00h ;функцию открытия файла
mov dx,OFFSET Fname ;с этим именем файла
int 21h ;выполнение функции открытия
mov [Handle],ax ;номер файла сохранить
jnc @@3 ;анализ ошибки при открытии файла
jmp goto_9_2 ;переход по ошибке 2
@@3: ;читаем файл в буфер
mov ah,3Fh ;функция чтения файла
mov bx, [Handle] ;номер файла
mov cx, [word ptr FileLen] ;его длина
mov dx, OFFSET BuferData ;адрес приемника данных
int 21h ;чтение в буфер
jnc @@4 ;нет ошибок? дальше; иначе
jmp goto_9_2 ;выход по ошибке 2
@@4: ;закроем файл
mov ax,3E00h ;функция закрыть файл
mov bx,[Handle] ;указать номер файла
int 21h ;выполнить закрытие
jnc @@5 ;анализ ошибок
jmp goto_9_3 ;выход по ошибке 3
@@5: ret ;завершить процедуру
goto_9_1: Print Errorf1 ;сообщить об ошибке
inc [Er] ;признак (отметить) ошибку
ret ;выход
goto_9_2: Print Errorf2 ;сообщить об ошибке
ret ;выход
goto_9_3: Print Errorf3 ;сообщить о ошибке
wix: ret ;возврат из процедуры
ENDP
;==================================
Ответы на контрольные вопросы
1.Как организовать область памяти для символьного ввода?
Символьную информацию необходимо вводить в указанную область памяти – буфер данных для размещения последовательности байтов символов.
2.По какому признаку ведется фильтрация функциональных клавишей?
По признаку нуля в регистре al (cmp al,0).
3.Каков алгоритм фильтрации символов при десятичном вводе? Восьмеричном вводе? Десятичном вводе?
Wwod10: возможен ввод символов 0..9
Wwod8: возможен ввод символов 0…7
Wwod16: возможен ввод символов 0...9, A,B.C,D,E,F
4.Какие этапы предусмотрены при вводе управляющей программы из файла на жестком диске?
1.Необходимо с использованием процедур ввода ввести имя (путь) файла с управляющей программой для ее поиска на жестком диске.
2.Убедиться, что файл с заданным именем найден на жестком диске.
3.Произвести чтение данного файла в буфер в сегменте данных нашего программного обеспечения.
5.Как организовать вывод символьной информации на монитор без использования функций DOS?
При вводе символа с эхо. (mov ah,01)
(int 21h)