IPB
ЛогинПароль:

> ПРАВИЛА РАЗДЕЛА!!!

1. Заголовок или название темы должно быть информативным
2. Все тексты программ должны помещаться в теги [CODE=asm] [/CODE]
3. Прежде чем задавать вопрос, см. "FAQ",если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно, такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Ассемблера. Исключение только с согласия модератора.
5. НЕ используйте форум для личного общения! Все, что не относиться к обсуждению темы - на PM!
6. Проверяйте программы перед тем, как выложить их на форум!!

> Работа с файлами
amega
сообщение 12.12.2009 18:32
Сообщение #1


?
***

Группа: Пользователи
Сообщений: 283
Пол: Мужской

Репутация: -  4  +


Добрый день!
Нужно написать программку которая открывает файл и перезаписывает первую букву в словах.
тоесть
исходные данные
this
text
In
file
And
all
char
Big
выходные

This
Text
In
File
And
All
Char
Big

что у меня получилось, в буф хранится код символа и мне его нужно перезаписать, я файловой указатель перемещаю на 1 позицию назад, потом должна происходить запись, но как мне в дх загрузить смещение

.model small
.stack 100h
.data
	FileIn  db 'in.txt',0
	buf 	db ?
	
.code
start:
	mov ax,@data
	mov ds,ax
	
	;открываем файл для чтения и записи
	;DS:dx указатель на имя файла
	;в ax деcкриптор файла
	;если поднят флаг С, то ошибка открытия
	mov ax,3d02h
	lea dx,FileIn
	int 21h
	jc exit
	
	mov bx,ax
	xor cx,cx
	xor dx,dx
	
	;переходим к началу файла
	mov ax,4200h
	int 21h
	;Читаем его первый символ и проверям его код
first:
	mov ah,3fh
	mov cx,1
	lea dx,buf
	int 21h
	;Проверяем ЕоF
	cmp ax,cx
	jnz close
	mov dl,buf
	cmp dl,'a'
	jb no
	sub dl,32
	mov buf,dl
	;перекидуем на 1 позицию назад файловый указатель
	mov ah,42h
	mov al,1
	mov cx,0
	mov dx,-1
	int 21h
	;write
	mov ah,40h
	mov cx,1
	lea dx,buf <--------------------------------------как исправить??????????????????????????????????
	int 21h
no:
	mov ah,2
	int 21h
next:
	mov ah,3fh
	mov cx,1
	lea dx,buf
	int 21h
	cmp ax,cx
	jnz close
	mov dl,buf
	mov ah,2
	int 21h
	cmp dl,10
	je first
	jmp next
close:
	mov ah,3eh
	int 21h
exit:
	mov ah,4ch
	int 21h
end start


Сообщение отредактировано: amega - 12.12.2009 18:33
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов(1 - 1)
amega
сообщение 12.12.2009 19:41
Сообщение #2


?
***

Группа: Пользователи
Сообщений: 283
Пол: Мужской

Репутация: -  4  +


мм вопрос решил, ток ток возник другой оказалось что я неправильно передвигаю файловый указатель..
как передвинуть файловый указатель на 1 символ назад?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

- Текстовая версия 25.07.2025 2:59
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"