Автор: Пользователь скрыл имя, 18 Октября 2011 в 19:11, контрольная работа
В данной работе необходимо отобразить на экране все слова пятой строки файла, каждое с новой строки.
Введение…………………………………………………………………………………3
1. Создание файла с усечением существующего до нулевой длины………………..4
2.Открытие существующего файла……………………………………………………5
3. Создание нового файла с сохранением существующего………………………….6
4. Открытие и создание файла с расширенными возможностями…………………..7
5. Закрытие файла………………………………………………………………………8
Вывод……………………………………………………………………………………9
Список использованной литературы…………………………………………………10
Приложение А………………………………………………………………………….11
Приложение В………………………………………………………………………….14
Приложение С………………………………………………………………………….15
ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ
НЕВИННОМЫССКИЙ
«СЕВЕРО-КАВКАЗСКИЙ
ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ»
Содержание
Введение…………………………………………………………
1. Создание файла с усечением существующего до нулевой длины………………..4
2.Открытие существующего файла……………………………………………………5
3. Создание нового файла с сохранением существующего………………………….6
4. Открытие и создание файла с расширенными возможностями…………………..7
5. Закрытие файла…………………………………………
Вывод…………………………………………………………………
Список использованной
литературы…………………………………………………
Приложение А………………………………………………
Приложение В………………………………………………
Приложение С………………………………………………
Введение
Язык ассемблера не содержит средств для работы с файлами. Если такая необходимость возникает, то программа должна включать в себя фрагменты кода, в которых производится обращение к средствам операционной системы, осуществляющим взаимодействие с файловой системой.
В основе файловой системы MS DOS лежит древовидная структура каталогов. Корень этой структуры представляет собой совокупность ограниченного числа дескрипторов, описывающих файлы и каталоги (подкаталоги) следующего уровня. Подкаталог представляет собой структуру особого типа, которая содержит дескрипторы файлов и подкаталогов очередного нижележащего уровня. В отличие от корневого каталога, количество дескрипторов в подкаталоге не ограничено и определяется только размером диска. Дескриптор представляет собой экземпляр структуры размером 32 байта. Поля этой структуры содержат различную информацию о файле: идентификатор файла и его характеристики – дату и время создания (модификация), номер начального кластера, длину файла и его атрибуты.
В данной работе необходимо
отобразить на экране все слова пятой
строки файла, каждое с новой строки.
1. Создание файла с усечением существующего до нулевой длины
Прежде чем использовать файл в программе, его необходимо открыть с помощью функции 3dh прерывания 21h. Если файл не существует, то перед открытием его нужно создать. Оба эти действия выполняются одной из следующих функций: 3ch, 5bh, 5ah, 6ch.
Вход: AH = 3ch; CX = атрибуты файла (значения битов: 0 = 1 – только чтение; 1 = 1 – скрытый файл; 2 = 1 – системный файл; 3 = 0 – игнорируется; 4 = 0 – зарезервирован (каталог), должен быть равен 0; 5 – бит архивации; 6 = 0 – резерв; 7 = 1 – общий файл в системе novell NetWare; 8 – 15 = 0 – резерв); DS:DX – ASCIIZ-имя файла.
Выход: CF = 0 – AX = дескриптор файла; CF = 1 – AX = код ошибки (3 – нет такого пути; 4 – нет свободного дескриптора файла; 5 – отказ в доступе).
Когда файл создан, его можно открыть функцией 3dh. При это необходимо указать режим доступа к файлу.
Вход: AH = 3dh; AL = режим доступа и разделения – определяются состоянием битов: 2 – 0 – режимы доступа (000 – только чтение; 001 – только запись; 010 – чтение/запись); 3 – зарезервирован (0); 4 – 6 – режим совместного использования (000 – режим совместимости; 001 – запрет чтения и записи другими программами; 010 – блокировка записи другими программами; 011 – запрет чтения другими программами; 100 – разрешение полного доступа другими программами; 111 – сетевой FCB (доступен только в течение серверного вызова)); 7 – наследование (если установлен, то файл принадлежит только текущему процессу и не наследуется дочерними процессами); DS:DX – адрес ASCIIZ-цепочки с именем файла.
Выход: CF = 0 – AX = дескриптор файла; CF = 1 – AX = код ошибки: 3 – нет такого пути; 4 – нет свободного дескриптора файла; 5 – доступ отказан; 12h – недействительный код доступа.
Функция 3dh возвращает дескриптор файла, указатель в файле устанавливается на начало файла.
Еще одна функция создания файла 5bh, в отличие от функции 3ch, позволяет провести процесс открытия файла более мягко – без ущерба прежнему содержимому.
Вход: AH = 5bh; CX = атрибуты файла; DS:DX – ASCIIZ-имя файла.
Выход: CF = 0 – AX = дескриптор файла; CF = 1 – AX = код ошибки: 3 – нет такого пути; 4 – нет свободного дескриптора файла; 5 – отказ в доступе; 50h – файл существует.
Если указанный файл существует, то функция 5bh завершается с кодом ошибки 50h (CF = 1). Поэтому после вызова данной функции необходимо анализировать флаг CF (командой JC или JNC), если CF = 1, то для открытия файла необходимо дополнительно вызвать функцию 3dh.
Функция 6ch появилась в последних версиях MS DOS (DOS 4.0+). С ее появлением устраняется необходимость отслеживать существование создаваемого файла. Для корректной работы достаточно задать нужные значения в соответствующих регистрах. Анализ возможных значений показывает, что данная функция фактически заменяет существовавшие до этого функции создания и открытия файлов.
Вход: AX = 6c00h; BL = флаги – режим открытия (значения битов: 7 – наследование; 4 – 6 – режим разделения; 3 – резерв (0); 0 – 2 – режим доступа); BH = флаги (значения битов: 6 = 0 – использовать стандартную для MS DOS буферизацию; 6 = 1 – отменить стандартную для MS DOS буферизацию; 5 = 0 – использовать обычный обработчик ошибок (int 24h), 5 = 1 – не использовать обычный обработчик ошибок (int 24h), для выяснения причины ошибки вызвать функцию 59h int 21h); CX = атрибуты создаваемого (и только) файла; DL = действия, если файл существует или не существует (значения битов: 0 – 3 – действие, если файл существует (0000 – вернуть ошибку; 0001 – открыть файл; 0010 – открыть файл без сохранения существующего); 4 – 7 – действие, если файл не существует (0000 – вернуть ошибку; 0001 – открыть файл; 0010 – создать и открыть файл)); DH = 00h – резерв; DS:SI – адрес строки с ASCIIZ-именем файла.
Выход: CF = 0 – успешное выполнение функции: AX = дескриптор файла, CX = состояние (0 – файл открыт; 1 – файл создан и открыт; 2 – файл открыт без сохранения содержимого существующего файла); CF = 1 – AX = код ошибки.
В конце работы с файлом его нужно закрыть. Но это действие не является обязательным, так как функция 4ch, которая завершает выполнение программы, в числе прочих действий выполняет и закрытие всех файлов.
Вход: AH = 3eh; BX = дескриптор файла, полученный при его открытии.
Выход: CF = 0 – AX = не определен; CF = 1 – AX = код ошибки: 6 – недопустимый дескриптор.
Во время закрытия файла выполняются все незаконченные операции записи на диск в элементе каталога, соответствующего файлу, модифицируются различные поля, в том числе поля времени и даты устанавливаются в текущее время.
Вывод
В ходе выполнения работы были получены навыки работы с файлами в среде Assembler. Так же была разработана программа работы с файлами, в ходе которой было выполнено чтение с файла информации и в дальнейшем обработана. Полученный результат был выведен на экран в виде слов, написанных каждое с новой строки.
Результат работы программы находится в приложении С.
1.
Евдокимов А.А.
2. Абель П. Ассемблер. Язык и программирование для IBM PC [Текст]: пер. с анг. – К.: Век+, М.: ЭНТРОП, 2003. – 736 с. : ил. – ISBN 0-13-030655-х (англ.); ISBN 966-7140-30-х (укр.).
3.
Пильщиков В.Н.
Приложение А
Код программы
.model small
.stack 100h
.data
handle dw 0
filename db 'file.txt',0
point_fname dd filename
sze dw 0
dta db 2048 dup (?)
wrd db 100 dup(0)
.code
start: mov ax,@data
mov ds,ax
mov es,ax
xor ax,ax
mov al, 02h
lds dx, point_fname
mov ah, 3dh
int 21h
mov handle,ax
mov dx,0
mov cx,0
mov al,0
mov ah,42h
mov bx,handle
int
21h
mov ah,3fh
mov bx,handle
mov cx,2048
lea dx,dta
int
21h
mov ah,3eh
mov bx,handle
int
21h
lea
si,dta
mov cx,4
find1: lodsb
cmp al,0ah
jne find1
loop
find1
lea di,wrd
find2: lodsb
cmp al,' '
je f2n
cmp al,13
je view
stosb
jmp find2
f2n: mov al,0dh
stosb
mov al,0ah
stosb
jmp find2
view: mov al,'$'
stosb
lea dx,wrd
mov ah,9
int 21h
mov ah,4ch
int 21h
end start
end
Приложение B
Содержание файла file.txt
asd asd dsa dsa asd
dsa asd qweqd
qwefca asdadqw
qwf asda fqwgw sdg asd
slovo1 slovo2 slovo3 slovo4 slovo5
asd
Приложение C
Результат работы программы
Информация о работе Микропроцессорные устройства систем управления