Сортировка строк в текстовом файле

Проектирование пользовательского интерфейса. Выбор формата представления данных, используемые переменные. Список процедур и макросов, их назначение. Используемые в программе функции. Тестирование и отладка правильной работы программы, схема листинга.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 17.05.2013
Размер файла 28,6 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru

Размещено на http://www.allbest.ru

Московский Энергетический Институт

Институт автоматики и вычислительной техники

Кафедра ВМСС

Курсовая работа

по дисциплине «Системное программное обеспечение»

Сортировка строк в текстовом файле

Студент: Филюк Андрей

Группа: А-8-07

Проверил: Гольцов А.Г.

Москва 2010

Оглавление

сортировка строка файл программа

Введение

1. Анализ задания

2. Проектирование пользовательского интерфейса

3. Выбор формата представления данных

4. Список процедур и их назначение

5. Используемые в программе функции

6. Тестирование и отладка программы

Заключение

Список литературы

Приложение. Листинг программы

Введение

Данная программа служит для сортировки строк в текстовом файле.

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

Иногда конец текстового файла, особенно если в файловой системе не хранится информация о размере файла, также отмечается одним или более специальными знаками, известными как маркеры конца файла.

Различные операционные системы придерживаются своего представления перевода строки и конца файла. В UNIX перевод строки состоит из одного символа LF (0x0A), в Mac OS -- из символа CR (0x0D), а в DOS и Microsoft Windows перевод строки кодируется последовательностью двух символов CR LF. В DOS и Microsoft Windows конец файла кодируется символом 0x1A, а в UNIX символ конца файла не употребляется.

Под сортировкой строк понимается посимвольное сравнение строк с помощью таблицы ASCII.

Программа может быть очень полезна, например когда необходимо отсортировать файлы с большим количеством строк, для быстрого наглядного поиска нужного элемента в файле. Легко найдет применение везде, где так или иначе нужна сортировка.

1. Анализ задания

Разобьем нашу задачу на подзадачи:

Ввести пути к файлам, с которыми будем работать: путь к файлу, который необходимо отсортировать (в программе обозначен как Input file) и путь к файлу, в который сохраним результат (в программе - Output file).

Ввод будет осуществляться прямо из программы. Для этого нам понадобятся функции 07h* и 02h* - ввод с клавиатуры без ЭХО и вывод символа на экран соответственно. Именно эти функции нам позволят обработать введенный символ, прежде чем он отобразится на экране. Это нам позволит корректно использовать клавишу BackSpace. Функцию 01h* (ввод символа с клавиатуры с ЭХО) использовать нежелательно, так как некоторые символы нам ненужно отображать и тем более записывать в строку (например, Enter).

Ввести тип сортировки (в программе Input key [D/A]).

Для выбора типа сортировки: по возрастанию необходимо вести A, по убыванию - D. При воде необходимо учитывать верхний регистр вводимого символа. Дается две попытки на правильный ввод, потом программа осуществляет выход.

Подготовка файлов для работы.

Нам необходимо открыть один и создать второй файл, для этого мы будем использовать функции 3dh* и 3ch*, так как это единственные функции для работы с файлами, то выбор очевиден.

Сортировка.

Для этого необходимо, во-первых, считать блок данных из файла (с помощью функции 3fh*). Сортировать сами строки в памяти слишком нерационально, поэтому для сортировки нам понадобится массив с адресами начала строк. Потом необходимо отсортировать адреса строк соответствии с выбранным типом сортировки. Создать массив, в котором будут храниться данные о количество символов в уже отсортированных строках. Потом записать полученный результат в файл (с помощью функции 40h*).

*Функции относятся к прерыванию 21h.

2. Проектирование пользовательского интерфейса

Интерфейс программы очень прост и удобен, пользователю достаточно запустить ЕХЕ файл и он увидит приглашение на ввод информации. Это будут последовательно 3 приглашения: на ввод пути к файлу, который надо закодировать (Input file), на ввод пути к файлу в который сохранится результат работы (Output file) и приглашение на ввод типа сортировки (Input key [D/A]).

После завершения на экране появится сообщение «Done», информирующее о том, что программа успешно завершила свою работу.

