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

Подсчитать сколько раз в строке встречается заданная буква

27.12.2016, 12:30. Показов 5493. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Нашел код тут на форуме скоммпилировал в tasm выводит не понятно, что, а долно выводить количество заданых букв в тексте.
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
.model tiny
.code
.386
org 100h
start:
    mov ah,10   ;ввод строки
    lea dx,strBig
    int 21h
 
    mov ah,2    ;перевод строки
    mov dl,10
    int 21h
 
    xor bx,bx   ;очистить счетчик
    xor cx,cx
    mov cl,[len]    ;длина строки
    lea di,str  ;на строку
    mov al,'c'  ;символ, который надо подсчитать
m1:
    repne scasb ;искать символ в строке
    jnz short exit  ;символ не найден, выход
m2:         ;найден
    inc bl      ;увеличить счетчик на 1
    test cx,cx  ;если СХ не 0, в строке есть символы,
    jnz short m1    ; продолжить поиск
 
exit:
;----------Вывод на экран---------
    mov ax,bx
;вывод на экран
    xor     cx, cx
    mov     bx, 10 ; основание сс. 10 для десятеричной и т.п.
oi2:
    xor     dx,dx
    div     bx
; Делим число на основание сс. В остатке получается последняя цифра.
; Сразу выводить её нельзя, поэтому сохраним её в стэке.
    push    dx
    inc     cx
; А с частным повторяем то же самое, отделяя от него очередную
; цифру справа, пока не останется ноль, что значит, что дальше
; слева только нули.
    test    ax, ax
    jnz     oi2
; Теперь приступим к выводу.
    mov     ah, 02h
oi3:
    pop     dx
; Извлекаем очередную цифру, переводим её в символ и выводим.
    add     dl, '0'
    int     21h
; Повторим ровно столько раз, сколько цифр насчитали.
    loop    oi3
;-----------------------------------------
    xor ax,ax   ;ждать нажатия клавиши
    int 16h
 
    ret     ;выход из программы
 
;--------Строка-----------
strBig db 41    ;40 символов
len db ?    ;длина
str:        ;строка
 
    end start
Добавлено через 11 минут
При запуске программы выводит сразу 1 и потом при вводе символов выводить числа "1044" и т.д.
0
Лучшие ответы (1)
27.12.2016, 12:30
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
27.12.2016, 12:30
Ответы с готовыми решениями:

Подсчитать, сколько раз в строке встречается символы x, y, z
В памяти дана строка символов находящаяся по адресу A1 и длиной N. Подсчитать сколько раз встречается символы x y z. Результат записить в...

Подсчитать, сколько раз встречается в данной строке указанный символ
При построении выводится Warning: No stack При запуске программы выводит только единицы. В чем ошибка? запускал в TASM. .model...

Строка: Подсчитать, сколько раз встречается в данной строке указанный символ
Здравствуйте, у меня тут такие задачи надо решить. Я новичок, и не очень понимаю всю суть программы.Помогите решить 2 задачки: 1. Целое...

8
1718 / 567 / 187
Регистрация: 12.03.2016
Сообщений: 2,169
27.12.2016, 12:40 2
Не знаю, у меня все работает, подпилить немного пришлось.

Подсчитать сколько раз в строке встречается заданная буква
0
2 / 2 / 0
Регистрация: 18.12.2016
Сообщений: 61
27.12.2016, 12:44  [ТС] 3
А в чем ты компилировал? И как подпилил код?
0
1718 / 567 / 187
Регистрация: 12.03.2016
Сообщений: 2,169
27.12.2016, 12:50 4
ml.exe 14.asm /AT
(masm под 16 разрядную, AT обязательно большие, для создания файла с расширением com).

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
.model tiny
.code
.386
org 100h
start:
    mov ah,10   ;ввод строки
    lea dx,strBig
    int 21h
 
    mov ah,2    ;перевод строки
    mov dl,10
    int 21h
 
    xor bx,bx   ;очистить счетчик
    xor cx,cx
    mov cl,[len+1]    ;длина строки
    lea di,strBig  ;на строку
    mov al,'c'  ;символ, который надо подсчитать
m1:
    repne scasb ;искать символ в строке
    jnz short exit  ;символ не найден, выход
m2:         ;найден
    inc bl      ;увеличить счетчик на 1
    test cx,cx  ;если СХ не 0, в строке есть символы,
    jnz short m1    ; продолжить поиск
 
exit:
;----------Вывод на экран---------
    mov ax,bx
;вывод на экран
    xor     cx, cx
    mov     bx, 10 ; основание сс. 10 для десятеричной и т.п.
oi2:
    xor     dx,dx
    div     bx
; Делим число на основание сс. В остатке получается последняя цифра.
; Сразу выводить её нельзя, поэтому сохраним её в стэке.
    push    dx
    inc     cx
; А с частным повторяем то же самое, отделяя от него очередную
; цифру справа, пока не останется ноль, что значит, что дальше
; слева только нули.
    test    ax, ax
    jnz     oi2
; Теперь приступим к выводу.
    mov     ah, 02h
oi3:
    pop     dx
; Извлекаем очередную цифру, переводим её в символ и выводим.
    add     dl, '0'
    int     21h
; Повторим ровно столько раз, сколько цифр насчитали.
    loop    oi3
