- •Найти количество слов меньше первого.
- •Самое маленькое слово вывести
- •Int 21h ; ввод строки - прерывание дос
- •3. Самое маленькое слово найти.
- •Int 21h ; ввод строки - прерывание дос
- •Int 21h ; ввод строки - прерывание дос
- •Int 21h ; ввод строки - прерывание дос
- •5. Колличество слов в введенной строке.
- •6. Підрахувати кількість слів, коротших ніж останнє
- •7. Количество слов больше первого по длине
- •8. Підрахувати кількість слів праворуч найкоротшого
- •Int 21h ; ввод строки - прерывание дос
- •9. Для вывода слова
- •10. Подсчет колличества букв в слове.
- •11. Колличество слов, больше самого короткого.
- •12. Количество слов после самого короткого
- •13. Підрахувати кількість слів праворуч найбольшего.
11. Колличество слов, больше самого короткого.
;--------- Search max
t4: xor ax,ax
mov si,1
mov Num,si
mov al,mas[si]
dec si
t6: add si,1
cmp al,mas[si]
jl t5
mov Num,si
mov al,mas[si]
t5: cmp bx,si
jne t6
;--------- Search min max
xor cx,cx
mov si,0
t8: inc si
cmp mas[si],al
jle t7
inc cx
t7: cmp bx,si
jne t8
mov ax,Num
mov di,[bp + 10]
mov [di],ax
mov sp,bp
pop bp
ret
Processing endp
code ends
end start
12. Количество слов после самого короткого
mov ch,0 ; старший байт = 0
mov cl,len ; количество байт (символов) для сканирования
lea di,text ; адрес строки
mov al,' ' ; искомый символ
mov dx,di ; начало самого короткого слова
mov min,cx ; длина самого короткого слова
find_space:
mov si,di ; запомнить адрес начала текущего слова
repne scasb ; сканировать пока не равно пробелу
; вычисление длины слова
mov bx,di ; указывает на следующий символ после найденного
sub bx,si ; вычесть адрес начала слова
jz no_min ; перейти если длина=0 (подряд 2 пробела)
cmp cx,0 ; если просканированна вся строка
jz end_str ; перейти на метку
dec bx ; реальная длина слова, т.к. di указывал на символ
; следующий за пробелом
jz no_min ; перейти если длина=0 (подряд 2 пробела)
end_str:
cmp bx,min ; сравнение длины слова (ВХ) с самым коротким
jle no_min ; если длина больше либо равна - то перейти
mov min,bx ; иначе сохранить длину текущего как минимальную
mov count,0
mov dx,si ; запомнить начало самого короткого слова
no_min:
push ax
mov ax,count
inc ax
mov count,ax
pop ax
cmp cx,0 ; если просканированна не вся строка
jnz find_space ; тогда перейти - продолжить сканирование
13. Підрахувати кількість слів праворуч найбольшего.
;--------- Search max
t4: xor ax,ax
mov si,1
mov Num,si
mov al,mas[si]
dec si
t6: add si,1
cmp al,mas[si]
jg t5
mov Num,si
mov al,mas[si]
t5: cmp bx,si
jne t6
;--------- Search min max
xor cx,cx
mov si,Num
t8: inc si
cmp al,mas[si]
jle t7
inc cx
t7: cmp bx,si
jne t8
mov ax,Num
mov di,[bp + 10]
mov [di],ax
mov sp,bp
pop bp
ret
Processing endp
code ends
end start
