Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.06.2010, 13:52   #1
ilushka2306
Пользователь
 
Регистрация: 19.06.2010
Сообщений: 48
По умолчанию Вращение байта в файле

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


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Деление байта пополам necroant Общие вопросы C/C++ 19 18.06.2010 04:17
Поиск данных в текстовом файле (в самом файле! а не в Memo и не загружая всю инфу из файла в одну строку glagoff Помощь студентам 1 05.05.2010 13:00
Сегмент байта (Паскаль) Dizistar Помощь студентам 9 24.04.2010 22:54
Замена байта по заданному смещению Lvenok1987 Общие вопросы Delphi 5 16.11.2009 18:05
взятие старшего и младшего байта Djaconda Общие вопросы Delphi 2 29.09.2008 09:25