Если в процессе работы произошла какая либо ошибка, то тут же выведется соответствующее сообщение, и программа завершит свою работу.

3. Выбор формата представления данных

Для определения переменных в программе используются метки db и dw (byte и word), а так же для некоторых переменных используется директива EQU для более гибкого написания кода.

В таблице 1 перечислены все переменные, использующиеся в программе.

Таблица 1

Список переменных

Имя

Метка

Примечание

msg0

db

Сообщение. Информация о курсовом проекте.

msg1

db

Сообщение. Приглашение на ввод файла (Input file).

msg2

db

Сообщение. Приглашение на ввод файла (Output file).

msg3

db

Сообщение. Сообщение. Информация о том, что надо ввести для сортировки по возрастанию или убыванию

msg4

db

msg5

db

Сообщение. Появляется перед завершением работы программы, для того что бы сообщить пользователю, что необходимо нажать любую клавишу, что бы программ завершилась (Press any key)

msg6

db

Сообщение. «Готово» сообщает о том, что процесс кодирования завершен (Done)

msg7

db

Сообщение. Информация о неправильном вводе символа выбора типа сортировки.

msg8

db

Сообщение. Количество попыток превышено, выход

err_0

db

Сообщение об ошибке. Открытие файла.

err_1

db

Сообщение об ошибке. Создание файла.

err_2

db

Сообщение об ошибке. Чтение из файла.

err_3

db

Сообщение об ошибке. Записи в файл.

err_4

db

Сообщение об ошибке. Закрытие файла.

err_5

db

Сообщение об ошибке. Файл имеет только нулевую строку.

num1

EQU

Ограничение на длину, вводимой строки

file1

db

Путь к файлу для сортировки

file2

db

Куда сохранить отсортированный файл

flag

db

Флаг, отвечающий за тип сортировки.

num2

EQU

Ограничение на длину данных

handle1

dw

Заголовок файла, который надо отсортировать

handle2

dw

Заголовок файла,в который записываем отсортированные строк

len_file

dw

Кол-во символов в файле

num_str

dw

Кол-во строк в файле

D

dw

Зарезервируем блок для хранения данных

mas

dw

Зарезервируем блок для массива адресов начала строк

mas_num

dw

Зарезервируем блок для массива кол-ва символов в строках

4. Список процедур, макросов и их назначение

В таблице 2 указан список процедур, макросов и их назначение.

Таблица 2

Список процедур, макросов и их назначение

Имя

Назначение

print

Макрос вывода строки на экран. В качестве параметра - имя выводимой структуры, это должна быть строка, оканчивающаяся символом `$'.

input_line

Процедура, осуществляющая ввод пути к файлу. Перед вызовом в регистре di, должен храниться адрес структуры, куда будет записан путь.

delete_char

Процедура, стирающая с экрана последний введенный символ, вызывается внутри процедуры INPUT_LINE при нажатии клавиши BackSpace.

reception_type

Процедура получения типа сортировки.

clear

Процедура очистки экрана.

open_file

Процедура открытия файла. Путь к файлу в file1, номер открытого файла сохранится в handle1.

read_file

Процедура чтения. Считывание происходит из файла file1, данные в структуру D.

make_mas

Процедура создания массива адресов строк.

sort

Процедура сортировки.

make_mas_num

Процедура создания массива длин отсортированных строк

create_file

Процедура создания файла. Путь к файлу в file2, номер созданного файла сохранится в handle2.

write_file

Процедура записи. Запись происходит в файл file2. На входе в регистре cx должно храниться количество байт для записи из структуры D.

close_file

Процедура закрытия файла. File1 закроется если он был открыт, а File2 закроется если он был создан.

exit

Завершение программы. Внутри вызывается процедура CLOSE_FILE, выводится сообщение «Press any key..» и ожидается ввод с клавиатуры символа, после этого программа завершает свою работу.

5. Используемы в программе функции

Функция 02h прерывания 21h. Вывод символа на экран.

Вход: ---

Выход: DL = символ, который необходимо вывести.

(используется для отображения вводимой строки в процедуре input_line).

Функция 07h прерывания 21h. Ввод с клавиатуры без ЭХО.

Вход: ---

Выход: AL = считанный символ.

(используется для считывания кода символа в процедуре input_line).

Функция 0Ah прерывания 21h. Буферизованный ввод с клавиатуры.

Вход: адрес входного буфера (смотри ниже)

Выход: ---

Первый байт буфера должен содержать максимальную длину на входе; второй байт содержит фактическую длину предыдущей линии, которая может будьте отозваны с командами редактирования линии DOC по возвращению второй байт содержит фактическую длину, третий и последующие байты содержат входную линию

(используется для считывания кода символа в процедуре reception_type).

Функция 0003h прерывания 10h.Установка видео режима.

Вход: AL =03h (Режим текст 80x25 формат 8x8 цвета 16)

Выход: ---

(используется для считывания кода символа в процедуре clear).

Функция 09h прерывания 21h. Вывод строки.

Вход: DS:DX = адрес строки, заканчивающейся `$'.

