# ОВТ3 — Строковые операции в MASM32 Репозиторий студента для одной лабораторной работы. **Дисциплина:** Основы вычислительной техники и операционные системы автоматизированных технологических комплексов (Б1.В.01) **Специальность:** 15.03.06 «Мехатроника и робототехника» **Семестр:** 3 · **Объём:** 4 часа Название репозитория расшифровывается так: | Часть | Значение | |---|---| | `ovt` | ОВТ — основы вычислительной техники | | `3` | третья лабораторная работа | | `masm` | среда MASM32, язык Assembler | | `strings` | строковые (цепочечные) операции | > Черновик. Требует проверки преподавателем перед выдачей студентам. --- ## О чём работа Вы пишете GUI-приложение на языке Assembler для Win32 в среде MASM32: в диалоговом окне Windows вводится строка, над ней выполняется преобразование по индивидуальному варианту (Приложение А), результат выводится обратно. В основе обработки — **цепочечные команды** `MOVS`, `LODS`, `STOS`, `SCAS`, `CMPS` и префиксы `REP`/`REPE`/`REPNE`. Полное задание, теория, 27 вариантов и вопросы допуска/защиты — в **[task.md](task.md)**. --- ## Что в репозитории ``` ovt3-masm-strings/ ├── README.md ← этот файл ├── task.md ← задание, теория, варианты, вопросы ├── stub/ ← заготовки (выдаёт преподаватель по лестнице) │ ├── 01-window.asm ← каркас окна: edit + button, WM_CREATE/WM_COMMAND │ └── 02-strings.asm ← каркас обработки строки (TODO по варианту) └── print/ ← брошюра задания (DOCX) └── methodical-lab3-strokovye-operatsii-student.docx ``` ### Что в заготовках | Файл | Что внутри | Что доделать | |---|---|---| | `stub/01-window.asm` | регистрация класса окна, создание главного окна, поле ввода (`edit`), кнопка (`button`), обработка `WM_CREATE`/`WM_COMMAND`/`WM_DESTROY` | вписать обработку строки в ветке `BN_CLICKED` | | `stub/02-strings.asm` | примеры типовых приёмов (копирование, сравнение, поиск) и каркас `process_string` с `TODO` | реализовать алгоритм варианта цепочечными командами | > **Важно:** заготовки — это стартовая точка, а не решение. Логику > варианта (задание 3) пишете вы сами. --- ## Быстрый старт 1. **Установить MASM32** (пакет `masm32` — редактор QEditor, ассемблер `ml`, компоновщик `link`). Ассемблер должен лежать в `\masm32` — в исходниках пути вида `\masm32\include\windows.inc`. 2. **Собрать окно** из заготовки `stub/01-window.asm`: ```bat ml /c /coff 01-window.asm link /subsystem:windows 01-window.obj ``` Запустить `01-window.exe` — должно появиться окно с полем ввода и кнопкой (кнопка пока выводит введённую строку без изменений). 3. **Реализовать вариант** в `stub/02-strings.asm` (процедура `process_string`) и подключить её к обработчику кнопки. 4. **Проверить** на контрольных строках (пустая строка, строка из пробелов, строка с цифрами) и, при необходимости, пройти ключевой фрагмент пошагово в **OllyDbg**. 5. **Оформить отчёт** по структуре из `task.md`, раздел 4. Или собрать через QEditor: открыть файл и «Build → Build all». --- ## Полезные ссылки - `task.md` — задание, теория цепочечных команд, 27 вариантов, контрольные вопросы, оценивание. - Дополнительный материал по окнам Win32 (`Окна в MASM32.PDF`, разделы 9, 10, 14) — на диске с методическими материалами или у преподавателя. --- ## Порядок сдачи 1. Реализовать и собрать программу (задания 1–3). 2. Провести вычислительный эксперимент (задание 4). 3. Оформить отчёт (задание 5). 4. Ответить на контрольные вопросы (`task.md`, раздел 6). Баллы по заданиям — в `task.md`, раздел 7. Зачёт при **6 и более** баллах из 10.