Форум программистов, компьютерный форум, киберфорум
Assembler для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/8: Рейтинг темы: голосов - 8, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 08.12.2016
Сообщений: 12
1
TASM

Определить, каких букв русского алфавита нет в строке

06.06.2018, 22:21. Показов 1493. Ответов 16
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте, помогите пожалуйста!

Нужно определить каких букв русского алфавита нет в строке!
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.06.2018, 22:21
Ответы с готовыми решениями:

Определить номер столбца, в котором больше всего букв латинского алфавита
Нужна помощь, задача такова: Определить номер столбца, в котором больше всего букв латинского...

Вывод русского алфавита
Здраствуйте. Нужна помощь по написанию программы для вывода русского алфавита прямым ходом. Причем...

Определить, каких букв в тексте больше: гласных или согласных, и подсчитать их количество
определить, каких букв в тексте больше, гласных, или согласных и подсчитать их количество

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

16
Модератор
Эксперт по электронике
8518 / 4372 / 1648
Регистрация: 01.02.2015
Сообщений: 13,583
Записей в блоге: 9
07.06.2018, 09:02 2
Лучший ответ Сообщение было отмечено Vlados007 как решение

Решение

Перевод в кодировку cp866 самостоятельно найдёте в интернете
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
.model small
 
.stack 100h
 
.data
        CrLf            db      0Dh, 0Ah, '$'
        msgPressAnyKey  db      0Dh, 0Ah, 'Press any key to exit...', '$'
        asResult        db      'Absent: ', '$'
        Cyrillic        db      'АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЬЫЪЭЮЯ'
                        db      'абвгдеёжзийклмнопрстуфхцчшщьыъэюя'
        CyrAmount       dw      $-Cyrillic
 
        Freq            db      256 dup(0)
 
        String          db      'Нужно определить каких букв русского алфавита нет в строке!'
        StrLen          dw      $-String
.code
 
main    proc
        ;инициализация сегментного регистра ds адресом сегмента данных
        mov     ax,     @data
        mov     ds,     ax
        mov     es,     ax
        ;Freq[i]:=0
        push    es
        mov     ax,     ds
        mov     es,     ax
        cld
        mov     cx,     256/2
        mov     ax,     0
        lea     di,     [Freq]
        rep     stosw
        pop     es
        ;
        lea     si,     [String]
        lea     di,     [Freq]
        mov     cx,     [StrLen]
        xor     bx,     bx
        @@ResearcFor:
                mov     bl,     [si]
                inc     si
                inc     byte ptr [di+bx]
        loop    @@ResearcFor
        ;вывод результатов
        mov     ah,     09h
        lea     dx,     [asResult]
        int     21h
        mov     cx,     [CyrAmount]
        lea     si,     [Cyrillic]
        lea     bx,     [Freq]
        @@ResultFor:
                lodsb
                mov     ah,     al
                xlat
                or      al,     al
                jnz     @@ResultNext
                mov     al,     ah
                int     29h
        @@ResultNext:
        loop    @@ResultFor
        mov     ah,     09h
        lea     dx,     [CrLf]
        int     21h
 
        ;ожидание нажатия любой клавиши
        mov     ah,     09h
        lea     dx,     [msgPressAnyKey]
        int     21h
 
        mov     ah,     00h
        int     16h
 
        mov     ax,     4C00h
        int     21h
main    endp
 
end     main
0
0 / 0 / 0
Регистрация: 08.12.2016
Сообщений: 12
07.06.2018, 13:44  [ТС] 3
Спасибо Вам огромное!!!
0
0 / 0 / 0
Регистрация: 08.12.2016
Сообщений: 12
12.06.2018, 19:24  [ТС] 4
Здравствуйте, можете как-то кратко прокомментировать данную программу для моего лучшего понимания этого языка.
Этот код выводит на экран буквы русского алфавита, которые отсутствуют в строке:
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
.model small
 
.stack 100h
 
.data
        CrLf            db      0Dh, 0Ah, '$'
        msgPressAnyKey  db      0Dh, 0Ah, 'Press any key to exit...', '$'
        asResult        db      'Absent: ', '$'
        Cyrillic        db      'АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЬЫЪЭЮЯ'
                        db      'абвгдеёжзийклмнопрстуфхцчшщьыъэюя'
        CyrAmount       dw      $-Cyrillic
 
        Freq            db      256 dup(0)
 
        String          db      'Нужно определить каких букв русского алфавита нет в строке!'
        StrLen          dw      $-String
.code
 
main    proc
        ;инициализация сегментного регистра ds адресом сегмента данных
        mov     ax,     @data
        mov     ds,     ax
        mov     es,     ax
        ;Freq[i]:=0
        push    es
        mov     ax,     ds
        mov     es,     ax
        cld
        mov     cx,     256/2
        mov     ax,     0
        lea     di,     [Freq]
        rep     stosw
        pop     es
        ;
        lea     si,     [String]
        lea     di,     [Freq]
        mov     cx,     [StrLen]
        xor     bx,     bx
        @@ResearcFor:
                mov     bl,     [si]
                inc     si
                inc     byte ptr [di+bx]
        loop    @@ResearcFor
        ;вывод результатов
        mov     ah,     09h
        lea     dx,     [asResult]
        int     21h
        mov     cx,     [CyrAmount]
        lea     si,     [Cyrillic]
        lea     bx,     [Freq]
        @@ResultFor:
                lodsb
                mov     ah,     al
                xlat
                or      al,     al
                jnz     @@ResultNext
                mov     al,     ah
                int     29h
        @@ResultNext:
        loop    @@ResultFor
        mov     ah,     09h
        lea     dx,     [CrLf]
        int     21h
 
        ;ожидание нажатия любой клавиши
        mov     ah,     09h
        lea     dx,     [msgPressAnyKey]
        int     21h
 
        mov     ah,     00h
        int     16h
 
        mov     ax,     4C00h
        int     21h
