вращение байта в файле

Ответить

Код подтверждения
Введите код в точности так, как вы его видите. Регистр символов не имеет значения.

BBCode ВКЛЮЧЁН
[img] ВКЛЮЧЁН
[flash] ОТКЛЮЧЕН
[url] ВКЛЮЧЁН
Смайлики ОТКЛЮЧЕНЫ

Обзор темы
[quote=ilushka2306 post_id=80829 time=1276969580 user_id=21824] нужно открыть файл с текстом; создать второй файл; считать из первого файла текст; записать во второй файл. Условие: вращение байта и 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 [/quote]
   

Развернуть Обзор темы:вращение байта в файле

Re: вращение байта в файле

Тетяна.Чередніченко »16 мар 2017, 19:18

Что такое «вращение байтов»?

вращение байта в файле

ilushka2306 »19 июн 2010, 21:46

нужно
открыть файл с текстом;
создать второй файл;
считать из первого файла текст;
записать во второй файл.
Условие: вращение байта и 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

Вернуться к началу