Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
2012- СИСПРОГ на МАСМ.doc
Скачиваний:
21
Добавлен:
09.11.2019
Размер:
553.47 Кб
Скачать

3.3Выполнение работы

  1. На простом примере проведем репетицию самостоятельного изучения маленькой готовой макропрограммы. Откройте файл \MACRO32\macros\macros.asm и найдите в нем макрос argcount. С помощью доступных источников информации (к примеру, \MASM32\help\masm32.chm) разобраться, как он работает и подробно построчно прокомментировать макрос argcoung. (Как минимум, выяснить всё про VARARG, LOCAL, FOR, семантику скобок <> и оператора %). Откомментированный макрос распечатать для отчета.

  2. Скопируйте из папки \MASM32\examples\exampl01\generic\ файлы generic.asm и generic.exe в вашу рабочую папку. Из любопытства запустите generic.exe и походите по его меню. Обратите внимание на размер этого файла.

  3. Откройте файл generic.asm и найдите в нем фрагмент в строках 255-256, там происходит сравнение wParam == 1000. Переведите с помощью Калькулятора число 1000 в hex-формат, запишите результат, это понадобится для дальнейшей работы.

  4. Откройте в QE файл generic.exe. Выполните команду Tools> Dis-assemble EXE file. Откроется консоль с протоколом выполнения дизассемблера и новое окно QE, в нем демонстрируется файл disasm.txt. Окно консоли сразу закройте, оно не нужно.

  5. Командой поиска найдите в disasm.txt текстовое hex-представление числа 1000 (см. п. в) ) Теперь вы видите в дизассемблированном коде место, эквивалентное строкам 255-256 исходного текста. Впишите в отчет строки 255-256 исходника и их вид в ассемблерном дизассемблированном коде. Весьма поучительно.

  6. В тексте исходника generic.asm переведите любым доступным вам способом все английские комментарии на родной вам язык. Переделанный таким образом generic.asm распечатать для отчета. Да, это упражнение в английском. Но, во-первых generic.asm – это «is a roadmap around a standard 32 bit windows application skeleton written in MASM32» (андестенд?) и сразу разобраться с ним значит сильно облегчить себе начало самостоятельного практического программирования на MASM32. А во-вторых, программист без английского это как саксофонист без музыкального слуха, немного потренироваться в английском никогда не вредно.

3.4Состав отчета по работе

  1. Название и номер работы, фамилия и группа студента.

  2. Цель работы.

  3. Протокол выполнения работы с текстами ответов на все вопросы в заданиях пункта «Выполнение работы».

  4. Ответы на контрольные вопросы отдельно писать не надо. Распечатка переведенного файла generic.asm уже будет содержать их.

  5. Личная подпись автора отчета.

3.5Контрольные вопросы

  1. Каково назначение макроса szText?

  2. Как логически связаны прототипы процедур и макрос invoke?

  3. Какова роль метки start: в ассемблерных программах?

  4. Как в generic.asm поясняется различие секций «.data» и «.data?» ?

4ВВОД И ВЫВОД В КОНСОЛЬНЫХ ПРИЛОЖЕНИЯХ

4.1Цель работы

Научиться пользоваться функциями ввода-вывода в консольных приложениях.

4.2 Теоретические сведения

4.2.1Основы взаимодействия прикладных программ и ОС Windows

Структура логических уровней компьютера может быть упрощенно показана как на рис. 4.1:

Уровень прикладных программ

Программный интерфейс WinAPI

Уровень операционной системы

Ядро ОС

Уровень аппаратуры и периферийных устройств

Рисунок 4.1 – Логические уровни компьютера

Прикладная программа обрабатывает данные за счет собственных ресурсов и при помощи своего алгоритма. Но всякое «общение» программы с внешним миром (пользователь – это тоже часть внешнего для программы мира) производится только с помощью ввода с периферийных устройств и вывода на них. В целях защиты компьютерной системы прикладные программы изолированы от прямого управления аппаратурой и для вывода-ввода должны запрашивать сервис от операционной системы. Запросы подобного рода производятся вызовами процедур и функций программного интерфейса приложений (Application Program Interface, API), который в ОС Microsoft Windows имеет имя «WinAPI». Чтобы вызовы API стали возможны и выполнялись правильно, при написании программы следует прописывать в ней директивы доступа к соответствующим прототипам и библиотекам (файлам типов inc и lib). Все примеры из пакета MASM32, рассматриваемые нами в лабораторных работах, подобные директивы имеют.