set; Завантажити адресу елемента проверкіsi, bx; byte ptr [si], '$'; Cравніть елемент з ознакою кінця ; Відновлення регістрів
; ******** Зрушення рядка вправо ****************************** ******* macro ofset
pushreg
mov bx, ofset; З якого елемента сдвігатьbxdi, MyString; Адреса зрушуваної рядка
mov si, di; di; ch, ch; cl, byte ptr [si]; Завантаження довжини рядка
inc cx; byte ptr [si], cl; Збільшуємо довжину рядка, т.к.сдвінем її
; вправоdi, cx; Обчислюємо нові значення DI і SIsi, cx; cx, bx; Обчислюємо кол-во зсуваються сімволовds; Cовмещеніе сегментах регістровes; DS і ESmovsb; Зрушення рядка ;
; ****** Приведення всіх слів до одного "розміром" *********************
ToOneSize macrotos0, tos1, tos2, tos3, tosend si, MyString; Завантаження строкіdh, byte ptr [si]; Довжина рядка
inc si; di, si; рядок-пріемнікdl, R0; в R0-max довжина слова: cx, cx; Очищення CXcl; поправка: cl; рахуємо кол-во букв у текущ.слове;; завантажуємо в AL поточний сімволdh; відстежуємо кінець предложеніяtosend; якщо кінець предлож-я то виходcl, dl; якщо довжина слова не дорівнює max длінеTOS2; то вставляємо символи ',' cl, cl; інакше пропускаемsi; і продовжуємо перегляд дальшеTOS1;: al, ' , '; якщо не кінець словаTOS1; то довжина текущ.слова є MAX і тоді
; продовжуємо просмотрbx, si; Обчислюємо зсув звідки будемbx, di; зрушувати строкуch, dl; Обчислюємо кількість зрушень
sub ch, cl; ch, cl;
xor ch, ch; si, cx; І нове значення SI-покажчик на рядок: ShiftRight bx; зсуваємо СХ раз зі зміщений. ВХTOS3; TOS0:
EndM
; ****** Пошук слова з максимальною довжиною ***************************
FindMaxLen macroStart, End, MaxOrNo, No
lea si, MyString; Завантаження оброблюваної строкіcl, [si]; Кількість символів
xor ch, ch; bx, bx;
inc si;;:; Шукаємо перший словоal, '$'; Якщо кінець предложеніяMaxOrNo; іліal, ','; кінець словаMaxOrNo; то перевіряємо на MAX длінуbl; інакше інкремінтіруем кількість літер в словеStart; продовжуємо поки не кінець предложеніяEnd;: bl, bh; порівнюємо на MAX длінуNo; якщо текущ.дліна більше ніж MAX'аяbh, bl; то MAX = текущ.: bl, bl; інакше очищаємо лічильник буквStart; і продовжуємо: R0, bh; Розміщуємо в R0 MAX значеніеR0, 05h; Додаємо до Max значенням 5 ( 2 дужки і 3
; цифри)
EndM
; ****** Видалення "зайвих" знаків пунктуації ************************** p>