Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
программирование и основы алгоритмизации.doc
Скачиваний:
34
Добавлен:
21.08.2019
Размер:
4.84 Mб
Скачать

Объединения

Язык ассемблера предоставляет возможность переопределить некоторую область памяти для объекта с другими типом и именем. Для этого используется специальный тип данных, называемый объединением. Объединение — тип данных, позволяющий трактовать одну и ту же область памяти как имеющую разные типы и имена.

Описание объединений в программе напоминает описание структур, то есть сначала описывается шаблон, в котором с помощью директив описания данных перечисляются имена и типы полей:

[имя_объединения] UNION

<описание полей>

[имя_объединения] ENDS

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

MY UNION

mb db ?

mw dw ?

md dd ?

Для описания объекта объединения в тексте программы используется конструкция вида

.data

...

MyData MY <> ;определение экземпляра объединения

Для обращения к полям объединения используется оператор «.» (точка)

mov MyData.mw, 1

mov al, MyData.mb ; al=1

Программирование для windows

Любая программа на языке самого высокого уровня в своем внутреннем виде представляет собой последовательность машинных кодов. А раз так, то всегда остается теоретическая возможность написать ту же программу, но уже на языке ассемблера. Чем обосновать необходимость разработки Windows-приложений на языке ассемблера?

  • язык ассемблера позволяет программисту полностью контролировать создаваемый им программный код и оптимизировать его по своему усмотрению;

  • компиляторы языков высокого уровня помещают в загрузочный модуль программы избыточную информацию. Эквивалентные исполняемые модули, исходный текст которых написан на языке ассемблера, имеют в несколько раз меньший размер;

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

  • приложение, написанное на языке ассемблера, как правило, быстрее загружается в оперативную память компьютера;

  • приложение, написанное на языке ассемблера, обладает, как правило, более высокой скоростью работы и реактивностью ответа на действия пользователя.

Основы программирования в ос Windows

Возможны 3 типа структур программ для Windows:

  • диалоговая (основное окно — диалоговое),

  • консольная, или безоконная структура,

  • классическая структура

Программирование в Windows основывается на использовании функций API (Application Program Interface, т.е. интерфейс программного приложения). Их количество достигает двух тысяч. Программа для Windows в значительной степени состоит из таких вызовов. Все взаимодействие с внешними устройствами и ресурсами операционной системы будет происходить посредством таких функций.

Система Windows является многозадачной. Если программа DOS после своего запуска должна быть постоянно активной, и если ей что-то требуется (к примеру, получить очередную порцию данных с устройства ввода-вывода), то она сама должна выполнять соответствующие запросы к операционной системе, то в Windows все наоборот. Программа пассивна, после запуска она ждет, когда ей уделит внимание операционная система. Операционная система делает это посылкой специально оформленных групп данных, называемых сообщениями. Сообщения могут быть разного типа, они функционируют в системе достаточно хаотично, и приложение не знает, какого типа сообщение придет следующим. Логика построения Windows-приложения должна обеспечивать корректную и предсказуемую работу при поступлении сообщений любого типа. Для обеспечения нормального функционирования своей программы программист должен уметь эффективно использовать функции интерфейса прикладного программирования (API, Application Program Interface) операционной системы, количество которых насчитывает более двух тысяч.

Диалоговые приложения для Windows имеют минимальный интерфейс связи с пользователем и передают информацию пользователю посредством стандартных диалоговых окон (например, окно сообщения MessageBox). Работа программы происходит «вслепую».

Неоконные приложения, также называемые консольными, представляет собой программу, работающую в текстовом режиме. Работа консольного приложения напоминает работу программы MS-DOS. Но это лишь внешнее впечатление. Консольное приложение обеспечивается специальными функциями Windows. Примером консольного приложения является Far.

Оконные приложения строится на базе специального набора функций (API), составляющих графический интерфейс пользователя (GUI, Graphic User Interface). Главным элементом такого приложения является окно. Окно может содержать элементы управления: кнопки, списки, окна редактирования и др. Эти элементы, по сути, также являются окнами, но обладающими особыми свойствами. События, происходящие с этими элементами (и самим окном), приводят к приходу сообщений в процедуру окна.

Разница между оконными и консольными приложениями Windows состоит в том, с каким типом информации они работают.

Все приложения Windows имеют 32-битную архитектуру и используют плоскую модель памяти FLAT. Использование ключевого слова STDCALL при описании модели памяти подразумевает передачу параметров в вызываемые API-функции справа налево (в соответствии с конвенцией STDCALL соглашения о вызовах) независимо от языка, на котором написана вызываемая API-функция.