Форум программистов, компьютерный форум, киберфорум
Assembler: DOS/Real Mode/16-bits
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/9: Рейтинг темы: голосов - 9, средняя оценка - 4.56
56 / 2 / 0
Регистрация: 19.10.2015
Сообщений: 98
1

Заменить в файле одни буквы другими

25.09.2016, 17:45. Показов 1750. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте! Вот опять я бьюсь об стену, а значит пора сюда писать!)) Такие вот дела: изучаю работу с файлами.. В теории всё ясно но прога из учебника не работает. Я почти уверен, что все дело в DTA. Я никак не могу понять принцип ее заполнения и ее адрес. По идее она должна быть в ds:80h. Вот только (если я конечно хоть чуть-чуть умею работать с AFD) ничего там нет. Только 0Dh со смещением 81h. Когда начинаю поиск первого файла никаких изменений в этой области не происходит! С CodeView ситуация лучше: область заполняется данными, причем последние байты содержат название файла. Но вместо буквы диска 0Bh и дальше совсем левые данные.. Может я просто не понимаю чего-то, а может неверно работают функции, но очень хотелось бы разобраться.. Сюда скину скрины с обоих отладчиков и сам код. Кстати, програмка должна заменять русские Н английскими H. Нда.. не понятно загрузил или нет, но буду надеяться, что да!)) Если прикреплю в следующем сообщении..
Ну и код собстна:
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
    .model  tiny
        .code
        org     100h
        
        
LP:     
        mov     ah,4Eh
        xor     cx,cx 
        mov     dx,offset file_spec
        
file_open:      
          int 21h
        jc      no_more_files
        
        mov     ax,3D02h
        mov     dx, 80h+1Eh
          int 21h 
        
        jc      not_open
        
        mov     bx,ax
        mov     cx,1 
        mov     dx,offset buffer
        
read_next:  
        mov     ah,3Fh
          int 21h 
        jc      find_next
        dec     ax 
        js      find_next
        cmp     byte ptr buffer,8Dh
        jne     read_next 
        mov     byte ptr buffer,48h
        
        mov     ax,4201h
        dec     cx 
        dec     cx 
        mov     dx,cx 
          int 21h 
         
        mov     ah,40h
        inc     cx
        inc     cx 
        mov     dx,offset buffer
          int 21h
        
        jmp     read_next
        
        
find_next:
        mov     ah,3Eh
          int 21h 
        
not_open:
        mov     ah,4Fh
        mov     dx,80h 
        jmp     file_open
        
no_more_files:
        ret 
        
        
 
        
file_spec       db      "*.txt",0
buffer          label   byte
        
        end     LP
Оказывается скрины все-таки загрузил! Помогите, коль невлом!))
Миниатюры
Заменить в файле одни буквы другими   Заменить в файле одни буквы другими  
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.09.2016, 17:45
Ответы с готовыми решениями:

Заменить в исходном файле русские буквы ‘к’ на буквы ‘т’, буквы ‘т’ на буквы ‘к’, буквы ‘л’ на буквы ‘в’, буквы ‘в’ на
Задание: Заменить в исходном файле русские буквы ‘к’ на буквы ‘т’, буквы ‘т’ на буквы ‘к’, буквы...

Заменить в строке одни символы другими
Дана строка символов. Заменить в ней каждую точку тремя точками ,а каждую запятую удалить.

Заменить в строке одни буквы на другие
Напишите программу на c++, которая считывает количество слов и меняет все буквы `а` на `о`....

Вставить текст, состоящий из строк, которые стоят одни над другими
Надо вставить на место курсора такой текст. я знаю, что надо использовать Selection.Text, но вот...

6
Эксперт Hardware
Эксперт Hardware
6103 / 2347 / 390
Регистрация: 29.07.2014
Сообщений: 3,108
Записей в блоге: 4
25.09.2016, 19:39 2
Установи адрес DTA функцией DOS AH=1Аh (хоть 80h, хоть другой)
1
56 / 2 / 0
Регистрация: 19.10.2015
Сообщений: 98
26.09.2016, 11:49  [ТС] 3
Хорошо, попробую.. Но скажи, почему не правильно заполняется стандартная область для DTA?
0
Эксперт Hardware
Эксперт Hardware
6103 / 2347 / 390
Регистрация: 29.07.2014
Сообщений: 3,108
Записей в блоге: 4
26.09.2016, 12:05 4
Лучший ответ Сообщение было отмечено NEWd как решение

Решение

Так тыж с ней не определился, поэтому она и не заполняется. Этот адрес(80h) служит по-умолчанию для двух целей: или DTA, или принимает параметры ком.строки.
1
56 / 2 / 0
Регистрация: 19.10.2015
Сообщений: 98
26.09.2016, 17:12  [ТС] 5
Спасибо за помощь, дружище! Все наладил, все работает! Я в восторге!)))
1
Эксперт Hardware
Эксперт Hardware
6103 / 2347 / 390
Регистрация: 29.07.2014
Сообщений: 3,108
Записей в блоге: 4
27.09.2016, 02:33 6
Лучший ответ Сообщение было отмечено Mikl___ как решение

Решение

Не по теме:

NEWd, каждую хрень запоминай.. Утром спросят "хде", а ты должен ответить...



Добавлено через 2 часа 47 минут
..чем читать 10 умных книжек, лучше прочитать одну бесовскую
1
56 / 2 / 0
Регистрация: 19.10.2015
Сообщений: 98
27.09.2016, 19:36  [ТС] 7
Думаешь потяну?))
0
27.09.2016, 19:36
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.09.2016, 19:36
Помогаю со студенческими работами здесь

В новом файле заменить все латинские буквы верхнего регистра на буквы нижнего регистра
В новом файле заменить все латинские буквы верхнего регистра на буквы нижнего регистра.

В новом файле заменить все латинские буквы верхнего регистра на буквы нижнего регистра
9. В новом файле заменить все латинские буквы верхнего регистра на буквы нижнего регистра. help

Заменить в файле буквы 'р' на 'w'
Файл содержит буквы латинского алфавита. Заменить буквы 'р' на 'w'

Заменить в файле буквы «а» на «б»
Текстовый файл, содержащий строки. Напишите программу, которая меняет буквы «а» в этом файле на...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru