о знати адресу початку слова, завести лічильник кількості букв, а потім, послідовно переглядаючи рядок і інкрементіруем лічильник, шукати ознака кінця слова (розділовий знак). У лічильнику буде знаходитися довжина слова. Наша команда буде виконувати цей алгоритм. p align="justify"> Ми реалізували обов'язкові команди, проте для виконання запропонованого завдання цього буде мало, тому реалізуємо ще кілька команд.
Як описали в постановці завдання всю задачу ми розбили на підзадачі. Розглянемо кожну підзадачу окремо. p align="justify">. Введення рядка. p align="justify"> Введення реалізуємо за допомогою стандартної функції DOS введення пропозицій. Після введення рядка приведемо її до стандартного вигляду гіпотетичної машини. Для цього в кінець пропозиції запишемо символ "$", а в початок - довжину получившейся рядка. p align="justify">. Висновок рядка. p align="justify"> Також реалізуємо за допомогою стандартної функції DOS.
. Обробка рядка. p align="justify"> Ця підзадача є найголовнішою і складною. З ходу її не вирішити, тому ми розбиваємо її на підзадачі. Основними функціями обробки є:
Сортування слів
Видалення зайвих знаків пунктуації
Запис в кінець кожного слова значення його довжини
Завдання видалення зайвих знаків пунктуації та визначення довжини кожного слова не є складними і їх можна реалізувати не розбиваючи їх на підзадачі.
Розглянемо завдання видалення зайвих знаки. Це завдання реалізована макросом DeleteSign. Вирішити завдання можна визначенням розділових знаків і потім "видалення" їх шляхом затирання літерами, наступних за цими знаками. При цьому треба не забувати зменшувати довжину рядка в першому байті рядка. Також потрібно в кінець кожного слова записувати символ коми, тому що це записано в завданні. Реалізувати затирання знаків пунктуації можна пересилаючи байти з літерами на місце байтів з пунктуації. p align="justify"> Таку пересилку можна здійснити застосувавши команду MOVSB ​​стільки разів скільки це необхідно. Т.ч. команда DeleteSign працює за наступним алгоритмом:
Знайти початок першого слова.
Затерти пунктуації наступні перед першим словом.
Знайти наступне слово.
Затерти пунктуації наступні перед цим словом.
Повторювати п.4 поки не кінець пропозиції.
Команду вставки в кінець слова значення його довжини також досить просто реалізувати. Невелику складність являє собою перетворення чисельного значення довжини слова в символьний еквівалент. У випадку якщо ми зможемо це зробити, то вставку цього символьного еквівалента можна буде здійснити шляхом безпосереднього запису відповідних символів у ...