Список использованных констант и структур




Содержание

 

1. Содержание

. Введение

. Описание использованного набора макросредств.

. Использованные API-функции и системные константы.

Список использованных констант и структур.

Список использованных API-функций.

Основы вызова API-функций

. Демонстрационная программа

Листинг

Результат работы программы

. Вывод

 

2.
Введение

 

Целью курсовой работы является изучение основ программирования на 32-битном ассемблере, при помощи которого необходимо разработать программу, демонстрирующую работу одного из разделов ОС WINDOWS.

В данном отчете отражена работа макросредств ассемблера в WINDOWS. На основании описанных функций разработана программа, иллюстрирующая возможности макросредств.

Первый вопрос, который задает себе человек, впервые услышавший об ассемблере, - а зачем он, собственно, нужен? Особенно теперь, когда все пишут на C/C++, Delphi или других языках высокого уровня? Действительно очень многое можно создать на С, но ни один язык, даже такой популярный, не может претендовать на то, чтобы на нем можно было написать абсолютно все.

Итак, на ассемблере пишут:

· все, что требует максимальной скорости выполнения: основные компоненты компьютерных игр, ядра операционных систем реального времени и просто критические участки программ;

· все, что взаимодействует с внешними устройствами: драйверы, программы, работающие напрямую с портами, звуковыми и видеоплатами;

· все, что использует полностью возможности процессора: ядра многозадачных операционных систем, DPMI-серверы и вообще любые программы, переводящие процессор в защищенный режим;

· все, что полностью использует возможности операционной системы: вирусы и антивирусы, защиты от несанкционированного доступа, программы, обходящие эти защиты, и программы, защищающиеся от данных программ;

· и многое другое. Стоит познакомиться с ассемблером поближе, как оказывается, что большую часть из того, что обычно пишут на языках высокого уровня, лучше, проще и быстрее написать на ассемблере.

Большинство операционных систем написано преимущественно на языке ассемблера. Поэтому операционную систему Windows нагляднее изучать, используя именно этот язык.

Одно из самых мощных языковых средств ассемблера - макроопределения.

Макроопределением (или макросом) называется участок программы, которому присвоено имя и который ассемблируется всякий раз, когда ассемблер встречает это имя в тексте программы. Макрос начинается директивой MACRO и заканчивается ENDM.

Например: пусть описано макроопределение hex2ascii, переводящее шестнадцатеричное число, находящееся в регистре AL, в ASCII-код соответствующей шестнадцатеричной цифры:

 

hex2ascii macro

cmp al,10

sbb al,69h

das

endm

макросреда ассемблер программа текст

Сейчас в программе можно использовать слово hex2ascii, как если бы это было имя команды, и ассемблер заменит каждое такое слово на три команды, содержащиеся в макроопределении. Разумеется, можно оформить этот же участок кода в виде процедуры и вызывать его командой CALL - если процедура вызывается больше одного раза, этот вариант программы займет меньше места, но вариант с макроопределением станет выполняться быстрее, так как в нем не будет лишних команд CALL и RET. Однако скорость выполнения - не главное преимущество макросов. В отличие от процедур макроопределения могут вызыватьсяс параметрами.

Транслятор ассемблера состоит из двух частей - непосредственно транслятора, формирующего объектный модуль, и макроассемблера (рис. 1).

Рис. 1. Макроассемблер в общей схеме трансляции программы на TASM

 

Таким образом, обработка программы на ассемблере с использованием макросредств неявно осуществляется транслятором в две фазы(рис. 1).

На первой фазе работает часть компилятора, называемая макроассемблером.

На второй фазе трансляции работает непосредственно ассемблер, задачей которого является формирование объектного кода, содержащего текст исходной программы в машинном виде.

 


3.Описание использованного набора макросредств

 

3.1 Псевдооператор equ

 

Этот псевдооператор предназначен для присвоения некоторому выражению символического имени или идентификатора. Впоследствии, когда в ходе трансляции этот идентификатор встретится в телепрограммы, макроассемблер подставит вместо него соответствующее выражение.

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

 

