0 / 0 / 0
Регистрация: 12.10.2017
Сообщений: 13
1

[emu8086] Удаление и замена символов в строке

12.10.2017, 06:15. Показов 5012. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Распечатать введённую строку, удалив из неё символы, не являющихся буквами и цифрами, и заменив каждую цифру на **. Заранее спасибо. Совсем не смыслю в ассемблере.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.10.2017, 06:15
Ответы с готовыми решениями:

Операции в строке: поиск, замена, удаление символа в строке
Доброго здравия! В ассемблере совсем новичок, поэтому прошу помощи. Программа должна получать...

Замена символов в строке
В общем задача - заменить все точки в двух строках на восклицательные знаки. Пробую это сделать...

Нахождение, замена и удаление символа в строке
В памяти находится строка символов по адресу А1 и длиной N. Проверьте, встречается ли в строке...

[masm32] Замена символов в строке
Суть программы, заменить один символ на другой. Оба вводятся с консоли. Ну и искомая строка...

5
Модератор
Эксперт по электронике
8340 / 4234 / 1605
Регистрация: 01.02.2015
Сообщений: 13,185
Записей в блоге: 5
12.10.2017, 22:42 2
Лучший ответ Сообщение было отмечено Orynbasar как решение

Решение

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
@stack  segment para stack
        db      1024 dup(?)
@stack  ends
 
@data   segment
        CrLf    db      0Dh, 0Ah, '$'
 
        String  db      50, 0, 50 dup(?)
        Prompt  db      'Enter a string:', 0Dh, 0Ah, '$'
        Message db      'Result:', 0Dh, 0Ah, '$'
@data   ends
 
@code   segment
        assume  cs:@code, ds:@data, ss:@stack
main    proc
        ;инициализация сегментного регистра данных
        mov     ax,     @data
        mov     ds,     ax
 
        mov     ah,     09h
        lea     dx,     [Prompt]
        int     21h
        mov     ah,     0Ah
        lea     dx,     [String]
        int     21h
        mov     ah,     09h
        lea     dx,     [CrLf]
        int     21h
 
        mov     ah,     09h
        lea     dx,     [Message]
        int     21h
        mov     cx,     0
        mov     cl,     [String+1]
        lea     si,     [String+2]
@@For:
        lodsb
        cmp     al,     '0'
        jb      @@IsAlpha
        cmp     al,     '9'
        ja      @@IsAlpha
        push    cx
        mov     ah,     02h
        mov     dl,     '*'
        int     21h
        int     21h
        pop     cx
        jmp     @@Next
@@IsAlpha:
        cmp     al,     'A'
        jb      @@Next
        cmp     al,     'Z'
        jbe     @@ShowChar
        cmp     al,     'a'
        jb      @@Next
        cmp     al,     'z'
        jbe     @@ShowChar
        jmp     @@Next
@@ShowChar:
        push    cx
        mov     ah,     02h
        mov     dl,     al
        int     21h
        pop     cx
@@Next:
        loop    @@For
        ;завершение программы
        mov     ax,     4C00h
        int 21h
main    endp
@code   ends
 
        end     main
1
Прощай, Мир!
1672 / 830 / 253
Регистрация: 26.05.2012
Сообщений: 3,056
13.10.2017, 00:26 3
Цитата Сообщение от ФедосеевПавел Посмотреть сообщение
jbe @@ShowChar
jmp @@Next
ФедосеевПавел, а зачем здесь спагетти-код!? может проще..
Assembler
1
ja @@Next
0
Модератор
Эксперт по электронике
8340 / 4234 / 1605
Регистрация: 01.02.2015
Сообщений: 13,185
Записей в блоге: 5
13.10.2017, 00:30 4
Нет, не проще. Я сначала хотел добавить обработку кириллицы, а потом отказался. Если вдруг приспичит - будет легче добавить.
0
Прощай, Мир!
1672 / 830 / 253
Регистрация: 26.05.2012
Сообщений: 3,056
13.10.2017, 00:48 5
Цитата Сообщение от ФедосеевПавел Посмотреть сообщение
Я сначала хотел
хотеть не вредно - вредно не хотеть..
Цитата Сообщение от ФедосеевПавел Посмотреть сообщение
loop @@For
@@IsAlpha:
ФедосеевПавел, признайтесь ваша программа будет выводить полнейший мусор, если строка будет состоять из одних цифр или последним символом строки будет цифра.. после того как пройдут все циклы вывода двух звездочек вместо цифры, регистр cx станет равным нулю.. в регисте al будет ASCII-код последнего выведенного символа, а последним будет полюбому символ звездочки, т.к. строка содержит только цифры и все они заменяются.. ASCII-код символа звездочки 2Ah. далее произойдет провал в пропасть.. будет происходить сравнение кода звездочки с ASCII-кодом латинской прописной буквы A.. код звездочки конечно же окажется меньше.. регистр cx пометиться максимальное значение.. и все по новой.. хороша песня - начинай сначала..
2
Модератор
Эксперт по электронике
8340 / 4234 / 1605
Регистрация: 01.02.2015
Сообщений: 13,185
Записей в блоге: 5
13.10.2017, 07:29 6
Исправил.
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.10.2017, 07:29
Помогаю со студенческими работами здесь

Макросы: Замена символов в строке
Помогите, пожалуйста, с задачей. Задача на макросы: Преобразовать строку, заменив все «:» запятыми,...

Замена символов в строке и математические действия
Всем привет. Нужна срочно помощь, никак не получается написать программу. Задание такое: 1)...

Замена символов в строке и вывод звукового сигнала
В памяти дана строка символов, находящаяся по адресу А1 и длиной N. Проверьте, встречается ли в...

Удаление одинаковых символов в строке
В общем задача такая. Необходимо создать программу, которая вводит цифры в строку через пробел и...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru