Skip to content

Lynech/assembly

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Задание №2 по ассемблеру

Постановка задания

Взаимодействие C/C++ и языка ассемблера. Дан текст (последовательность символов), содержащий не более 100 элементов. Признаком конца текста считается символ с кодом '\0'. Требуется:

  • ввести текст с клавиатуры и записать его в память ЭВМ;
  • определить, обладает ли этот текст заданным свойством, указанным в вашем варианте задания;
  • преобразовать текст по правилу 1 вашего задания, если он обладает заданным свойством, и по правилу 2 в противном случае;
  • вывести на экран исходный и преобразованный тексты, а также номер и формулировку применённого правила.

Требования к программе

  1. Ввод и вывод, выделение памяти, тестовая оснастка и логика выбора действий реализуются на языке C/C++.
  2. Действия: проверка свойства, применение правила №1 и правила №2 преобразования текста, –– реализуются на языке ассемблера для архитектуры Intel x86_64 в синтаксисе AT&T. Каждое действие следует разместить в отдельном модуле (файле). Реализация действия может состоять из нескольких функций (процедур). Формулировки свойства текста и правил его преобразования для вашего варианта следует разместить в комментариях соответствующих модулей (в начале файла).
  3. Вывод исходного текста должен быть выполнен сразу после ввода, до анализа и преобразования.
  4. Вывод преобразованного текста должен быть выполнен только после завершения преобразования.
  5. Программа должна сохранять работоспособность при любых входных данных.
  6. Необходимо разработать «тестовую оснастку» для выполнения автоматического тестирования.

Варианты выдаются преподавателем.

Вариант, выданный преподавателем

Свойство текста:
Текст начинается строчной латинской буквой и оканчивается строчной латинской буквой.

Правило 1:
Инвертировать регистр латинских букв.

Правило 2:
Удалить из текста все повторные вхождения его последнего символа.


Особенности реализации и способ запуска

  • Результатом сборки являются 4 исполняемых файла: test_c.exe, main_c.exe - с постфиксом _c (референсная версия написанная на C и C++, на которую я опирался, когда писал ассемблерный код), test_s.cpp, main_s.cpp - с постфиксом _s (версия, которая как раз и требовалась по заданию).
  • В файле str.s реализованна требуемая функция на ассемблере (версия на C в файле str.c).
  • В файле test_s.cpp тестируется функция, обрабатывающая си-строку process_cstring. Цель в CMakeLists.txt test_s.
  • В файле main_s.cpp содержится реализация требуемуемой функции (я ее назвал the_programm). Цель -- main_s. На вход программы main_s.exe подается строка (введенная вручную или с помощью перенаправления потоков из файла ./bin/main_s.exe < ./test_strings.txt), на выводе исходная и преоброзованная строка.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published