Выход: ---

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

Функция 3dh прерывания 21h. Открыть файл.

Вход:AL = код доступа (0 - чтение, 1 - запись, 2 - чтение запись).

DS:DX = адрес на строку в формате ASCIZ.

Выход:CF = 1 - есть ошибка, AX = код ошибки.

CF = 0 - нет ошибки, AX = номер файла.

Функция 3сh прерывания 21h. Создать файл.

Вход:СХ = атрибут.

DS:DX = адрес на строку в формате ASCIZ.

Выход:CF = 1 - есть ошибка, AX = код ошибки.

CF = 0 - нет ошибки, AX = номер файла.

Функция 3eh прерывания 21h. Закрыть файл.

Вход:BX = номер файла.

Выход:CF = 1 - есть ошибка, AX = код ошибки.

Функция 3fh прерывания 21h. Чтение из файла.

Вход:BX = номер файла.

CX = количество байт, которые необходимо считать.

DS:DX = адрес буфера.

Выход:CF = 1 - есть ошибка, AX = код ошибки.

CF = 0 - нет ошибки, AX = количество считанных байт.

Функция 40h прерывания 21h. Запись в файла.

Вход:BX = номер файла.

CX = количество байт, которые необходимо записать.

DS:DX = адрес буфера.

Выход:CF = 1 - есть ошибка, AX = код ошибки.

CF = 0 - нет ошибки, AX = количество записанных байт.

Функция 4ch прерывания 21h. Завершение программы.

Вход:AL = код завершения.

Выход: ---

6. Тестирование и отладка

Тестирование на ошибочный ввод параметров.

Ввод несуществующего файла в качестве Input file.

Ввод некорректного пути к создаваемому фалу Output file.

Тестирование правильной работы.

Для тестирования правильной работы программы был выбран текстовый документ 1.txt с различными строками, сортировка была произведена в файл 2.txt сначала по возрастанию, потом по убыванию.

Результат тестирования на ошибочный ввод параметров.

Программы выполнила все тесты, выводя соответствующие сообщения об ошибках, тесты не привели к критическому завершению программы.

Результат тестирования правильной работы.

После сортировки файла 1.txt в 2.txt строки были отсортированы в зависимости от выбранного типа сортировки.

Заключение

Программа работоспособна и соответствует предъявленным требованиям. Проделано тестирование программы и соответствующая отладка по устранению ошибок.

Список литературы

1. П. Абель Язык ассемблера для IBM PC и программирования - М.: ЭНТРОП, 2007. -447с.

2. Файл руководства по системным функциям - interrup.lst

Приложение А

«Листинг программы»

;Курсовой проект

;Выполнил:Филюк Андрей

;Группа:А-8-07

;Тема:Сортировка строк в текстовом файле

;макрос вывода строки, заканчивающейся $

printmacro str;в str - адрес выводимой структуры

mov ah, 09h;выбор функции вывода строки, заканчивающейся $

lea dx, str;сохраняем адрес в dx

int 21h;выводим строку

endm

.model small

.stack 100h

.data

msg0 db 13,10,'Filuk Andrew A-8-07 ',' File sorting ',13,10,'$'

msg1db13,10,'Input file: $'

