![]() |
Модераторы: Poseidon |
![]() ![]() ![]() |
|
volnorez |
|
|||
Новичок Профиль Группа: Участник Сообщений: 32 Регистрация: 22.9.2007 Репутация: нет Всего: нет |
Вот есть такое хитромудрое задание.
Ввести строку из 40 символов разделяя слова пробелами. Найти в данной строке количество символов "N" в самом длинном слове! Компилятор masm, link. |
|||
|
||||
Mikl_ |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 537 Регистрация: 9.11.2007 Репутация: нет Всего: 14 |
volnorez, идея в следующем заводишь две переменные -- одну под адрес слова с максимальной длиной, другую под длину этого слова
1) нацеливаешь di на начало строки, cx=40(максимальная длина строки) al=20h (код пробела) запускаешь команду repne scasb поиск символа пробела при просмотре каждого символа из cx будет вычитаться 1 а к di будет единичка прибавляться. команда остановится на первом встретившемся пробеле, или если в cx ноль. Записываешь в переменную адрес первого слова и 40 минус содержимое CX -- это длина первого слова. Запоминай где нибудь содержимое DI - это адрес начала второго и содержимое CX - это сколько у тебя осталось необработанных символов. Снова запускаешь в цикле repne scasb получаешь адрес третьего слова и длину второго -- сравниваешь с длиной первого слова и если больше то в переменные записываешь адрес второго и длину второго слова и так далее пока в CX ничего не останется. 2) Теперь у тебя есть адрес максимально длинного слова и его длина. Загоняй адрес в DI, длину в CX а в AL код "N" опять repne scasb после каждой остановки увеличиваешь счетчик N на 1. Всё! |
|||
|
||||
volnorez |
|
|||
Новичок Профиль Группа: Участник Сообщений: 32 Регистрация: 22.9.2007 Репутация: нет Всего: нет |
"Записываешь в переменную адрес первого слова и 40 минус содержимое CX -- это длина первого слова. "
Как это написать в коде может кто то сказать? |
|||
|
||||
dumb |
|
|||
![]() sceloglauxalbifacies ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2929 Регистрация: 16.6.2006 Репутация: 6 Всего: 158 |
Для домашних заданий, курсовых, существует "Центр Помощи".
Тема перенесена! |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Центр помощи" | |
|
ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Более подробно с правилами данного раздела Вы можете ознакомится в этой теме. Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Центр помощи | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |