Форум программистов, компьютерный форум, киберфорум
Assembler для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
0 / 0 / 0
Регистрация: 12.12.2017
Сообщений: 24

Заменить в исходном файле буквы слов-палиндромов на прописные

22.11.2018, 17:01. Показов 2289. Ответов 5

Студворк — интернет-сервис помощи студентам
Заменить в исходном файле буквы слов-палиндромов на прописные.
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
22.11.2018, 17:01
Ответы с готовыми решениями:

Заменить в исходном файле буквы слов-палиндромов на прописные
Заменить в исходном файле буквы слов-палиндромов на прописные Имя исходного и обработанного файлов задать в программе в виде...

Заменить в исходном файле четные буквы слов на прописные
добрый день) Программу надо сделать на языке Assembler 1. открытие исходного файла (функция 3DH); 2. создание нового файла, куда...

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

5
Модератор
Эксперт по электронике
 Аватар для ФедосеевПавел
8655 / 4490 / 1669
Регистрация: 01.02.2015
Сообщений: 13,898
Записей в блоге: 12
24.11.2018, 17:28
Скорее всего условие задания несколько больше и имеет ограничения на размер файла в 512 байт. Т.е. весь файл умещается в один буфер.

Разделение строки на слова посмотрите среди списка тем. Где-то среди них есть поиск слов палиндромов. Добавьте UpCase из какой-нибудь другой темы.

Разделение строки на слова (разделитель - пробел)
Описание алгоритма
DOS TASM Количество слов, содержащих более 3-х символов

