рядок, необхідно буде тільки зарезервувати в кінці кожного слова певну кількість байт, в іншому випадку значення довжини слова може затерти наступне слово.
Далі проходячи послідовно по рядку і знаходячи кінець слова вставляти його довжину поки пропозиція не закінчиться.
Розглянемо як реалізується алгоритм перетворення чисельного значення довжини слова в символьний еквівалент.
Одним з можливих варіантів перетворення є табличний перетворення, тобто за значенням регістра R0 ми вибираємо з заздалегідь створеної таблиці необхідний символьний еквівалент, наприклад за допомогою команди XLAT. Однак такий варіант вимагає створення таблиці. Але є у цього варіанту і свої переваги - так наприклад якщо для запису використовувати числа 16-ій або іншої системи числення, де використовуються не тільки символи цифр, то цей варіант більш кращий. p align="justify"> У даній команді (реалізується в макросі WriteLenWords) будемо використовувати числа в 10-й системі, як більш наочні. Перетворення проводиться таким чином:
Якщо наприклад в R0 значення довжини від 0 до 9, то перетворити до символьного еквіваленту досить легко додавши до значення R0 число 4810 або 3016. Тоді ми отримаємо ASCII код числа. Якщо ж у R0 число 2-ох або вище розрядів, то таким чином ми зможемо перетворити тільки одиниці цього числа, але не десятки, сотні і т.д. Отже необхідно "виділити" з цього числа одиниці, десятки, сотні і т.д. (У нашому випадку тільки десятки і сотні, тому що вся рядок складається з 250 символів идля подання найдовшого слова знадобиться тільки 3 знаки). p align="justify"> А тому числа в 10-й системі представляються так:
Xn * 10 ^ N + ... + X2 * 10 ^ 2 + X1 * 10 ^ 1 + X0 * 10 ^ 0 = десяткове число
макрозасобів асемблер алгоритм програма
де Хn - значення числа в N - му розряді
N - розряд
то виділити їх можна шляхом ділення на 1, 10 і 100 тоді кожен раз в залишку отримаємо одиничні розряди Xn. Далі додаючи до них константу 3016 отримаємо необхідний символ. p align="justify"> Тепер розглянемо розробку основного і самого складного алгоритму - сортування. Сортування будемо здійснювати методом "бульбашки". Сама сортування реалізована в макросі Sorting. Однак сам макрос використовує кілька інших більш простих макросів, тобто задачу сортування ми розбили на простіші підзадачі.
Алгоритм сортування можна уявити наступні чином:
While Flag do: = false; i: = 1 to (N-1) doWord [i]> Word [i +1] thenWord [i], Word [i +1];: = true
End;
End.
Де N - число елементів (слів).
Flag - прапор виходу з циклу (якщо все "Пузирки спливли")
Word - елементи рядка (слова).