Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Сообщения Windows. Тема 3.5 Версии ассемблеров. 3.5.1Microsoft Macro Assembler (MASM). 3.5.2Flat assembler (FASM)




Сообщения Windows

Ниже перечислены основные cообщения Windows, применяемые в ассемблере.

Сообщение системы Назначение
WM_ACTIVATE Посылается функции окна перед активизацией окна.
WM_CLOSE Сообщение, приходящее на процедуру окна при его закрытии.
WM_COMMAND Сообщение, приходящее при наступлении.
WM_CREATE Первое сообщение, приходящее на функцию окна при создании.
WM_DEADCHAR Сообщение, возникающее при трансляции сообщения.
WM_DESTROY Сообщение, приходящее на функцию окна при уничтожении.
WM_GETTEXT Посылается окну для получения текстовой строки.
WM_HOTKEY Генерируется при нажатии горячей клавиши.
WM_KEYDOWN Сообщение, генерируемое при нажатии клавиши клавиатуры.
WM_KEYUP Сообщение, генерируемое при отпускании клавиши клавиатуры.
WM_LBUTTONDOWN Сообщение генерируется при нажатии левой кнопки мыши.
WM_MENUSELECT Посылается окну, содержащему меню, при выборе пункта меню.
WM_PAINT Сообщение посылается окну перед его перерисовкой.
WM_RBUTTONDOWN Сообщение генерируется при нажатии правой кнопки мыши.
WM_SETFOCUS Сообщение, посылаемое окну, после получения фокуса.
WM_SETTEXT Сообщение для посылки текстовой строки.
WM_SIZE Посылается функции окна после изменения его размера.
WM_SYSCOMMAND Генерируется при выборе пунктов меню.
WM_SYSDEADCHAR Сообщение, возникающее при трансляции сообщения.
WM_TIMER Сообщение, приходящее после определения интервала таймера.

Тема 3. 5 Версии ассемблеров

3. 5. 1Microsoft Macro Assembler (MASM)

MASM — ассемблер для процессоров семейства x86. Первоначально был произведён компанией Microsoft для написания программ в операционной системе MS-DOS и был в течение некоторого времени самым популярным ассемблером, доступным для неё. Это поддерживало широкое разнообразие макросредств и структурированность программных идиом, включая конструкции высокого уровня для повторов, вызовов процедур и чередований (поэтому MASM — ассемблер высокого уровня). Позднее была добавлена возможность написания программ для Windows. MASM — один из немногих инструментов разработки Microsoft, для которых не было отдельных 16- и 32-битных версий.

В начале 1990-х годов альтернативные ассемблеры, вроде Borland TASM и свободного ассемблера NASM, начали отбирать часть доли рынка MASM. Однако два события в конце 1990-х позволили MASM сохранить большую часть своей доли: сначала Microsoft прекратила продавать MASM как коммерческий продукт. Во-вторых, благодаря пакету MASM32 оказалось, что программирование на MASM возможно и в среде Microsoft Windows. В 2000 году MASM 6. 15 был выпущен как часть пакета разработки Visual C++ и все версии Visual C++ после 6. 0 включали в себя версию MASM, равную версии Visual C++. Позже в Visual C++ 2005 появилась 64-битная версия MASM. Вместе с большим сообществом программистов MASM эти события помогли остановить снижение популярности MASM по сравнению с другими ассемблерами. Сегодня MASM продолжает использоваться на платформе Win32, несмотря на конкуренцию с новыми продуктами, такими как NASM, FASM, TASM, HLASM.

Есть много развивающихся проектов для разработки программного обеспечения, которые поддерживают MASM, включая интегрированные среды разработки (ИСР), например RadASM. http: //ru. wikipedia. org/wiki/%D0%9E%D1%82%D0%BB%D0%B0%D0%B4%D1%87%D0%B8%D0%BA

Версии MASM. Хотя MASM больше не является коммерческим продуктом, Microsoft продолжает поддерживать исходный код, используемый и в других продуктах Microsoft. С тех пор как Microsoft прекратила продавать MASM отдельно, было выпущено несколько обновлений к производственной линии MASM 6. x (последнее обновление — версия 6. 15, которая была включена в Visual C++ 6. 0), а после этого — MASM 7. 0 в составе Visual C++. NET 2002, MASM 7. 1 в составе Visual C++. NET 2003, MASM 8. 0 в составе Visual C++ 2005 и MASM 9. 0 в составе Visual C++ 2008, поддерживающие платформу x64.

3. 5. 2Flat assembler (FASM)

FASM - свободно распространяемый многопроходной ассемблер, написанный Томашем Грыштаром (польск. Tomasz Grysztar). FASM написан на самом себе, обладает небольшими размерами и очень высокой скоростью компиляции, имеет богатый и ёмкий макро-синтаксис, позволяющий автоматизировать множество рутинных задач. Поддерживаются как объектные форматы, так и форматы исполняемых файлов. Это позволяет в большинстве случаев обойтись без компоновщика. В остальных случаях нужно использовать сторонние компоновщики, поскольку таковой вместе с FASM не распространяется.

Компиляция программы в FASM состоит из 2 стадий: препроцессирование и ассемблирование. На стадии препроцессора раскрываются все макросы, символические константы, обрабатываются директивы препроцессора. В отличие от стадии ассемблирования, препроцессирование выполняется только 1 раз. Смешивание стадий ассемблирования и препроцессирования — распространённая ошибка начинающих.

На стадии ассемблирования определяются адреса меток, обрабатываются условные директивы, раскрываются циклы и генерируется собственно программа. FASM — многопроходной ассемблер, что позволяет ему делать некоторую оптимизацию, например, генерирование короткого перехода на метку вместо длинного. Во время прохода компилятор не всегда может вычислить выражение в условных директивах. В этом случае он делает какой-нибудь выбор и пытается скомпилировать дальше. Благодаря тому, что адреса меток, вычисленные на N-ном проходе, используются на N+1-проходе, этот процесс обычно сходится.

Используется Intel-синтаксис записи инструкций. Единственное существенное отличие от формата, принятого в других ассемблерах (MASM, TASM в режиме совместимости с MASM) — значение ячейки памяти всегда записывается в квадратных скобках - [label_name], а просто label_name означает адрес (то есть порядковый номер) ячейки. Это позволяет обходиться без ключевого слова offset. Также в FASM при переопределении размера операнда вместо byte ptr пишется просто byte, вместо word ptr — word и т. д. Не позволяется использовать несколько квадратных скобок в одном операнде, таким образом вместо [bx][si] необходимо писать [bx+si]. Эти изменения синтаксиса привели к более унифицированному и лёгкому для чтения коду.

Использование FASM поддерживают многие специализированные ИСР, такие как RadASM, WinAsm Studio, Fresh (IDE) (специально спроектированный под FASM) и т. д.

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...