Для выполнения этой работы следует переписать с дискеты исходный листинг программы “LABN5.ASM”. В сегмент данных вписать свои переменные и их значения. В сегмент кодов в процедуру MAIN ввести операторы, выполняющие действия, соответствующие индивидуальному заданию.
Ниже приведен пример решения следующий задачи: задано некоторое предложение, состоящее из слов, которое разделяются хотя бы одним пробелом, либо запятой и хотя бы одним пробелом, либо тире и хотя бы одним пробелом, либо двоеточием и хотя бы одним пробелом. После последнего слова стоит точка, либо восклицательный знак, либо вопросительный знак. Напечатать все слова, начинающиеся с некоторого заданного символа, а также их номера в предложении.
Примечания. Заглавная и прописная буква считаются разными символами.
Длина предложения не более 100 символов.
Длина слова не более 20 символов.
Например:
В лесу родилась елочка, в лесу она росла.
Символ – р.
Результат:
родилась – номер слова 3
росла - номер слова 8
В программе будут использованы следующие процедуры: процедура поиска начала слова BEG_WORD, процедура поиска конца слова END_WORD, процедура заполнения некоторого поля пробелами CLEAR-POLE. Для ввода предложения с клавиатуры используется процедура READ_KEYS.
Для защиты лабораторной работы необходимо знать строковые команды и все процедуры, использованные в данной лабораторной работе.
inc BX ; переход на следующий символ после последнего в слове
mov AL,[BX]
cmp AL,'?' ; сравнение символа с '?' либо '!' либо '.'
je KONBW ; конец предложения
cmp AL,'!'
je KONBW
cmp AL,'.'
je KONBW
cmp AL,' ' ; сравнение с пробелом
je PROBBW
cmp AL,',' ; сравнение с ,
je GOPROBBW ; если запятая, то проверить наличие далее пробелов
cmp AL,'-' ; сравнение с -
; остается только символ :
GOPROBBW:
inc BX ; следующим должен быть пробел
cmp byte ptr[BX],' '
jne INVSYMBBW ; если не пробел - то это неверный символ
PROBBW: ; пропуск пробелов до начала следующего слова
inc BX
cmp BX,DX
jl M1BW
jmp ERRZICLBW ; в конце предложения нет '.' либо '?' либо '!'
M1BW:
cmp byte ptr[BX],' '
je PROBBW
jmp ENDPRBW
ERRZICLBW:
LEA DX,TEXT1BW
CALL PRT
mov BWC,1
jmp ENDPRBW
INVSYMBBW:
lea DX,TEXT2BW
mov AH,[BX]
mov SYMBW,AH
lea AX,STROKA
SUB AX,BX
neg AX
inc AX
lea BX,buffer2
call CONVBA
CALL PRT
KONBW:
mov BWC,1
ENDPRBW:
pop AX
pop DX
ret
BEG_WORD endp
;*********************************************
CODES ENDS
END MAIN
Варианты заданий:
Во всех заданиях - задано некоторое предложение, состоящее из слов, которое разделяются хотя бы одним пробелом, либо запятой и хотя бы одним пробелом, либо тире и хотя бы одним пробелом, либо двоеточием и хотя бы одним пробелом. После последнего слова стоит точка, либо восклицательный знак, либо вопросительный знак.
Примечания. Заглавная и прописная буква считаются разными символами.
Длина предложения не более 100 символов.
Длина слова не более 20 символов.
1 Напечатать первый символ из каждого слова и длину каждого слова.
1. Напечатать те слова, в которых некоторый символ А встречается больше 2 раз. Напечатать номера этих слов.
2. Напечатать те слова, в которых одинаковые первый и последний символы. Напечатать длины этих слов.
3. Напечатать все слова, состоящие не более чем из 3 символов. Напечатать их номера.
4. Задано некоторое сочетание из двух символов. Напечатать все слова, в которых встречается это сочетание. Напечатать длины этих слов.
5. Напечатать все слова, в которых гласных символов более трех. Напечатать номера этих слов.
6. Напечатать все слова, в которых гласных более чем согласных. Напечатать длины этих слов.
7. Напечатать все слова, которые начинаются с гласных. Напечатать номера этих слов.
8. Напечатать каждое второе слово и его длину.
9. Заданы два целых положительных числа А и В (А<В). Напечатать слова с номерами А+1, А+2, …, В.
10. Напечатать все слова, второй символ в которых гласный. Напечатать номера этих слов.
11. Задано некоторое положительное целое число А. Напечатать слова с номерами А-1 и А+1. Напечатать длины этих слов.
12. Напечатать слова, длина которых > 3 и < 10. Напечатать номера этих слов.
13. Убрать из предложения все слова, начинающиеся с некоторого символа А. Подсчитать количество слов в первоначальном предложении и в новом предложении.
14. Убрать из предложения все слова, длина которых > 3. Подсчитать количество слов в первоначальном предложении и в новом предложении.
15. Найти в предложении слово максимальной длины. Напечатать его длину и номер. Если таких слов несколько, то напечатать только первое слово.
16. Найти в предложении слово минимальной длины. Напечатать его длину и номер. Если таких слов несколько, то напечатать только первое слово.
17. Задано некоторое слово. Найти в предложении это слово. Напечатать его номер. Если это слово встречается более одного раза, то найти все вхождения. Если такого слова нет, то сообщить об этом.
18. Заданы два слова одинаковой длины. Найти первое слово в предложении и заменить его вторым словом. Напечатать номера этого слова в предложении.
19. Заданы два некоторых символа А и В. Напечатать все слова, начинающиеся с символа А и заканчивающиеся символом В. Напечатать их номера.
20. Все слова в предложении имеют одинаковую длину. Заданы два целых положительных числа А и В. Это номера слов в предложении. Поменять местами эти два слова. Если, хотя бы одного слова с номером А или В нет, то сообщить об этом.
21. Заданы два некоторых символа А и В. Напечатать все слова, которые начинаются с символа А и в которых символ В встречается более двух раз. Напечатать номера этих слов.
22. Заданы два некоторых символа А и В. Найти первое слово, начинающееся с символа А, напечатать его номер, а потом найти все слова, начинающиеся с символа В, напечатать их номера.
23. Заданы два некоторых символа А и В. Найти первое и последнее слово, начинающиеся с символа А. Напечатать их номера. Подсчитать сколько раз в этих словах встретился символ В.
24. Заданы два некоторых символа А и В. Найти первое и последнее слово, начинающиеся с символа А. Напечатать их длины. Найти все слова, располагающиеся между этими словами и начинающиеся с символа В.
25. Задано некоторое целое положительное число А. Напечатать все слова, номера которых кратны А, напечатать номера этих слов и их длины.
26. В предложении может подряд встретиться несколько одинаковых слов. Найти и напечатать эти слова и напечатать их номера и количество.
27. Найти в предложении все слова одинаковой длины, следующие подряд. Напечатать эти слова, их номера и количество.
28. Задан некоторый символ А. Найти слова, начинающиеся с этого символа, и переписать их в предложении в обратном порядке (наоборот). Напечатать слова, их длины и номера.
29. Подсчитать количество гласных символов в каждом слове. Напечатать слова, их номера и это количество.