Программы на его основе (изменено лишь действие после выделения очередного слова:
DOS TASM В строке в словах с четным номером изменить порядок букв на обратный
DOS TASM Расположить слова в обратном порядке
DOS TASM Найти и вывести все симметричные слова
DOS TASM Обмен в исходном файле соседних слов местами
DOS TASM Определить сколько слов содержат хотя бы одну букву "В"
DOS TASM Удалить слова с повторяющимися буквами
DOS TASM Выяснить, есть ли во введённом тексте слова, начинающиеся с буквы "А", и сколько таких слов
DOS TASM Определить сколько слов в тексте начинаются и оканчиваются одной и той же буквой
DOS TASM Выяснить, есть ли во введённом тексте слова, оканчивающиеся на "f"
DOS TASM Обменять слова с максимальным и минимальным количеством букв «а»
DOS TASM Вывести последнее слово строки
DOS TASM Расположить слова в строке, введенной пользователем, по убыванию их длины
DOS TASM Объединение массива с фамилиями и массива с именами в один массив
0
Модератор
Эксперт по электронике
 Аватар для ФедосеевПавел
8655 / 4490 / 1669
Регистрация: 01.02.2015
Сообщений: 13,898
Записей в блоге: 12
30.11.2018, 17:47
Лучший ответ Сообщение было отмечено mickey_mo как решение

Решение

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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
LOCALS  @@
 
.model small
 
.stack 100h
 
.data
        ;символы разделители слов
        DelimChars              db      '.,!?;:"() ', "'", 0Ah, 0Dh
        LenDelimChars           dw      $-DelimChars
 
        CrLf            db      0Dh, 0Ah, '$'
        msgPressAnyKey  db      'Press any key to exit...', '$'
 
        ;переменные для файлового обмена
        InFileName      db      'InFile.txt', 0
        InFileHandler   dw      ?
        OutFileName     db      'OutFile.txt', 0
        OutFileHandler  dw      ?
 
        errFileOpen     db      'File open error', '$'
        errFileRead     db      'File read error', '$'
        errFileClose    db      'File close error', '$'
 
        String          db      512 dup(?)
        StrLen          dw      $-String
 
.code
 
;Определяет, принадлежит ли символ в al разделителям слов
;на входе
; al - символ
;на выходе
; ah -  0 (не разделитель), 1 (разделитель)
IsDelimChar     proc
        mov     ah,     0
        pushf
        push    si
        push    di
        push    cx
        push    es
 
        push    ds
        pop     es
        lea     di,     DelimChars
        mov     cx,     LenDelimChars
        cld
        repne   scasb
        jcxz    @@Skip
        jnz     @@Skip
        mov     ah,     1
@@Skip:
        pop     es
        pop     cx
        pop     di
        pop     si
        popf
        ret
IsDelimChar     endp
 
;Проверка слова на симметричность
;на входе:
; si - адрес начала слова
; cx - длина строки
;на выходе:
; al=0 - слово не палиндром
;   =1 - слово - палиндром
IsPalindrome    proc
        push    bx
        push    cx
        push    dx
        push    si
        push    di
 
        mov     di,     si
        add     di,     cx
        dec     di
        shr     cx,     1       ;проверять половину строки
 
@@For:
        mov     al,     [si]
        inc     si
        dec     di
        cmp     al,     [di+1]
        loopz   @@For
        mov     al,     1
        jz      @@Exit
        mov     al,     0
@@Exit:
        pop     di
        pop     si
        pop     dx
        pop     cx
        pop     bx
        ret
IsPalindrome    endp
 
;Замена строчных букв на прописные
;на входе:
; si - адрес начала слова
; cx - длина строки
;на выходе:
; преобразованная строка
UpCase  proc
        push    cx
        push    si
 
        @@For:
                mov     al,     [si]
                cmp     al,     'a'
                jb      @@Next
                cmp     al,     'z'
                ja      @@Next
 
                sub     al,     'a'-'A'
                mov     [si],   al
        @@Next:
                inc     si
        loop    @@For
 
@@Exit:
        pop     si
        pop     cx
        ret
UpCase  endp
 
main    proc
        mov     ax,     @data
        mov     ds,     ax
 
        ;ввод исходной строки из файла
        ; - открытие файлов
        mov     ah,     3Dh
        mov     al,     00h     ;открыть для чтения
        lea     dx,     [InFileName]
        int     21h
        jnc     @@InFileOpenOk
        mov     ah,     09h
        lea     dx,     [errFileOpen]
        int     21h
        jmp     @@Exit
@@InFileOpenOk:
        mov     [InFileHandler],        ax
        ; - читать из файла
        mov     ah,     3Fh
        mov     bx,     [InFileHandler]
        lea     dx,     [String]
        mov     cx,     512
        int     21h
        jnc     @@InFileReadOk
        mov     ah,     09h
        lea     dx,     [errFileRead]
        int     21h
        jmp     @@Exit
@@InFileReadOk:
        mov     [StrLen],       ax
        ; - закрытие файла
        mov     ah,     3Eh
        mov     bx,     [InFileHandler]
        int     21h
        jnc     @@InFileCloseOk
        mov     ah,     09h
        lea     dx,     [errFileClose]
        int     21h
@@InFileCloseOk:
        ;вывод исходной строки на экран
        mov     ah,     40h
        mov     bx,     1
        mov     cx,     [StrLen]
        lea     dx,     [String]
        int     21h
        mov     ah,     09h
        lea     dx,     [CrLf]
        int     21h
 
        lea     si,     [String]
        mov     cx,     [StrLen]
        ;пропускаем все разделители
@@WhileDelimiter:
        mov     al,     [si]
        call    IsDelimChar
        cmp     ah,     0
        je      @@NewWord
        inc     si
        loop    @@WhileDelimiter
 
        jcxz    @@Finish        ;если строка закончилась - выйти
        ;найдено новое слово
@@NewWord:
        mov     dx,     0       ;длина очередного слова пока равна 0
        push    si              ;сохраняем в стеке адрес начала слова
        ;пропускаем все буквы слова до разделителя
@@WhileWord:
        mov     al,     [si]
        call    IsDelimChar
        or      ah,     ah
        jne     @@Break
@@NextChar:
        inc     dx              ;увеличиваем длину слова
        inc     si              ;переходим к следующему символу
        loop    @@WhileWord
@@Break:
        pop     di              ;извлекаем из стека адрес начала слова
        push    si
        push    cx
        mov     si,     di
        mov     cx,     dx
        call    IsPalindrome    ;проверка слова на принадлежность к палиндромам
        pop     cx
        pop     si
        cmp     al,     0
        je      @@Next
        ;если выделенное слово - палиндром, то сделать его буквы прописными
        push    si
        push    cx
        mov     cx,     dx
        mov     si,     di
        call    UpCase
        pop     cx
        pop     si
 
@@Next:
        jcxz    @@Finish
        jmp     @@WhileDelimiter
 
@@Finish:
 
        ;вывод результатов
        ; - на экран
        mov     ah,     40h
        mov     bx,     1
        mov     cx,     [StrLen]
        lea     dx,     [String]
        int     21h
        mov     ah,     09h
        lea     dx,     [CrLf]
        int     21h
        ; - в файл
        ; - открытие файла
        mov     ah,     3Ch
        lea     dx,     [OutFileName]
        mov     cx,     0
        int     21h
        jnc     @@OutFileOpenOk
        mov     ah,     09h
        lea     dx,     [errFileOpen]
        int     21h
        jmp     @@Exit
@@OutFileOpenOk:
        mov     [OutFileHandler],       ax
        ; - записать в файл
        mov     ah,     40h
        mov     bx,     [OutFileHandler]
        lea     dx,     [String]
        mov     cx,     [StrLen]
        int     21h
        jnc     @@OutFileReadOk
        mov     ah,     09h
        lea     dx,     [errFileRead]
        int     21h
        jmp     @@Exit
@@OutFileReadOk:
        mov     [StrLen],       ax
        ; - закрытие файла
        mov     ah,     3Eh
        mov     bx,     [OutFileHandler]
        int     21h
        jnc     @@OutFileCloseOk
        mov     ah,     09h
        lea     dx,     [errFileClose]
        int     21h
@@OutFileCloseOk:
 
@@Exit:
        mov     ax,     4C00h
        int     21h
main    endp
 
end     main
tasm + tlink
1
0 / 0 / 0
Регистрация: 12.12.2017
Сообщений: 24
11.12.2018, 17:37  [ТС]
я так понимаю через emu8086 данный код не будет работать?
0
Модератор
Эксперт по электронике
 Аватар для ФедосеевПавел
8655 / 4490 / 1669
Регистрация: 01.02.2015
Сообщений: 13,898
Записей в блоге: 12
14.12.2018, 18:35
Скорее всего - нет.
1. Т.к. у меня нет emu8086, то проверить не могу.
2. об этом emu8086 нигде не было раньше.
3. Т.к. в отличии от меня вы учили этот emu8086, то можете всё переделать.
4. У меня нет времени ни на что. Так что с таким шикарным подарком (моим идеальным кодом) - разбираться вам. Ии сдавайте так.
0
0 / 0 / 0
Регистрация: 12.12.2017
Сообщений: 24
15.12.2018, 20:35  [ТС]
Разобрался и подогнал под emu8086,спасибо большое!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
15.12.2018, 20:35
Помогаю со студенческими работами здесь

Заменить в текстовом файле все прописные латинские буквы на строчные, а все малые - на прописные
Дано имя файла и целые положительные числа N и K. Создать текстовый файл с указанным именем и записать в него N строк, каждая из которых...

Поменять в исходном файле буквы слов местами
Программа должна быть на писана на языке Assembler. С комментариями. Программа должна обрабатывать исходный текстовый файл с...

В файле заменить прописные буквы строчными
Дан символьный файл. Получить файл, образованный из файла заменой всех его прописных (больших) букв одноименными строчными (малыми).

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

В текстовом файле заменить прописные буквы на строчные
Дан символьный файл f. Получите файл g, образованный из файла f заменой всех его прописных букв одноименными строчными.


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru