ai: студенческая копия ЛР №3 «Строковые операции в MASM32» из РПД (окно Win32, ввод строки, цепочечные команды)

This commit is contained in:
mss
2026-11-05 19:48:11 +04:00
commit b38aaa434b
5 changed files with 747 additions and 0 deletions
+104
View File
@@ -0,0 +1,104 @@
# ОВТ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.