msg2db13,10,'Output file: $'

msg3 db 13,10,'For descending sort need enter key D',13,10,'For ascending sort need enter key A',13,10,'$'

msg4 db 13,10,'Input key [D/A]:? $'

msg5db13,10, 'Press any key.. $'

msg6db13,10, 'Done$'

msg7db13,10, 'Incorrect input, please try again $'

msg8db13,10, 'Sorry, try next time $'

;сообщения об ошибках

err_0db13,10, ' Error 0: Can not open file $'

err_1db13,10, ' Error 1: Can not create file $'

err_2db13,10, ' Error 2: Can not read file $'

err_3db13,10, ' Error 3: Can not write file $'

err_4db13,10, ' Error 4: Can not close file $'

err_5db13,10, ' Error 5: File have only null string $'

num1 EQU 80h

file1dbnum1 DUP(0);путь к файлу, который надо отсортировать

file2dbnum1 DUP(0);куда сохранить отсортированный файл

flag db 2;флаг

num2 EQU 1000h

handle1 dw 0;заголовок файла, который надо отсортировать

handle2 dw 0;заголовок файла,в который записываем отсортированные строки

len_file dw 0;кол-во символов в файле

num_str dw 0;кол-во строк в файле

D db num2 DUP('D') ;данные

mas dw 100h DUP('#');массив адресов начала строк

mas_num dw 100h DUP('*');массив кол-ва символов в строках

.code

Start:

mov ax, @data;сохраним адрес на сегмент данных в AX

mov ds, ax;инициализация сегмента данных

mov es, ax;инициализация сегмента дополнительных данных

call clear;процедура очистки экрана

print msg0;вывод сообщенияо о проекте

print msg1 ;вывод сообщения на ввод пути вх. файла

lea di, file1;сохраним адрес на структуру file1 в di

call input_line;вызываем процедуру ввода строки

print msg2;вывод сообщения на вывод пути вых. файла

lea di, file2;сохраним адрес на структуру file2 в di

call input_line;вызываем процедуру ввода строки

call reception_type;процедура определения типа сортировки(по озрастанию или убыванию)

call open_file;открытие файла, который надо отсортировать

call read_file;чтение файла

call make_mas;создание массива начала адресов строк

call sort;сортировка

call make_mas_num;создание массива кол-ва символов в уже отсортированном массиве адресов строк

call create_file;создание файла для вывода

call write_file;запись в файл

print msg6;вывод сообщения

call exit;выход с закрытием файлов

;------------------Получение типа сортировки------------------------

reception_type proc

push ax;ах в стек

print msg3;вывод сообщения

mov cx,2;кол-во попыток неправильного ввода

k0:

print msg4;вывод сообщения

lea dx, flag ;dx указывает на первый байт буфера

mov ah,0ah;буферизованный ввод с клавиатуры

int 21h

mov ah,02h ;ывод символа на экран

mov dl,0dh;символ возврата коретки (для буфера)

int 21h

cmp flag+2, 65;введена клавиша A?

jne k1;нет, переход по метке сравнения с клавишей D

mov flag,0 ;иначе устанавливаем флаг в 0

jmp k3 ;на выход

k1: cmp flag+2, 68 ;введена ли клавиша D?

jne k2;нет, переход по метке k2

mov flag,1;иначе устанавливаем флаг в 1

jmp k3 ;переход по метке

k2:

print msg7;вывод сообщения

loop k0

print msg8;вывод сообщения

call exit2 ;Не введено ни A, ни D, - выход

k3:

pop ax;возврат значения из стека

ret

endp

;------------------------------ Очистка экрана ------------------------------

clear proc

mov ah,00h; Установка видеорежима дисплея

mov al,03h; Номер видеорежима

int 10h

ret

clear endp

;--------------------------------Ввод строки----------------------------------

input_line proc

mov cx, 0;в CX будет храниться количество введенных символов

m0:

mov ah, 07h;выбор функции ввод с клавиатуры без ЭХО

int 21h;ждем

cmp al, 08h;проверяем на BackSpace

jne m2;если да - переходим на m2

cmp cx, 0;если нет - проверяем есть ли что удалять