main    endp
 
end     main
0
Модератор
Эксперт по электронике
8518 / 4372 / 1648
Регистрация: 01.02.2015
Сообщений: 13,583
Записей в блоге: 9
12.06.2018, 19:51 5
Для вашего лучшего понимания языка комментируете весь код (80 строк) самостоятельно по учебнику. Особое внимание обратите на неявные (по умолчанию) параметры строковых инструкций.

Можете не пользоваться учебником - набираете в поисковике "assembler mov" и так для каждой команды.
Для лучшего понимания алгоритма - решаете на любом известном языке программирования и ищете аналогии в моём коде.
0
0 / 0 / 0
Регистрация: 08.12.2016
Сообщений: 12
12.06.2018, 20:01  [ТС] 6
Я так и делаю, но я не могу понять цикл вывода результатов.
0
Модератор
Эксперт по электронике
8518 / 4372 / 1648
Регистрация: 01.02.2015
Сообщений: 13,583
Записей в блоге: 9
12.06.2018, 20:02 7
Какие циклы?
0
0 / 0 / 0
Регистрация: 08.12.2016
Сообщений: 12
12.06.2018, 20:05  [ТС] 8
Вот-этот фрагмент кода
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
;вывод результатов
        mov     ah,     09h
        lea     dx,     [asResult]
        int     21h
        mov     cx,     [CyrAmount]
        lea     si,     [Cyrillic]
        lea     bx,     [Freq]
        @@ResultFor:
                lodsb
                mov     ah,     al
                xlat
                or      al,     al
                jnz     @@ResultNext
                mov     al,     ah
                int     29h
        @@ResultNext:
        loop    @@ResultFor
        mov     ah,     09h
        lea     dx,     [CrLf]
        int     21h
0
Модератор
Эксперт по электронике
8518 / 4372 / 1648
Регистрация: 01.02.2015
Сообщений: 13,583
Записей в блоге: 9
12.06.2018, 20:10 9
Код
for (i=0; i<CyrAmount; i++)
  if (Freq[ Cyrillic[i] ] == 0)
    putc(Cyrillic[i]);
0
0 / 0 / 0
Регистрация: 08.12.2016
Сообщений: 12
12.06.2018, 20:22  [ТС] 10
Не понял...
Можете словами описать цикл @@ResultFor???
0
Модератор
Эксперт по электронике
8518 / 4372 / 1648
Регистрация: 01.02.2015
Сообщений: 13,583
Записей в блоге: 9
12.06.2018, 20:27 11
Вот именно то, что я написал на C-подобном языке.
Какой язык вам знаком?
0
0 / 0 / 0
Регистрация: 08.12.2016
Сообщений: 12
12.06.2018, 20:39  [ТС] 12
С++/С#
0
Модератор
Эксперт по электронике
8518 / 4372 / 1648
Регистрация: 01.02.2015
Сообщений: 13,583
Записей в блоге: 9
12.06.2018, 20:50 13
Тогда всё должно быть понятно.
Перед набором исходника я примерно так и записал алгоритм на листе бумаги.
0
0 / 0 / 0
Регистрация: 08.12.2016
Сообщений: 12
12.06.2018, 20:51  [ТС] 14
Ясно...
0
Модератор
Эксперт по электронике
8518 / 4372 / 1648
Регистрация: 01.02.2015
Сообщений: 13,583
Записей в блоге: 9
12.06.2018, 20:54 15
Для понимания алгоритма - решите эту задачу на C++ без использования методов и прочего ООП и штатных библиотек.

Добавлено через 1 минуту
Исходная проблема - не в ассемблере, а в непонимании алгоритма.
Решите задачу, прочувствуйте алгоритм.
0
0 / 0 / 0
Регистрация: 08.12.2016
Сообщений: 12
12.06.2018, 21:02  [ТС] 16
То-есть здесь берется первый символ алфавита, сравнивается с каждым символом строки и если нет совпадения, символ алфавита выводится на экран и цикл начинается сначала?!
0
Модератор
Эксперт по электронике
8518 / 4372 / 1648
Регистрация: 01.02.2015
Сообщений: 13,583
Записей в блоге: 9
12.06.2018, 21:18 17
Зачем гадать - попробуйте решить на C++.
Отладьте и опубликуйте это решение.
0
12.06.2018, 21:18
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.06.2018, 21:18
Помогаю со студенческими работами здесь

Определить, каких гласных букв нет в строке
Задание на тему строки: Входные данные: 5a; Суть задания: каких гласных букв...

Определить, каких гласных букв нет в заданной строке
Нужно задать строку из букв, цифр и так далее и сделать так, чтобы программа вывела на экран каких...

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

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


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

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