;-----------------------------------------
    xor ax,ax   ;ждать нажатия клавиши
    int 16h
 
    ret     ;выход из программы
 
;--------Строка-----------
strBig db 41    ;40 символов
len db ?    ;длина
;str:        ;строка
 
    end start
0
2 / 2 / 0
Регистрация: 18.12.2016
Сообщений: 61
27.12.2016, 13:09  [ТС] 5
А как переделать код, чтобы он работал на тасм?
0
1718 / 567 / 187
Регистрация: 12.03.2016
Сообщений: 2,169
27.12.2016, 13:46 6
Цитата Сообщение от Croix Посмотреть сообщение
как переделать код, чтобы он работал на тасм?
Он и под Tasm собирается и работает, просто мануалы читать надо, да и на форуме найдете.
0
2 / 2 / 0
Регистрация: 18.12.2016
Сообщений: 61
27.12.2016, 14:21  [ТС] 7
Собирается и работает, но выводит не то что нужно. Как сделать, чтобы картинка сразу отображалась, а не ссылкой?

Добавлено через 7 минут
Вот что выводит.
Миниатюры
Подсчитать сколько раз в строке встречается заданная буква  
0
1718 / 567 / 187
Регистрация: 12.03.2016
Сообщений: 2,169
27.12.2016, 14:26 8
Лучший ответ Сообщение было отмечено Croix как решение

Решение

Что же все так плохо?

Подсчитать сколько раз в строке встречается заданная буква

Обратите внимание на строку 18
2
2 / 2 / 0
Регистрация: 18.12.2016
Сообщений: 61
27.12.2016, 14:43  [ТС] 9
А ну так Вы запускаете файл .com, а я .exe я вот скомпилил как Вы и все работает.

Добавлено через 3 минуты
Спасибо
0
27.12.2016, 14:43
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
27.12.2016, 14:43
Помогаю со студенческими работами здесь

Определить сколько раз в строке встречается данный символ. Строку вводить с клавиатуры
use16 org 100h jmp start s1 rb 53 endline db 10,13,$ count db 0 s2 rb 10 s db ' $' start:

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

Подсчитать, сколько раз среди символов встречается буква "х"
Даны натуральное число n, символы S1,...,Sn. Подсчитать, сколько раз среди данных символов встречается буква 'х'. Строку символов ввести с...

Дана строка. Посчитать, сколько раз в ней встречается буква “b”
Дана строка. Посчитать, сколько раз в ней встречается буква “b”. Вывести на экран исходную строку и полученный результат.

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


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

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

Редактор формул (кликните на картинку в правом углу, чтобы закрыть)
Опции темы

Новые блоги и статьи
Рекурсивные типы в Python
stackOverflow 19.02.2025
Рекурсивные типы данных представляют собой особую категорию структур, которые определяются через самих себя или через взаимные ссылки друг на друга. Такие типы играют важнейшую роль при создании. . .
Распознавание улыбки на Python с помощью OpenCV, Keras и TensorFlow
stackOverflow 19.02.2025
Компьютерное зрение и распознавание эмоций становятся все более востребованными технологиями. Они находят применение в самых разных областях - от систем безопасности до пользовательских интерфейсов и. . .
Распознавание капчи на Python с помощью глубокого обучения, Keras и TensorFlow
stackOverflow 19.02.2025
Развитие технологий глубокого обучения и компьютерного зрения создало интересный парадокс - системы, изначально разработанные для защиты от автоматизации, теперь могут быть преодолены с помощью. . .
Анализ тональности на Python
stackOverflow 19.02.2025
Анализ тональности текста (Sentiment Analysis) - одно из наиболее востребованных направлений в обработке естественного языка, которое позволяет автоматически определять эмоциональную окраску. . .
Обнаружение аномалий в машинном обучении на Python
stackOverflow 19.02.2025
Аномалии — это отклонения от ожидаемого поведения системы, которые могут указывать как на потенциальные проблемы, так и на интересные возможности для исследования. В контексте машинного обучения. . .
Введение в представления (views) Django
stackOverflow 19.02.2025
Представления (views) - ключевой элемент веб-фреймворка Django, который отвечает за обработку HTTP-запросов и формирование ответов. Они действуют как посредники между данными приложения и шаблонами,. . .
Что такое шаблоны Django и как с ними работать
stackOverflow 19.02.2025
Шаблоны Django - основополагающий компонент фреймворка Django, который позволяет эффективно разделять логику приложения и его визуальное представление. Это очень важный инструмент для. . .
Какой Python Web-фреймворк лучший: Django, Flask или FastAPI?
stackOverflow 19.02.2025
В разработке под веб Python занимает особое место благодаря своей универсальности и богатой экосистеме. При создании веб-приложений разработчики сталкиваются с важным выбором - какой фреймворк. . .
Использование кэша Laravel - полный гайд
bytestream 18.02.2025
Кэширование - один из наиболее эффективных способов повышения производительности веб-приложений. В современном мире, где скорость загрузки страниц напрямую влияет на удержание пользователей и. . .
Создаем REST API в Laravel с аутентификацией и Passport
bytestream 18.02.2025
Разработка современных веб-приложений все чаще требует создания надежного и хорошо структурированного API. REST API стал стандартом де-факто для построения взаимодействия между клиентской и серверной. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru