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

Низкоуровневое программирование портов, микроконтроллеров и т.д.

Модератор: Andy

Ответить
ilushka2306
Сообщения: 1
Зарегистрирован: 19 июн 2010, 21:45

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
Тетяна.Чередніченко
Сообщения: 1
Зарегистрирован: 16 мар 2017, 18:08

16 мар 2017, 19:18

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