Исследование методов цветного графического вывода с помощью ассемблера - Студенческий научный форум

XII Международная студенческая научная конференция Студенческий научный форум - 2020

Исследование методов цветного графического вывода с помощью ассемблера

Кузнецов А.Е. 1, Абрамова О.Ф. 1
1ВПИ (филиал) ВолгГТУ
 Комментарии
Текст работы размещён без изображений и формул.
Полная версия работы доступна во вкладке "Файлы работы" в формате PDF

Создание графических элементов с помощью низкоуровневых языков – достаточно сложный процесс по сравнению с решением тех же задач на высокоуровневых языках программирования. Однако, несмотря на трудоёмкость исполнения, это даёт некоторые преимущества. Например, такие, как:

Более рациональное использование памяти

Более высокая скорость исполнения

максимально эффективное использование ресурсов процесса

Исходя из этого, можно понять, что при работе с большими объёмами графической информации умение работать с графикой на машинно-зависимых языках просто необходимо для создания эффективной программы. По этой причине рассмотрим некоторые способы работы с графическими элементами на языке Assembler.

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

Вывод и ввод символов или строк можно осуществить с помощью системного прерывания int 21h. Перед вызовом данного прерывания необходимо поместить в регистр АН номер необходимой DOS инструкции в шестнадцатеричной системе.

Например, при АН=1, производится ввод символа с клавиатуры, с последующим его отображением в консоли, при АН=2, в консоль выводится символ, код которого находится в регистре AL.

Однако DOS инструкции предназначены для ввода-вывода только символьных элементов и в DOS совершенно нет команд для работы с графикой. С этой целью необходимо обратиться к программам BIOS(Basic-In-Out-System). В BIOS, в отличие от DOS, команды вызываются при помощи различных прерываний (в DOSиспользуется только одно прерывание – int 21h). Прерыванием, отвечающим за работу с видеоадаптером, является прерывание int 10h. Данное прерывание позволяет выполнять следующие функции: вывод строк и символьной информации, смена шрифтов, смена цвета, работа с изображениями и др.

Но существует и более высокий уровень работы с графикой на языке Ассемблера – создание графических примитивов.

Графический примитив – простейший геометрический объект, выводимый на экран дисплея. К таким объектам относятся: точка, прямоугольник, отрезок, окружность и так далее.

Для создания примитива с помощью языка ассемблер, нужно последовательно выполнить некоторые шаги для отрисовки графики:

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

регистрация класса окна – задание процедуры, которая будет выполнять обработку сообщений, поступающих окну;

создание окна зарегистрированного класса, задание его характеристик, таких, как

cbSize – размер структуры окна

hbrBackground – фон окна

hCursor / hIcon – дескрипторы курсора / иконки

Style – стиль окна

отображение окна на экране – вывод созданного окна на экран монитора.

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

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

Для того, чтобы графические объекты были выведены на экран, необходимо, чтобы было отправлено, а затем обработано сообщение WM_PAINT.

Система координат для вывода у графических элементов следующая: ось x направлена вправо, ось y вниз. По умолчанию начало отсчёта начинается от левого верхнего угла окна программы. Однако область графического вывода и её начало можно установить с помощью функций SetViewportExtEx и SetViewportOrgEx соответственно. Единицей измерения является логическая единица, изначально соответствующая пикселю изображения. Но при необходимости данное соотношение можно изменить вызвав функцию SetMapMode.

Цвет графических примитивов задаётся с помощью

SetPixel – точки;

CreatePen – линии (перо);

CreateSolidBrush – замкнутые объекты (кисть);

Так же для отрисовки графики можно использовать следующие функции:

LineTo – создание линии от текущей точки до заданной. Заданная точка становится текущей;

MoveToEx – сменить текущую точку;

Ellipse – создание эллипса;

Rectangle – создание прямоугольника;

Arc – создание дуги;

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

Библиографические ссылки

Habr Создание графических примитивов на Ассемблере [Электронный ресурс] // URL: https://habr.com/post/134495/

Абрамова О.Ф. Использование мультимедийных технологий в процессе обучения дисциплине "Компьютерная графика" / О.Ф. Абрамова, С.В. Белова // Успехи современного естествознания. - 2012. - № 3. - C. 90.

Волжанов А.А. Графический интерфейс как средство визуализации общения [Электронный ресурс] / А.А. Волжанов, О.Ф. Абрамова // Студенческий научный форум 2014 :докл. VI междунар. студ. электрон.науч. конф., 15 февр. – 31 марта 2014 г. Направл.: Технические науки / РАЕ. - М., 2014. - C. 1-4. – Режим доступа :http://www.scienceforum.ru/2014/pdf/6827.pdf.

Юрицын С.В. Обзор методов графической визуализации процесса моделирования информационных систем [Электронный ресурс] / С.В. Юрицын, О.Ф. Абрамова // Студенческий научный форум 2014 :докл. VI междунар. студ. электрон.науч. конф., 15 февр. – 31 марта 2014 г. Направл.: Технические науки / РАЕ. - М., 2014. - C. 1-5. – Режим доступа :http://www.scienceforum.ru/2014/pdf/7555.pdf.

Морозов О. Е. Вывод простейших графических изображении[Электронный ресурс] / Морозов О. Е./электронная база “Здесь живут знания” - 2012 – статья 8 -Режим доступа :http://podelise.ru/docs/index-25143997-3.html

Просмотров работы: 15