je m0;если строка пуста - возвращаемся на начало и ждем ввода

call delete_char;если строка не пуста - стираем с экрана последний введенный символ

dec di;уменьшаем адрес, где сохранен путь на 1

dec cx;уменьшаем количество введенных символов на 1

jmp m0;возвращаемся на начало и ждем ввода

m2:

mov ah, 02h;выбор функции вывода символа на экран

mov dl, al;считанный ранее символ хранится в al - записываем его в dl

int 21h;выводим его

mov [di], al;сохраняем по адресу di

inc di;переходим на следующую ячейку

inc cx;увеличиваем количество введенных символов на 1

cmp cl, num1;огранисчение на 80 символов

je m1;если ввели 80 символом, то считаем что строка введена

cmp al, 0dh;проверяем не нажат ли Enter

jne m0

dec di;возвращаемся в предыдущую ячейку

m1:

mov al, 00h;что бы записать символ конца строки - 0

mov [di], al;записываем

ret

endp

;---------Стереть символ с экрана---------------

delete_charproc

;при работе испортится регистр ax

push ax;сохраним его в стек

mov ah, 02h;функция вывода символа на экран

mov dl, 08h;символ - Backspace

int 21h;выводим, тем самым переместим курсор влево на 1

mov dl, 20h;символ - space

int 21h;выводим, тем самым сотрем с экрана символ на котором находится курсор

;и сместим курсор вправо на 1

mov dl, 08h;символ - Backspace

int 21h;выводим, тем самым вернем курсор обратно влево

pop ax;восстановим регистр ax

ret

endp

;-----------------Открытие файла-----------------------

open_fileprocnear

mov ah, 3dh;функция открытия файла

mov al, 00; 00 - для чтения

lea dx, file1;путь к файлу в file1

int 21h ;открываем

jnc m3;если не было ошибки - то на метку m3

print err_0;если была ошибка - выводим соотв. сообщение

call exit2;завершаем работу

m3:

mov handle1, ax;сохраняем номер файла в handle1

ret

endp

;-----------------Чтение из файла----------------------

read_fileproc

mov ah, 3fh;функция чтения из файла

mov bx, handle1;номер файла - откуда считать

mov cx, num2;количество байт, которые надо считать

lea dx, D;буфер для данных

int 21h;считываем

mov len_file, ax

jnc m4;если не было ошибки - то на метку m4

print err_2;если была ошибка - выводим соотв. сообщение

call exit;завершаем работу

m4:

ret

endp

;-----------------Создание массива адресов строк-------

make_mas proc

push ax;сохраним его в стек

mov ax, len_file;в ах кол-о символов в файле

or ax,ax;сравнение на нулевой файл

jnz m51;нет -> идем по метке создания массива

print err_5;если была ошибка - выводим соотв. сообщение

call exit;на выход

m51:

xor bx,bx;обнуляем bx

xor dx,dx;обнуляем dx

lea di,D;в di адрес начала первой строки

mov mas[bx],di;заносим её адрес в массив

mov al,0Ah ;поиск ведем по символу конца строки

mov cx,len_file;загрузим кол-во символов в файле

cld;сканирование осуществляем вперед

m5:repne scasb;сканирование в поиcке заданного символа, пока счетчик не обнулиться, остановиться когда найдет символ 0, записанный в al

add bx,2;организация перехода на след. элемент массива

mov mas[bx],di;заносим адрес начала след. строки в массива

inc dx;+1

inc cx;+1

loop m5

mov num_str, dx;в переменную num_str сохраняем кол-во строк

mov byte ptr [di],0Dh;добавляем концевой символ

mov byte ptr [di+1],0Ah;добавляем концевой символ

pop ax;восстановим регистр ax

ret

endp

;-----------------Сортировка строк--------------------

sort proc

push ax;заносим ах стек

sort1:

xor si,si;обнуляем si

mov bh, 0;используем bh как флаг, если строки перемещались, то флаг установился в 1

mov cx,num_str;в сх кол-во строк для организации цикла

dec cx;-1

cmp cx,0;если в файле одна строка, то сортировка не нужна

jnz sort2;если нет -> сортируем

