Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
my 4.docx
Скачиваний:
1
Добавлен:
16.12.2018
Размер:
283.89 Кб
Скачать

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)

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]