Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторная работа 4.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
117.91 Кб
Скачать

3.2 Создание программы с графическим интерфейсом

Повторим предыдущий сценарий, но будем создавать теперь программу с графическим интерфейсом на основе готового примера.

  1. Скопировать в d:\sample2 файл minimum.asm из папки d:\MASM32\examples\example01\minimum\.

  2. Прочесть его в редакторе, скопировать в отчет.

  3. ml /c /coff /nologo minimum.asm Действие выполнить, команды вносить в отчет без дополнительных напоминаний.

  4. Что нового появилось в папке? Чем отличается выполнение этой компиляции от действия г) в п.3.1? Записать в отчет. Выяснить, что такое ключ /nologo и записать это в отчет.

  5. Выполнить Link /SUBSYSTEM:WINDOWs minimum.obj. Изменения в папке записать в отчет.

  6. Выполнить minimum.exe. Скриншот или результат работы программы внести в отчет.

3.3 Использование шаблона простой программы

Вы прочитали тексты исходников textio.asm и minimum.asm и наверняка отметили значительное сходство их начальных частей, в которых упоминаются файлы с расширениями inc и lib.

Для облегчения создания таких заголовков в папке \include имеется файл masm32rt.inc, который содержит универсальный заголовок исходного текста MASM-программы. Наличие такого файла сильно упрощает начальный этап освоения ассемблера. В нем прописаны все директивы подключения текстовых inc- и библиотечных lib-файлов, что обеспечивает создаваемой программе полную возможность использовать наработанный в МАСМ инструментарий в виде макросов и процедур. Особенно хорошо то, что пользователю не нужно заботиться о правильной последовательности подключения упоминаемых ресурсов, там это уже сделано. Применение masm32rt.inc обеспечивает создание надёжных 32-разрядных консольных и Windows-приложений.

С учетом сказанного простейший шаблон ассемблерной программы выглядит так.

include \masm32\include\masm32rt.inc

;<Здесь можно описывать макросы.>

.data

;<Здесь можно описывать статические переменные. >

.code

start:

;< Здесь можно вводить команды программиста. >

; ------ завершение программы--------------

invoke ExitProcess,0 ; выход в Windows

end start

Другими средствами облегчения разработки ассемблерных программ являются два пакетных файла, которые находятся в \bin – это build.bat (для создания windows-приложений) и buildc.bat (для разработки консольных приложений). Чтобы вызовы и всех подключаемых файлов, и этих пакетов происходили без проблем, нужно «на постоянно» дополнить системную переменную path допиской d:\masm32;d:\masm32\bin;d:\masm32\lib;d:\masm32\include.

Открыть в редакторе пакет build.bat, внимательно просмотреть его, скопировать в отчет. Повторить это для пакета buildc.bat.

Проиллюстрируем сказанное созданием простейшей программы “Hello, world!”. Делаем исходник hello.asm (+ скопировать в отчет):

include \masm32\include\masm32rt.inc

;<Здесь можно описывать макросы.>

.data

;<Здесь можно описывать статические переменные. >

.code

start:

;< Здесь можно вводить команды программиста. >

print “Hello, world!” ; например, такую.

invoke ExitProcess,0 ; выход в Windows

end start

  1. buildc hw Смотреть на выводы в процессе компиляции и компоновки. Описать наблюдаемое.

  2. hw Виден результат выполнения.

3.4 Создание рабочей папки d:\MACRO.

Для наблюдений за работой макрогенератора создадим предельно простой шаблон. Исключим подключение всех inc файлов и библиотек (если их оставить, то это в текстовый исходник добавит ни много, ни мало, а около 40 тысяч строк; здесь нам это совершенно ни к чему, только будут мешать наблюдениям). Итак, шаблон:

.486

.MODEL flat, stdcall

; точка1 - место макроопределений

.data

; точка2 - секция данных

.code

; точка3 - секция кода

end

Поместите его в рабочую папку под именем, например, m0.asm.

Второе, что понадобится для удобства работы – пакетный файл, пусть для конкретности он будет называться mg.bat и его мы тоже разместим в рабочей папке:

:: --------------- MG.BAT ----------------

@echo Обрабатывется файл %1.ASM.

@if exist %1.lst del %1.lst

\masm32\bin\ml /EP /nologo %1.asm > %1.lst

@echo.

@echo Результат работы макрогенератора (%1.LST)

@echo -------------------------------------------------

@type %1.lst

@pause

Приступаем к экспериментам.