jmp end_sort;иначе выход

sort2:

xor ax,ax;обнуляем ах

push cx;сх стек

mov ax,mas[si];адрес начала строки в ax

mov dx,mas[si+2];адрес начала след. строки в dx

push si;si в стек

mov si,ax;в si адрес начала строки

mov di,dx;в di адрес начала след. строки

dec si;-1

dec di;-1

compare_string:

mov cl,byte[si];в cl заносим символ строки

mov ch,byte[di];в ch заносим символ след. строки

cmp flag,0;определяем тип сравнения. по возрастанию?

jz increase;да -> переход на алгоритм сортировки по возрастанию, иначе по убыванию

cmp ch,0Dh;сравниваем символ строки с адресом конца строки

jz next_string;если равен -> перех к сравнению след. строк

cmp cl,0Dh;сравниваем символ след строки с адресом конца строки

jz change;если да -> меняем

cmp cl,ch;производим сравнение символов находящихся не в концах строк

je next_simbol;равны следовательно переход по метке к сравнению след символа в строках

cmp cl,ch;сравниваем какой из них "больше"

ja next_string;переход если сl > сh

jmp change;иначе меняем строки

increase:

cmp cl,0Dh;сравниваем символ след строки с адресом конца строки

jz next_string;если равен -> перех к сравнению след. строк

cmp ch,0Dh;сравниваем символ строки с адресом конца строки

jz change;если да -> меняем

cmp cl,ch;производим сравнение символов находящихся не в концах строк

je next_simbol;равны следовательно переход по метке к сравнению след символа в строках

cmp cl,ch;сравниваем какой из них "больше"

jb next_string;переход если сl < сh

jmp change;иначе меняем строки

change:

xchg ax,dx;меняем адреса строк

mov bh,1;устанавливаем флаг

jmp next_string;переход к след. строке

next_simbol:

inc si;переход к след символу строки

inc di;переход к след символу строки

jmp compare_string;на метку сравнения строк

next_string:

pop si;возращаем из стека si

mov mas[si],ax;заносим адреса отсортированных строк в массив

mov mas[si+2],dx;заносим адреса отсортированных строк в массив

pop cx;возращаем из стека сх

add si,2;организация перехода к след. строке

loop sort2

cmp bh,0;сравниваем флаг на перемещение строк.

jz end_sort;если не было перемещений -> выход

jmp sort1;иначе продолжаем сравнивать

end_sort:

pop ax;возращаем из стека ах

ret

endp

;-----Создание массива длин отсортированных строк-------

make_mas_num proc

push ax;заносим ах в стек

xor si,si;обнуляем si

mov cx, num_str;в сх заносим кол-во строк для организации цикла

m6:

push cx;заносим сх в стек

mov di,mas[si];адрес начала строки в ax

push di;заносим адрес начала в стек

mov al,0Ah ;в al заносим символ который ищем

mov cx,len_file;загрузим максимальный объем

cld;сканирование осуществляем вперед

repne scasb;сканирование в поиcке заданного символа, пока счетчик не обнулиться, останоиться когда найдет символ 0, записанный в al

pop ax;возвращаем из стека

sub di,ax ;вычитаем из di адрес начала строки для получения длины строки

mov mas_num[si],di;заносим длину строки в массив

add si,2;организация перехода к след элементу

pop cx;возращаем изз стека сх

loop m6

pop ax;возвращаем из стека ах

ret

endp

;------------------Cоздание файла----------------------

create_file proc

mov ah, 3ch;функция создания файла

mov cx, 00h;файл - обычный

lea dx, file2;file2 - путь к файлу

int 21h;создаем

jnc m7;если не было ошибки - то на метку m7

print err_1;если была ошибка - выводим соотв. сообщение

call exit;завершаем работу

m7:

mov handle2, ax;сохраняем номер файла в handle2

ret

endp

;------------------Запись в файл-----------------------

;при входе в процедуру в cx - количество байт для записи

write_file proc

xor si,si;обнуляем si

mov cx, num_str;в сх заносим кол-во строк для организации цикла

m8:

push cx;заносим сх в стек

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

mov bx, handle2 ;номер открытого файла

