нужно
открыть файл с текстом;
создать второй файл;
считать из первого файла текст;
записать во второй файл.
Условие: вращение байта и 4-х байт в файле.
Вот есть примерный текст программы, помогите пожалуйста исправить. Очень нужно!
Код:
dosseg
.model tiny
.code
org 100h
st1:
jmp st5
;объявление переменных
bufin db 1000 dup (?) ;Буфер ввода
counter dw ?
filename db 'myfile.001',0 ;Спецификация файла
filename1 db 'myfile1.001',0
myfile dw ?
myfile1 dw ?
numbyte dw ?
num_symb dw 100 ; число байт для разового считываения
st5:
mov counter, 0 ; обнуление счетчика байт
mov AH,3Dh ;Функция открытия файла
mov AL,0
mov DX,offset filename ;Адрес имени файла
int 21h
mov myfile,ax ;Сохраним дескриптор
; создание второго файла
mov ah, 3ch ; функция создания файла
mov cx, 0 ; без атрибутов
mov dx, offset filename1 ; адрес имени файла
int 21h ; вызов DOS
mov myfile1 , ax ; сохраним дескриптор файла
st4:
mov AH,3Fh ;Функция чтения
mov bx,myfile ;Дескриптор
mov cx,num_symb ;Столько читать
mov dx,offset bufin ;Сюда
int 21h
cmp ax,0
jz st6
;Столько реально прочитали
mov numbyte,ax
mov bx,offset bufin
st2:
; вращение байта
mov al,[bx]
ror al, 4
mov [bx], al
inc bx
dec cx
jnz st2
;попарная перестановка
mov bx,offset bufin
mov cx,numbyte
shr cx,1
st3:
mov ah,[bx]
mov al,[bx+1]
mov [bx], al
mov [bx+1], ah
add bx,2
dec cx
jnz st3
mov AH,40h ;Функция записи
mov bx,myfile1 ;Дескриптор
mov cx,numbyte
mov dx,offset bufin ;Адрес буфера
int 21h ;Вызов DOS
mov cx, numbyte
cmp num_symb, cx ; если последний считанный блок менее заданной длинны, то завершаем программу
jz st4
st6:
mov AH,3Eh ;Функция закрытия
mov bx,myfile ;Дескриптор
int 21h ;Вызов DOS
mov AX,4C00h ;Функция завершения
int 20h ;Вызов DOS
end st1
вращение байта в файле
Модератор: Andy
-
- Сообщения: 1
- Зарегистрирован: 16 мар 2017, 18:08
Что такое «вращение байтов»?