Форум программистов, компьютерный форум, киберфорум
Assembler для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
 Аватар для BlindFox
5 / 5 / 8
Регистрация: 26.04.2016
Сообщений: 66

Замена одного символа на два

20.09.2017, 08:06. Показов 1060. Ответов 7

Студворк — интернет-сервис помощи студентам
Нужно заменить в строке все символы # на &&. Нужно применять цепочечные команды. После первой замены исходная строка перестает копироваться в результирующую. При исходной строке 123#12345 в результат копируется только 123&&.

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
 data segment para public "data"
 
source db 127 dup('$')
marker  db 127 dup('#')
result db 256 dup('$')
tmp_cx db ?
 
alt_si db 0
first db 1
iter db 0
 
 
data ends
 
code segment para public "code"
 
start:
assume ds:data,cs:code,es:data
mov ax,data
mov ds,ax
mov es,ax
cld
 
prog:
 
mov si,0
mov cx,127
inp:
mov ah, 01h
int 21h
cmp al,0dh
je inp_end
mov source[si], al
inc si
 
loop inp
 
inp_end:
xor bx,bx
mov bx,0
lea si,source
lea di,marker
 
xor cx,cx
 
 
mov cx,127
n1:
repne cmps source,marker
cmp cx,0
je nxt
 
mov tmp_cx,cl
xor cx,cx
mov cl,126
 
sub cl,tmp_cx
lp:
mov al,source[bx]
add bl,iter
mov result[bx],al
sub bl,iter
inc bx
loop lp
 
 
mov result[bx],'&'
inc bx
mov result[bx],'&'
inc iter
mov cl,tmp_cx
inc si
inc di
loop n1
nxt:
 
mov si,0
mov cx,255
outp:
cmp result[si],'$'
;je stp
mov ah,02h
mov dl, result[si]
 
int 21h
inc si
loop outp
stp:
mov AX,4c00h
int 21h
 
code ends
 
end start
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
20.09.2017, 08:06
Ответы с готовыми решениями:

Замена одного символа на два других
Задача такая: Дан текст. Заменить в нем все точки на восклицательные знаки с пробелами(« ! »). И вот не могу решить, потому что один...

Замена одного символа
Доброго времени суток! Необходимо из значения убрать все нули и произвести замену на / Пример: 1) есть значение 26000000139 2)...

Замена одного символа на другой
Всем привет! Имеется таблица, нужно в последнем (6м) столбце проверять, если стоит символ ".," то менять его на "." ...

7
Эксперт Hardware
Эксперт Hardware
 Аватар для R71MT
