Вопрос № 179055: Доброго времени суток, уважаемые эксперты! Помогите, пожалуйста с такой задачей: Определить число вхождений указанного символа в заданную строку. Задача по теме "Прерывания". Решение нужно для ТАСМ. В правилах задания вопроса...
Вопрос № 179055:
Доброго времени суток, уважаемые эксперты! Помогите, пожалуйста с такой задачей: Определить число вхождений указанного символа в заданную строку. Задача по теме "Прерывания". Решение нужно для ТАСМ. В правилах задания вопроса сказано, что желательно указывать методичку или что-то подобное... У нас такой "методичкой" является учебник В.Юрова.
lea dx, sSymbol ;приглашение ввести символ mov ah, 9 int 21h
mov ah, 1 ;вводим в al символ int 21h
;ищем и считаем вхождения символа в строку xor si, si ;число вхождений mov cx, si mov cl, count ;длина строки lea di, string ;адрес строки sca_loop: jcxz output ;если длина = 0, то не ищем repne scasb ;ищем, пока неравно jne output ;если будет не равно, то значит дошли до конца inc si ;равно - считаем jmp sca_loop ;продолжаем
output: ;выводим
результат lea dx, sCount ;строка 'Count = ' mov ah, 9 int 21h
;выведем десятичное число mov ax, si ;число xor cx, cx ;количество цифр mov bx, 10 ;будем делить на 10 div_loop: xor dx, dx ;подготавливаемся к делению div bx ;dx:ax / bx push dx ;сохраним остаток - очередную младшую цифру inc cx ;считаем цифры test ax, ax ;есть еще? jnz div_loop out_loop: ;
выводим в обратном порядке pop dx ;извлечем из стека or dl, '0' ;превратим в символ mov ah, 2 int 21h ;выводим loop out_loop ;по всем
lea dx, sAny ;выводим 'Press any key' mov ah, 9 int 21h
mov ah, 8 ;ждем нажатия int 21h
mov ax, 4c00h ;завершаемся int 21h
end
----- Удачи!
Ответ отправил: Лысков Игорь Витальевич, Старший модератор
Ответ отправлен: 14.06.2010, 15:23
Номер ответа: 262103 Украина, Кировоград Тел.: +380957525051 ICQ # 234137952 Mail.ru-агент: igorlyskov@mail.ru Абонент Skype: igorlyskov
Вам помог ответ? Пожалуйста, поблагодарите эксперта за это! Как сказать этому эксперту "спасибо"?
Отправить SMS#thank 262103
на номер 1151 (Россия) |
Еще номера »
Оценить выпуск »
Нам очень важно Ваше мнение об этом выпуске рассылки!
* Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи.
(полный список тарифов)
** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
*** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.