
- •Системное программирование на макроассемблере masm32
- •«Системное программирование» (часть 1)
- •Вступление
- •1Организация среды исполнения для масм
- •1.1Цель работы
- •1.2 Теоретические сведения
- •If errorlevel 0 команда2
- •If errorlevel 0 goto метка
- •1.3Выполнение работы
- •1.4Состав отчета по работе
- •1.5Контрольные вопросы
- •2.2.2Состав пакета масм
- •2.2.3Центр масм – редактор Quick Editor
- •2.3Выполнение работы
- •2.4Состав отчета по работе
- •2.5Контрольные вопросы
- •3Высокоуровневый интерфейс языка масм
- •3.1Цель работы
- •3.2 Теоретические сведения
- •3.2.1Процедуры и макросы в ассемблере
- •3.2.2Синтаксис высокого уровня масм
- •3.2.3Макрос invoke
- •3.3Выполнение работы
- •4.2.2Потоки вывода и ввода
- •4.2.3Вывод и ввод в консольных приложениях
- •4.3Выполнение работы
- •4.4Состав отчета по работе
- •4.5Контрольные вопросы
- •5Ввод и вывод в ассемблерных приложениях с графическим интерфейсом
- •5.1Цель работы
- •5.2Теоретические сведения
- •5.3Выполнение работы
- •6.3.1Фрейм кода (области 1-5)
- •6.3.2Фрейм дампа памяти (области 9,10 и 11)
- •6.3.3Фрейм регистров процессора (области 6, 7 и 8)
- •6.3.4Фрейм стека (области 12, 13 и 14)
- •6.4Выполнение работы
- •6.5Состав отчета по работе
- •6.6Контрольные вопросы
- •Приложение а Префиксы «венгерской» нотации типов данных WinApi
- •Рекомендованная литература
If errorlevel 0 команда2
Второй пример с переходом на метку:
команда3
If errorlevel 0 goto метка
…
:метка
…
Обратите внимание, что в консольном командном языке метка содержит двоеточие не после ее имени, а перед ним.
Вторым допустимым в пакетных файлах условием является проверка факта существования или несуществования в текущей активной папке файла с определенным именем.
if exist имя_файла <команда или переход> - проверка существования;
if not exist имя_файла <команда или переход> - проверка несуществования.
Если команда или вызываемая программа что-то выводит на консоль, то есть возможность перенаправить этот вывод в текстовый файл с использованием знака > :
Команда > имя_текстового_файла
Можно вывод команды дописать в конец уже существующего файла инструкцией >>:
Команда >> имя_уже_имеющегося_текстового_файла
Как частный случай, можно подавить вывод команды, перенаправив его в никуда:
Команда > null
Механизм перенаправления вывода используется в команде | (вертикальная черта), с помощью которой можно длинный вывод команды просматривать кусками размером с окно консоли. Например, при просмотре папки, содержащей большое число вложенных в нее файлов и папок, команда
dir | more
выполняется с остановкой вывода списка файлов на границе окна консоли. После нажатия Enter вывод будет продолжен.
Для нормальной работы программ требуется, чтобы они могли без осложнений производить поиск на диске вызываемых вспомогательных файлов. Это обеспечивается заданием правильного значения системной переменной окружения path, которая имеет формат «путь1; путь1;…; путьN».
Логика ее использования такая. Если программа пытается открыть файл с известным именем, то она сначала ищет его в текущей активной папке. Если не находит, то ищет в папке путь1, затем, если не находит, перебирает все пути в path. Результатом будет или успех поиска (файл будет открыт) или сообщение о том, что файл не найден. Ясно, что сообщение «файл не найден» говорит только о том, что его нет в просмотренных папках, но совсем не означает, что такого файла на диске нет вовсе.
При установке пакета МАСМ на компьютер он распаковывается, как правило, в папку D:\MASM32. При подготовке с его помощью ассемблерных программ всегда используются файлы из подпапок bin, lib и include. Поэтому пути к этим папкам нужно дописать в конец системной переменной path. Говоря конкретно, если, предположим, имело место
path=%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem
то надо сделать
path=%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;D:\ MASM32\BIN;D:\ MASM32\LIB;D:\ MASM32\INCLUDE;
Доступ к изменению системных переменных производится по маршруту (для Windows XP):
Значок «Мой компьютер» > Правая кнопка мыши > Свойства > Вкладка Дополнительно > Кнопка Переменные среды > Выбрать Path > Кнопка Изменить. Дописав пути к папкам МАСМ, не забудьте сохранить результат.
Для других версий Windows (Vista, 7) доступ производится примерно так же, легко сообразить по ситуации.
Нередко возникает желание не менять переменную path «навсегда», как показано выше, а переопределить ее только на период исполнения пакетного файла. Для нашего случая это можно было бы делать, включая во все пакетные файлы строку
Path = %path%; d:\ MASM32\bin;d:\ MASM32\lib;d:\ MASM32\include
Здесь %path% - это ее текущее значение. После выполнения этой команды path будет настроено для работы с МАСМ, но после завершения пакетного файла переменная path опять вернется к значению %path%.