OSP / ОСП_2011 / Лабработа7 / Лабработа7
.docОсновы системного программирования
Лабораторная работа 7
Тема: Работа со строками. Использование функций DOS
Цель работы: Научиться использовать функции DOS для ввода и вывода строковой информации.
Задание 1
-
Изучите приведенную ниже программу на языке ассемблера. Программа позволяет ввести строку с клавиатуры и определить сколько заданных символов содержится в ней.
TITLE Program7
;название программы
.MODEL small
;отводим под стек и под данные по 64Кб
.STACK 100h
;отмечаем начало сегмента стека
.DATA
;отмечаем начало сегмента данных
Char DB 0
Buf DB 255, 0, 256 DUP (0)
;
.CODE
;отмечаем начало сегмента кодов
main PROC
mov AX, @data
;копируем адрес
mov DS, AX
;сегмента данных
mov ES, AX
mov DX, offset Buf
;считываем строку с клавиатуры
mov AH, 0ah
int 21h
mov AL, Buf+1
;если считано 0 байт, то выход из
or AL, AL
;программы
jz Exit1
mov AH, 01h
;считываем символ с клавиатуры
int 21h
mov Char, AL
xor DX, DX
mov CX, DX
mov CL, Buf+1
;задаем количество повторений (длина строки)
cld
mov DI, offset Buf+2
Cycle:
scasb
jne Next
inc DX
Next:
loop Cycle
Exit1:
mov AX,4C00h
;выход
int 21h
;из программы
main ENDP
END main
-
Выполните отладку программу. Чему равно значение DX перед выходом из программы?
Задание 2
Используя предложенную выше программу, разработайте программу, которая выполняет заданные действия. Исполнить программу с несколькими (три - четыре) строками, проверить правильность результатов. (В отчете обязательно привести результаты вычислений).
Номер задания выбирается в соответствии с номером бригады.
-
Ввести с клавиатуры строку. Получить новую строку удалением пробелов и знаков табуляции. Вывести полученную строку на экран.
-
Ввести с клавиатуры строку (использовать только латинские символы). Получить новую строку преобразованием всех малых букв в большие. Вывести полученную строку на экран.
-
Ввести с клавиатуры строку. Посчитать количество слов в строке. Вывести полученное число на экран. Предполагается, что слова отделяются друг от друга пробелами. Между словами может более одного пробела.
-
Ввести с клавиатуры строку. Ввести с клавиатуры коротенькую строку - шаблон. Найти шаблон во введенной строке. Вывести на экран “ДА”, если шаблон есть и “НЕТ”, если нет.
-
Ввести с клавиатуры две строки. Сравнить их. Вывести на экран “ДА”, если они совпадают и “НЕТ”, если не совпадают.
-
Ввести с клавиатуры строку, состоящую из нескольких слов. Вывести каждое слово на экран в отдельной строке, т.е. выдать слова в столбик.
-
Ввести с клавиатуры строку. Переставить в ней символы, поменяв местами первый символ с последним, второй с предпоследним и т.д. Вывести полученную строку на экран. Например, если введена строка ПОГОДА, то преобразованная строка имеет вид АДОГОП
-
Ввести с клавиатуры две строки. Сравнить их. Если вторая строка содержится в первой, то вывести на экран номер начала второй строки в первой. В противном случае вывести 0. Например, для строк ПОБЕДА и ОБЕД, следует вывести 2.
-
Ввести с клавиатуры строку, содержащую несколько точек. Преобразовать строку, так чтобы после каждой точки был пробел. Вывести полученную строку на экран.
-
Ввести с клавиатуры строку, содержащую несколько точек и латинские символы. Преобразовать строку, так чтобы после каждой точки следующая буква была заглавной. Вывести полученную строку на экран.
