Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
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 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!