Программирование на языке ассемблер задач с использованием массивов строковых данных - Студенческий научный форум

XII Международная студенческая научная конференция Студенческий научный форум - 2020

Программирование на языке ассемблер задач с использованием массивов строковых данных

Наумов П.А. 1, Абрамова О.Ф. 1
1ВПИ (филиал) ВолгГТУ
 Комментарии
Текст работы размещён без изображений и формул.
Полная версия работы доступна во вкладке "Файлы работы" в формате PDF

Введение

Реализация практических задач с помощью машинно-зависимых языков требует от программиста определенного склада ума и некоторых практических навыков. Организация вычислений в таком случае производится с учетом специфики ассемблера и, чаще всего, разобраться в алгоритме гораздо проще по его модели, чем непосредственно в коде. Моделирование алгоритмов в любом случае довольно полезный навык, а при разборе низкоуровневых программ – очень полезный и максимально удобный. Чтобы не быть голословными, рассмотрим пример реализации конкретной задачи с использованием массивов строковых данных на языке ассемблер и ее модели. Постановка задачи следующая: Имеется строка, вводимая пользователем. Необходимо найти слова, в которых количество повторяющихся символов больше или равное 3, а затем вывести эти слова на экран.

Реализация решения задачи

Для реализации решения используется приложение emu8086. На вход подается строка (массив символов mas), которую заполняет пользователь. На выход подается строка (массив символов mas1), в которой находятся слова, соответствующие условию задачи. Обе строки являются массивами символов. Общая блок-схема решения выглядит следующим образом:

Блок-схема 1. Общая блок-схема решения

Ввод строки пользователем

Данная процедура позволяет пользователю задать начальную строку. На вход подается массив символов. Смещение производится при помощи регистра si Блок-схема процедуры выглядит следующим образом:

Блок-схема 2. Ввод строки пользователем

На выходе имеем заполненный массив символов. Пример ассемблерного кода данной процедуры предоставлен на рисунке 1.

Рисунок 1 Процедура ввода строки пользователем (input_str)

Поиск и запись необходимых слов в строку

Данный участок кода сначала находит слово в строке (словом считается набор символов, разделенных сепараторами, такие как точка, пробел, запятая и другие) и записывает подходящие слова в другую строку (конечную). В начале имеется строка, введенная пользователем. Используемые переменные: nachalo (значение, указывающее на начало слово), razmer (размер слова с учетом сепаратора), razmer2 (значение, показывающее до какого символа, имеет смысл проверять слово), counter (значение, указывающее на текущий проверяемый символ), marks (значение, показывающее сколько символов совпало с проверяемым). Смещение происходит с помощью регистров si (проверяемый символ), di (символ, сверяемый с проверяемым). Блок-схема процедуры выглядит следующим образом.

Блок-схема 3. Поиск и запись необходимых слов в строку.

Результатом является конечная строка. Пример ассемблерного кода данного участка предоставлен на рисунке 2.

Рисунок 2. Поиск и запись необходимых слов в строку

Вывод конечной строки

Данная процедура позволяет пользователю вывести конечную строку. На вход подается массив символов. Смещение производится при помощи регистра si Блок-схема процедуры выглядит следующим образом:

Блок-схема 4. Вывод конечной строки

Пример ассемблерного кода данной процедуры предоставлен на рисунке 3.

Рисунок 3. Процедура вывода конечной строки (view_str)

Результат работы программы

Результат работы программы предоставлен на рисунке 4:

Рисунок 4. Скриншот результата работы программы.

Как видно из рисунка, программа успешно выполнила поставленную задачу. А приведенные модели решения вполне доходчиво пояснили ассемблерный код.

Библиографический список

Абрамова О.Ф. Методика организации практических занятий с

использованием ролевого подхода и case-заданий [Электронный ресурс] / О.Ф. Абрамова // Санкт-Петербургский образовательный вестник : электрон. науч. практ. журнал. - 2017. - № 8 (12). - C. 9-15. Режим доступа: http://ru.calameo.com/read/005072235e4dd2e099704.

Юров В.И. Assembler: учебник для вузов.2-е изд. / В.И. Юров. - Санкт-Петербург: Питер , 2010. - 640c. Режим доступа: http://ibooks.ru/reading.php?productid=21881&search_string=Юров

Абрамова О.Ф. Анализ методов организации и проведения внеучебных конкурсных мероприятий в дистанционном формате / О.Ф. Абрамова, А.Ю. Александрина // Открытое и дистанционное образование. - 2017. - №2 (66). - C. 14-25

Макушкина Л.А., Макушкин И.А. Основы языка Assembler: Учебное пособие, лабораторный практикум по дисциплине «Машинно-ориентированные языки», РПК «ПОЛИТЕХНИК» ВолгГТУ, г. Волгоград, 2008 г.

Абрамова О.Ф. Исследование методов и разработка модуля оценивания конкурсных материалов для информационной веб-системы проведения олимпиад, адаптированной к задачам конечного пользователя [Электронный ресурс] / О.Ф. Абрамова // 16-я научно-практическая конференция профессорско-преподавательского состава ВПИ (филиал) ВолгГТУ (г. Волжский, 23-27 января 2017 г.). В 2 ч. Ч. 2 / под ред. С.И. Благинина ; ВПИ (филиал) ВолгГТУ. - Волгоград, 2017. - C. 149-158. – Режим доступа:http://www.volpi.ru/files/science/science_conference/16npkpps/16npkpps_pt2.pdf.

Просмотров работы: 12