й і наступні байти - сама рядок.
Останній байт - символ "$" як ознака кінця пропозиції.
Рядок складається максимум з 250 символів.
Не менш важливим є організація трьох регістрів загального призначення.
Їх можна визначити в сегменті даних як якісь змінні розміром 8 біт, тобто один байт. Слід зазначити, що ці регістри будуть використовуватися в командах гіпотетичної машини. Так дуже інтенсивно використовується регістр R0. Наприклад в нього буде заноситися максимальна довжина слова, також він буде використовуватися в інших цілях.
Також необхідно створити три обов'язкові команди, проте їх буде не достатньо для вирішення поставленого завдання. Далі створимо ще кілька команд для вирішення поставленого завдання. p align="justify"> Завдання поставлене і обумовлені важливі моменти. Тепер можна перейти до розробки алгоритму. br/>
2. Розробка алгоритму
Для початку реалізуємо 3-и обов'язкові команди.
. Порівняти 2-е символьні рядки. Макрос CompareWords String1, String2. p align="justify"> Реалізувати її можна за допомогою команди CMPS (Порівняння двох ланцюжків), яка по суті виконує задану команду. Залишається тільки визначити адреси порівнюваних елементів і їх довжину, що не представляє праці. p align="justify"> Адреси визначимо за допомогою завантаження в регістр SI ефективного адреси рядки і додатком до нього зміщення відносно початку рядка. Це буде адреса першого слова. Аналогічно завантажимо в DI адресу другого слова. p align="justify"> Т.к. ми порівнюємо ланцюжок байт, то будемо використовувати команду CMPSB.
Далі залишається перевірити прапори стандартним чином і перейти на відповідну мітку.
. Обмін двох символьних рядків. Макрос ChangeWords String1, String2. p align="justify"> Обмін в даному макросі реалізований за допомогою команди XCHG, яка обмінює 2-а операнда (у нашому випадку байти). Так як нам необхідно обміняти символьні рядки, то природно треба зробити обмін N байтів, де N - довжина рядків. У даній гіпотетичної машині число N буде братися з регістра R0. Після визначення адрес String1, String2 (визначення адрес рядків тут і далі будемо здійснювати аналогічно описаному в попередній команді), числа обмінюваних символів приступаємо безпосередньо до обміну шляхом зациклення команди XCHG на R0 разів. Вибір R0 не означає, що нам доведеться щоразу записувати туди значення довжини, просто команда визначення довжини слова буде записувати в цей регістр значення довжини. Тому зручно використовувати команду обміну після команди визначення довжини слова, яка буде описана нижче. p align="justify">. Визначення довжини слова. Макрос WriteLenWords. p align="justify"> Визначити довжину слова у не складає труднощів для цього необхідн...