mov cx,mas_num[si] ;количество символов которые надо

mov dx,mas[si]

int 21h ;записываем

jnc m9;если не было ошибки - то на метку m9

print err_3;если была ошибка - выводим соотв. сообщение

call exit;завершаем работу

m9:

add si,2;переход к след. элементу

pop cx;возвращаем из стека сх

loop m8;пока сх не равен нулю возврат по метке m8

ret

endp

;------------------Закрытие файлов-----------------------

close_file proc

cmp handle1, 0;проверяем был ли открыт файл

je m10;если нет - закрывать нечего, переходим на m10

mov ah, 3eh;функция закрытия файла

mov bx, handle1;номер файла

int 21h;закрываем

jnc m10;если не было ошибки - то на метку m10

print err_4;если была ошика - выводим соотв. сообщение

call exit;завершаем работу

m10:

cmp handle2, 0;проверяем был ли создан файл

je m11;если нет - закрывать нечего, переходим на m11

mov ah, 3eh;функция закрытия файла

mov bx, handle2;номер файла

int 21h;закрываем

jnc m11;если не было ошибки - то на метку m11

print err_4;если была ошибка - выводим соотв. сообщение

call exit;завершаем работу

m11:

ret

endp

;------------------Выход------------------------------

exit proc

call close_file;вызров процедуры закрытия файлов

exit2:

print msg5;вывод сообщения "Press any key.."

mov ah, 07h;функция ввода с клавиатуры бех ЭХО

int 21h;ждем нажатия клавиши

mov ax, 4c00h;выход из программы с кодом возврата 0

int 21h;выходим

ret

endp

End Start

Размещено на http://www.allbest.ru


Подобные документы

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

    курсовая работа [29,3 K], добавлен 17.05.2013

  • Поиск вредоносных программ по средствам программ антивирусных. Выбор формата представления данных. Интерфейс программы, ее тестирование и отладка. Список процедур, их назначение. Поиск как средство для облегчения, удобства, надежности работы на ПК.

    курсовая работа [22,4 K], добавлен 17.05.2013

  • Описание логической и модульной структуры разрабатываемой программы, используемые в данном процессе основные технические средства. Организация хранения данных в программе, проектирование интерфейса. Тестирование и отладка, листинг готовой программы.

    курсовая работа [494,5 K], добавлен 20.06.2012

  • Аппаратные характеристики системы, использованной для разработки информационного ресурса "Сортировка слиянием". Проектирование логической и физической структуры ресурса, реализация его интерфейса. Основные функции программы, ее тестирование и отладка.

    курсовая работа [2,1 M], добавлен 26.11.2012

  • Отличие исконных слов от заимствованных и установление времени, причины заимствований и их роль для развития языка. Алгоритм подсчета обработанных слов приложением "Подсчет частоты введенных слов в текстовом файле". Отладка и тестирование программы.

    курсовая работа [1,1 M], добавлен 13.06.2012

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

    курсовая работа [398,4 K], добавлен 16.07.2012

  • Проектирование системы управления базами данных. Особенности реализации в MS SQL. Разработка пользовательского интерфейса. Тестирование и отладка приложения. Руководство пользователя и системного администратора. Анализ и методы разработки приложений.

    курсовая работа [867,9 K], добавлен 16.07.2013

  • Задача зеркального отражения изображения как одна из подзадач многих программ. Анализ создания программы, выполняющей зеркальное отображение изображения, который хранится в файле формата .pcx (256 цветов). Проектирование пользовательского интерфейса.

    курсовая работа [625,6 K], добавлен 17.05.2013

  • Разработка программы на языке Pascal. Описание переменных. Действия, которые должна выполнить программа согласно выбранного алгоритма. Детализация графической части программы. Листинг и тестирование программы. Вывод массива данных на экран монитора.

    контрольная работа [360,4 K], добавлен 13.06.2012

  • Особенности работы с процедурами и двумерными массивами, последовательность вызова процедур. Способы описания и использования многомерных массивов, назначение процедур, их описание и обращение к ним. Набор программы, ее отладка и тестирование данных.

    лабораторная работа [112,1 K], добавлен 03.10.2010

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.