Уважаемые коллеги! Предлагаем вам разработку программного обеспечения под ключ.
Опытные программисты сделают для вас мобильное приложение, нейронную сеть, систему искусственного интеллекта, SaaS-сервис, производственную систему, внедрят или разработают ERP/CRM, запустят стартап.
Сферы - промышленность, ритейл, производственные компании, стартапы, финансы и другие направления.
Языки программирования: Java, PHP, Ruby, C++, .NET, Python, Go, Kotlin, Swift, React Native, Flutter и многие другие.
Всегда на связи. Соблюдаем сроки. Предложим адекватную конкурентную цену.
Заходите к нам на сайт и пишите, с удовольствием вам во всем поможем.
Министерство Образования и Науки Российской Федерации
Федеральное Агентство по Образованию
Новосибирский Государственный Технический Университет
Кафедра Прикладной математики
Лабораторная работа №1:
По дисциплине «Языки программирования»
«ОБРАБОТКА СТРОК ДАННЫХ НА ЯЗЫКЕ АССЕМБЛЕРА»
Факультет: ПМИ
Группа: ПМ-63
Студенты: Ковырзин А.В.
Наумова Е.А.
Вариант: 4
Преподаватель: Петров Р.В.
Полетаева И.А.
Новосибирск
2008
1) Задание:
Написать программу, определяющую номер позиции, с которой начинается первое слева вхождение заданной конфигурации символов в исходную строку.
2) Алгоритм решения:
Пусть s-строка
p-искомая подстрока
a) Ввод s и p с консоли. Так как для ввода используется функция 0Ah, то 2 первых байта строки будут заняты служебной информацией.
b) Ищем вхождение первого символа p в строку s (используется cmps).
Если вхождений этого символа не найдено – идём на выход (вхождений p в s не
обнаружено).
c) Проверка совпадения p и подстроки в s.
Если совпало – идём на вывод позиции (вхождение p в s обнаружено)
Иначе, если строка не закончилась – идём на пункт b)
Если строка закончилась – идём на выход (вхождений p в s не обнаружено)
Вывод десятичного числа (позиции):
a) Делим число на 10
b) Записываем остаток во вспомогательную строку
с) Если остаток не равен 0, то идём на пункт a)
Текст программы
model small ;модель памяти
print macro st,off ;макрос вывода строки
pusha
mov AH,09h ;номер функции DOS
lea DX, st+off ;загружаем смещение строки и смещение начала вывода
int 21h ;прерывание DOS
popa
endm
.data ;начало сегмента данных
source db 200 dup (?) ;резервируем память под исходную строку
len_s = $-source ;длина строки
substring db 200 dup (?) ;резервируем память под подстроку
len_sub = $-substring ;длина подстроки
ent db 'Enter string:','$'
ent1 db 10,13,'Enter substring:','$'
nmes db 10,13,'Substring not found',10,13,'$'
mesMatch db 10,13,'Substring was found',10,13,'$'
mesMismatch db 10,13,'Substring not found',10,13,'$'
mesSym db 10,13,'Position:',10,13,'$'
.stack 100h ;сегмент стека
assume ds:@data,es:@data ;связывание сегментов данных
.code
main proc
.386 ;режим сов-ми с 386(для раб со стеком)
mov AX,@data ;настройка сегментных
mov DS,AX ;регистров на
mov ES,AX ;сегмент данных
print ent,0 ;вывод приглашения
;ввод строки
lea DX,source ;загружаем адрес строки
mov source,len_s ;в первый байт строки загружаем максимальную длину строки
mov AH,0Ah ;загружаем номер функции DOS для ввода строки
int 21h
print ent1,0
lea DX,substring ;загружаем адрес строки
mov substring,len_sub ;в первый байт строки загружаем максимальную длину строки
mov AH,0Ah ;загружаем номер функции DOS для ввода строки
int 21h
cld ;сброс флага DF-просмотр строки в порядке увеличения адресов
mov AL,[substring+2] ;загружаем в AL первый символ подстроки
xor CX,CX ;обнуляем СХ
mov CL,[source+1] ;записываем в СХ количество символов в строке
lea DI,source ;кладём в DI адрес строки
add DI,2 ;переходим на 2 служебных символа вперёд
cycl: ;метка-начало цикла(входим в него если нашли символ, но подстрока не совпадает)
Уважаемые коллеги! Предлагаем вам разработку программного обеспечения под ключ.
Опытные программисты сделают для вас мобильное приложение, нейронную сеть, систему искусственного интеллекта, SaaS-сервис, производственную систему, внедрят или разработают ERP/CRM, запустят стартап.
Сферы - промышленность, ритейл, производственные компании, стартапы, финансы и другие направления.
Языки программирования: Java, PHP, Ruby, C++, .NET, Python, Go, Kotlin, Swift, React Native, Flutter и многие другие.
Всегда на связи. Соблюдаем сроки. Предложим адекватную конкурентную цену.
Заходите к нам на сайт и пишите, с удовольствием вам во всем поможем.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.