6213 / 2447 / 403
Регистрация: 29.07.2014
Сообщений: 3,178
Записей в блоге: 4
20.09.2017, 15:41
Цитата Сообщение от BlindFox Посмотреть сообщение
После первой замены исходная строка перестает копироваться
cmpsb сравнивает строки.
если тебе нужен только символ "#", значит поиск символа в строке - scasb.. по окончании которого проверяй СХ, и если он не нуль, то подменив(#) двумя апперсандами(&&) продолжай поиск.
замени cmpsb на scasb..
0
 Аватар для BlindFox
5 / 5 / 8
Регистрация: 26.04.2016
Сообщений: 66
20.09.2017, 17:48  [ТС]
Нужно обязательно использовать цепочечную команду.

С выводом, я собственно, разобрался. Нужно просто добавить еще один цикл копирования.

Но теперь заметил проблему с итерацией элементов при замене, плюс не заменяются символы, идущие подряд.

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
 data segment para public "data"
 
source db 127 dup(' ')
marker  db 127 dup('#')
result db 256 dup(' ')
tmp_cx db ?
 
alt_si db 0
first db 1
iter db 0
num db 126
 
akk dw 0
 
data ends
 
code segment para public "code"
 
start:
assume ds:data,cs:code,es:data
mov ax,data
mov ds,ax
mov es,ax
cld
 
prog:
 
mov si,0
mov cx,127
inp:
 
mov ah, 01h
int 21h
 
cmp al,0dh
je inp_end
 
mov source[si], al
inc si
 
loop inp
 
inp_end:
xor bx,bx
mov bx,0
lea si,source
lea di,marker
 
xor cx,cx
xor dx,dx
mov dx,0
 
mov cx,127
n1:
repne cmps source,marker
cmp cx,0
je nxt
 
 
 
mov tmp_cx,cl
xor cx,cx
mov cl,num
 
 
sub cl,tmp_cx
cmp akk,0
je lp
add cx,akk
lp:
 
mov al,source[bx]
 
add bl,iter
 
mov result[bx],al
sub bl,iter
inc bx
 
loop lp
 
cmp akk,0
je neq
sub bx,akk
 
neq:
mov result[bx],'&'
 
inc bx
 
mov result[bx],'&'
inc iter
cmp akk,0
je neq2
;inc bx
sub bx,akk
;dec iter
neq2:
 mov akk,1
 
 
mov cl,tmp_cx
xor ax,ax
mov al,tmp_cx
mov num,al
 
;inc si
;inc di
 
 
loop n1
nxt:
 
mov si,0
mov cx,255
outp:
cmp result[si],'$'
;je stp
mov ah,02h
mov dl, result[si]
 
int 21h
inc si
loop outp
stp:
mov AX,4c00h
int 21h
 
code ends
 
end start
0
Прощай, Мир!
 Аватар для proc3nt
1673 / 831 / 253
Регистрация: 26.05.2012
Сообщений: 3,056
21.09.2017, 02:53
Цитата Сообщение от BlindFox Посмотреть сообщение
xor bx,bx
mov bx,0
Цитата Сообщение от BlindFox Посмотреть сообщение
xor dx,dx
mov dx,0
если ведро дырявое, то сколько воду в него не лей все равно ведро будет пустое..
0
1617 / 1182 / 553
Регистрация: 08.01.2012
Сообщений: 4,561
21.09.2017, 07:15
Цитата Сообщение от BlindFox Посмотреть сообщение
обязательно использовать цепочечную команду
видимо
Assembler
1
2
    std
rep movsb
0
Эксперт Hardware
Эксперт Hardware
 Аватар для R71MT
6213 / 2447 / 403
Регистрация: 29.07.2014
Сообщений: 3,178
Записей в блоге: 4
21.09.2017, 17:16
а чё, scasb не цепочечная?
0
1617 / 1182 / 553
Регистрация: 08.01.2012
Сообщений: 4,561
21.09.2017, 17:25
я где то это утверждал? или сказано "использовать только одну цепочечную команду"
0
Эксперт Hardware
Эксперт Hardware
 Аватар для R71MT
6213 / 2447 / 403
Регистрация: 29.07.2014
Сообщений: 3,178
Записей в блоге: 4
21.09.2017, 17:46
Цитата Сообщение от BlindFox Посмотреть сообщение
Нужно обязательно использовать цепочечную команду.
....
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
21.09.2017, 17:46
Помогаю со студенческими работами здесь

Замена одного символа на другой
Продолжаю познания работы с текстовыми файлами. Пытаюсь заменить один символ на другой и вывести результат на экран. информация берется из...

Замена одного символа в String
Можно ли в C# воздействовать на отдельные символы строки (string). На следующий код компилятор ругается: string str = "Hello"; ...

Замена одного символа в формуле
Здравствуйте уважаемые! Скажите как поменять один символ в формулах с > на < в 81 одной таблице которые находятся в папках. Ячейки...

Замена одного символа на три
Здравствуйте. Есть задача: "Даны две строки. Заменить на символы *** символы из 1-ой строки, которые встречаются во второй строке. Исходные...

Замена одного символа другим
Допустим есть у меня текст "12345#6" Нужно заменить # на нужный мне символ как такое сделать? Djadkajar, а теперь по подробней...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru