Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Организация ввода данных и вывода результатов



1.ЗАДАНИЕ НА СРС

Разpаботать пpогpамму на языке Ассемблеpа, удаляющую i строку от начала файла. Исходный текст пpогpаммы следует написать таким обpазом, чтобы все его стpоки имели одну и ту же длину. Hомеp стpоки исходного текста, относительно котоpой следует выполнить коppекцию, опpеделить десятичной однобайтовой константой с помощью диpективы db.

2.КРАТКОЕ ОПИСАНИЕ АЛГОРИТМА.

- открываем исходный файл

- читаем его в буфер

- удаляем в буфере заданную строку

- записываем файл из буфера на диск

- закрываем файл

После каждого действия проводится проверка на правильность

выполнения операции.

3.ТЕКСТ ПРОГРАММЫ.

CODE SEGMENT

ASSUME CS: CODE, DS: CODE,ES:CODE

ORG 100H

BEGIN:

JMP START

F_Name DB 'LAB_7.ASM',0h

R_Name DB 'LAB_7.RES',0h

File DW 0

F_size DW 0

String DB 16

Err_mes DB 'Error in process',7,'$'

Start:

;\\---------------------------------\\

;\\ OPEN FILE \\

mov ax,3d02h

mov dx,offset F_name

int 21h

jc Error

mov Word ptr File,ax

;\\---------------------------------\\

;\\ SIZE OF FILE \\

sub cx,cx

sub dx,dx

mov ax,4202h

mov bx,word ptr file

int 21h

jc Error

or dx,dx

jnz Error;Файл больше FFFFh байт

cmp ax,0d000h

ja Error

mov word ptr F_size,ax

;Установка указателя на начало файла

sub cx,cx

sub dx,dx

mov ax,4200h

mov bx,word ptr file

int 21h

jc Error

;\\---------------------------------\\

;\\ READ FROM FILE \\

mov dx,offset Buf

mov cx,word ptr F_size

mov bx,word ptr file

mov ah,3fh

int 21h

jnc Skip1

Error:

mov bx,word ptr file

or bx,bx

je Skip

;\\ CLOSE FILE \\

mov ah,3eh

int 21h

Skip:

mov ah,9

mov dx,Offset err_mes

int 21h

ret

Skip1:

cmp ax,word ptr F_size

jne Error

;Файл в Buf,обработка

cld

mov al,13

mov bx,word ptr F_size

mov cl,byte ptr String

sub ch,ch

mov di,offset Buf

Loop1:

xchg bx,cx

repne scasb

xchg cx,bx

loop Loop1

mov si,di

mov cx,bx

sub di,2

std

repne scasb

add di,2

mov bx,word ptr F_Size

sub bx,si

add bx,di;Новый размер файла

mov cx,F_Size

add cx,offset Buf

sub cx,si;Число перемещаемых байт

mov word ptr F_size,bx

cld

rep movsb

;\\---------------------------------\\

;\\ CLOSE FILE \\

mov ah,3eh

mov bx,file

int 21h

mov word ptr file,0

;\\---------------------------------\\

;\ CREATE FILE \\

mov ah,3Ch

mov cx,00h

mov dx,offset R_name

int 21h

jc Error

mov word ptr file,ax

;\\---------------------------------\\

;\\ WRITE TO FILE \\

mov ah,40h

mov bx,word ptr file

mov cx,word ptr F_size

mov dx,offset Buf

int 21h

jc Error1

cmp ax,word ptr F_size

je Skip2

Error1:

jmp Error

;\\---------------------------------\\

;\\ CLOSE FILE \\

Skip2:

mov ah,3eh

mov bx,file

int 21h

ret

db 13

Buf:

CODE ENDS

END BEGIN

4.РЕЗУЛЬТАТЫ ТЕСТИРОВАНИЯ И ХАРАКТЕРИСТИКИ

РАБОТЫ ПРОГРАММЫ.

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





Дата публикования: 2015-10-09; Прочитано: 262 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.008 с)...