105 lines
5.6 KiB
Markdown
105 lines
5.6 KiB
Markdown
# ОВТ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.
|