ai: студенческая копия ЛР №3 «Строковые операции в MASM32» из РПД (окно Win32, ввод строки, цепочечные команды)
This commit is contained in:
@@ -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.
|
||||
Reference in New Issue
Block a user