- •Лабораторная работа №1 работа с машинными командами и командами ассемблера с помощью отладчика debug
- •1. Цель работы
- •2. Основные сведения
- •2.1. Машинные команды
- •2.2. Команды ассемблера
- •Некоторые команды ассемблера
- •2.3. Отладчик Debug
- •3. Методические указания к выполнению лабораторной работы
- •3.1. Арифметика при помощи команд Debug и просмотр регистров
- •3.2. Машинные команды
- •3.3. Команды ассемблера
- •4. Контрольные вопросы
- •Лабораторная работа №2 основы программирования на ассемблере в windows
- •1. Цель работы
- •2. Основные сведения
- •2.1. Особенности программирования на ассемблере для Windows
- •2.2. Вызов WinApi функций
- •2.3. Создание программ на ассемблере
- •1. Получение ассемблерного листинга
- •2. Ассемблирование (трансляция)– получение объектного модуля
- •3. Компоновка (линковка) – создание исполняемого модуля
- •4. Выполнение (запуск) программы
- •2.4. Инструментальный пакет masm32
- •Основные сведения и порядок работы в пакете masm32:
- •2.5. Примеры
- •3. Методические указания к выполнению лабораторной работы
- •4. Контрольные вопросы
- •Литература
- •Лабораторная работа №3 представление данных в памяти компьютера
- •1. Цель работы
- •2. Основные сведения
- •2.1. Типы данных
- •2.2. Директивы определения данных
- •2.3. Взаимодействие ассемблерных программ с памятью
- •2.4. Примеры
- •3. Методические указания к выполнению лабораторной работы
2.2. Вызов WinApi функций
API (Application Program Interface, Программный интерфейс приложения) – это набор функций программирования, описывающих доступ к данным и методам классов, которыми пользуется программист при написании приложений (программ).
Взаимодействие с внешними устройствами и ресурсами операционной системы будет происходить посредством таких функций.
Упрощенно можно сказать, что API-функции – это готовые к использованию функции, которые уже написаны другими программистами, и для выполнения этих функций достаточно только вызвать их и передать им параметры, с которыми они будут работать. Параметры функции помещаются в специально организованную область памяти, называемую стеком. В стеке используется принцип «последним пришел – первым вышел».
Для организации вызова WinAPI функции в общем случае требуется выполнить следующие шаги:
1. Во включаемом файле определить вызываемую функцию.
2. Непосредственно перед местом вызова функции поместить все параметры функции в программный стек в порядке, обратном их размещению в списке формальных параметров в описании интерфейса функции. Так, если интерфейс функции описан следующим образом:
WriteConsole (hConsoleOutput, lpvBuffer, cchToWrite, lpcchWritten, lpvReserved);
то сначала мы помещаем в стек параметр lpvReserved, затем lpcchWritten и так далее.
3. Сразу после помещения параметров в стек следует вызвать функцию.
2.3. Создание программ на ассемблере
1. Получение ассемблерного листинга
В Windows программы пишут в обычном текстовом виде, а не так, как в предыдущей лабораторной работе (каждую строку сразу транслировали в машинную команду). Такой текстовый вид называется исходным файлом (англ. – source). Текст исходника можно писать в любом текстовом редакторе, в т.ч. в MS Word (при установленном фильтре простого текста). Файлы исходников имеют расширение .TXT или .ASM.
2. Ассемблирование (трансляция)– получение объектного модуля
Как и для любого языка программирования, для ассемблера необходима система программирования, включающая язык ассемблера и транслятор с этого языка. Такие системы программирования тоже называются ассемблерами. В настоящее время наиболее часто используется MASM (Microsoft Assembler) и MASM32. Также существуют ассемблеры MASM, TASM, NASM, FASM и некоторые другие.
Программа-ассемблер создает объектный файл с расширением OBJ. Данный файл является переходным между ассемблерным файлом (.ASM) и программой (.EXE/.COM).
Дело в том, что текст больших программ хранится во многих файлах. Чтобы получить готовую программу, тексты на ассемблере сначала преобразуются в объектные файлы, а затем их обрабатывает редактор связей или компоновщик, который как бы собирает их вместе.
3. Компоновка (линковка) – создание исполняемого модуля
Затем необходимо воспользоваться линковщиком (компоновщиком), который входит в комплект программы-ассемблера.
Линковщик также проверяет, нет ли каких-либо ошибок в объектном файле, но не грамматических, а логических. Например, отсутствие необходимой объектной библиотеки, указанной в самом файле либо в командной строке (программа-ассемблер этого не делает).
Если ошибок не обнаружено, компоновщик создает машинный код (программу типа COM или EXE), которую можно запускать на выполнение.
Типы файлов .COM и .EXE имеют отличия в структуре ассемблерной программы. Первый тип (COM) не может превышать 64Кб и используется только в MS-DOS. .EXE может быть создан и для DOS, и для Windows.