Структура

 

Директива STRUC позволяет объединить несколько разнородных данных в одно целое. Эти данные называются полями. Вначале при помощи STRUC определяется шаблон структуры, затем с помощью директивы < > можно определить любое количество структур. Рассмотрим пример:

STRUC COMPLEXDD?DD?ENDS

.

;в сегменте данных

COMP1 COMPLEX <?>

COMP2 COMPLEX <?>

 

3.3
Условное ассемблирование

 

Условное ассемблирование дает возможность при трансляции обходить тот или иной участок программы. Существует три вида условного ассемблирования.

а)выражение

.

б)выражение

.

.

в)выражение 1

.выражение 2

.выражение 3

.

.

Условие считается

 

3.4 Макроповторения

 

. Повторение, заданное определенное число раз. Используется макродиректива REPT. Например:

A EQU 10100A

Будет сгенерировано 100 директив DB 10.

. Директива IRP.

IRP параметр,<список>

.

Блок будет вызываться столько раз, сколько параметров в списке. Например:

IRP REG, <EAX,EBX,ECX,EDX,ESI,EDI>REG

Приведет к генерации следующих строк:

PUSH EAXEBXECXEDXESIEDI


4.Использованные API-функции и системные константы

Список использованных констант и структур

 

Сообщения:

WM_SETFOCUS equ 7h - Сообщение, посылаемое окну, после того, как оно получило фокус.

WM_DESTROY equ 2 - Завершить приложение.

WM_CREATE equ 1 - Создать окно.

WM_PAINT equ 0FH - Отрисовка окна из буфера.

WM_COMMAND equ 111h - Сообщение, приходящее на функцию окна, при наступлении события с управляющим элементом, пунктом меню, а также от акселератора.

WM_SETTEXT equ 0Ch - Сообщение, используемое приложением для посылки текстовой строки окну и интерпретируемое в зависимости от типа окна (обычное окно - заголовок, кнопка - надпись на кнопке, окно редактирования - содержимое этого окна и т.д.).

WM_GETTEXT equ 0Dh - Посылается окну для получения текстовой строки, ассоциированной с данным окном (строка редактирования, заголовок окна и т.д.).

Стили окна:

CS_VREDRAW equ 1h - Посылка WM_PAINT при изменении.

CS_HREDRAW equ 2h - Размеров окна.

CS_GLOBALCLASS equ 4000h - Класс окна._OVERLAPPEDWINDOW equ 000CF0000H - Стиль окна.

Интерфейс:_APPLICATION equ 32512 - Иконка_ARROW equ 32512 - Курсор_SHOWNORMAL equ 1 - Режим

показа окна

Структуры:

WNDCLASS STRUC - Класс окна

CLSSTYLE DD? -Стиль окна

CLWNDPROC DD? - Основная оконная процедура

CLSCBCLSEX DD? - Пространство для данных

CLSCBWNDEX DD? - Пространство для структур

CLSHINST DD? - Определение класса

CLSHICON DD? - Иконка DD? - КурсорDD? - Фон DD? -Имя окнаDD? - Имя классаENDS STRUC - Окраска клиентской области

hdc DD 0 - Указатель на контекст устройства

fErase DD 0 - Стирать ли фон при перерисовке?

left DD 0 - Координаты прямоугольника

top DD 0 - Окна для рисования

right DD 0 - Правая граница

bottom DD 0 - Нижняя граница

fRes DD 0 - Зарезервировано Windows

fIncUp DD 0 - Зарезервировано Windows

Reserv DB 32 dup(0) - Зарезервировано WindowsENDS STRUC - Структура сообщения

MSHWND DD? - Указатель на окно

MSMESSAGE DD? - СообщениеDD? - Дополнительная информация

MSLPARAM DD? - Дополнительная информация

MSTIME DD? - Время отправки сообщения

MSPT DD? - Позиция курсора

MSGSTRUCT ENDS

 



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2020-04-01 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: