Лабораторная работа: График функции по Assembler’у

Лабораторная работа: График функции по Assembler’у




👉🏻👉🏻👉🏻 ВСЯ ИНФОРМАЦИЯ ДОСТУПНА ЗДЕСЬ ЖМИТЕ 👈🏻👈🏻👈🏻




























































Южно-Уральский Государственный Университет
Нарисовать график X=3sint+sin5t; Y=2cos3t+sint
Подключается файл win.inc, к котором хранятся некоторые константы, используемые в программе. В сегменте данных объявляются переменные: декриптор окна консоли, дескриптор совместимого окна консоли, дескриптор приложения, название окна консоли, дескриптор контекста окна, ширина, высота, x, y, t, cons, deg_rad=180, offsetX, offsetY (смещения начала отсчета графика относительно осей Оx и Oy),scaleX, scaleY (масштаб по X и Y).
В сегменте кода вызывается функция GetModuleHandle, при помощи которой получаем дескриптор приложения, после чего помещаем его в eax. Далее заполняем структуру окна стиль. Подключаем процедуру обработки сообщений. Загружаем иконку и курсор с помощью вызова функций LoadIcon и LoadCursor. Задаем цвет фона окна с помощью функции CreateSolidBrush. Регестрируем класс окна с помощью функции RegisterClass. Далее создаем окно зарегестрированного класса с помощью функции CreateWindowEx. Сравниваем eax с нулем. Если он равен 0, то переходим на метку END_LOOP. Помещаем дескриптор окна в регистр eax. Отображаем созданное окно с помощью функции ShowWindow и перерисовываем видимую часть окна при помощи UpdateWindow. Далее следует цикл обработки сообщений, после которого вызывается функция ExitProcess.
После главной функции следует процедура окна. Полученное сообщение сравнивается с сообщениями WM_DESTROY, WM_CREATE, WM_SIZE, WM_PAINT. В случае соответствия следует переход на соответствующую метку.
WMSIZE: Дескриптор совместимого окна консоли сравнивается с 0 и если не равен, то переходим на метку WMCREATE. В противном случае удаляем контекст окна.
WMCREATE: Передаем дескриптор окна и помещаем его в eax. Создаем совместимый контекст окна с помощью функции CreateCompatibleDC и помещаем дескриптор совместимого контекста в регистр eax. Получаем размер окна при его изменении с помощью функции GetWindowRect. Находим высоту и ширину данного размера окна. Создаем карту бит для данного контекста окна с помощью функции CreateCompatibleBitmap. Выбираем объект с помощью функции SelectObject. Задаем цвет фона, а также рисуем прямоугольник с помощью выбранной кисти. Задаем цвет пера при помощи функции CreatePen. Помещаем дескриптор пера в регистр eax и выбираем объект. Помещаем в offsetYмаксимальную высоту, видимую на экране. Аналогичные действия проделываем и с осью Ох. Рисуем горизонтальную и вертикульную оси координат. Создаем перо и выбираем цвет.
Помещаем в ScaleX и ScaleY значения (width-16)/4 и (height-54)/2. Это необходимо для более пропорционального расположения графика в окне. Помещаем в ecx 360, на метке L загружаем ecx в стек. Помещаем в cons5. Загружаем последовательно в стек t и PI. Перемножаем их и делим на deg_rad, в которой хранится значение 180. Загружаем в стек consи перемножаем st(0) и st(1). Вычисляем синус. Это sin(5t). Подобные операции проделываем, чтобы получить 3sint. Затем складываем 3sint и sin(5t). Умножаем результат на ScaleX и прибавляем к offsetX. Заносим в стек 2 и умножаем на вычисленное cos(3t), добавляем sint. Умножаем это на ScaleY и прибавляем к offsetY. Уыеличиваем t на единицу. Проводим линию для данных значений X и Y. Выгружаем ecx из стека и сравниваем его с 0. Если равно, то идем на метку М. В противном случае уменьщаем ecx на единицу и переходим снова на метку L. На метке М передаем полученные данные в виртуальное окно и даем команду перерисовки. Задаем цвет фона и букв с помощью функции SetBkColor. Помещаем в eaxmess_len. Выводим текст названия функции на экран. Обнуляем eax. Переходим на метку FINISH.
WMPAINT: Перерисовываем окно с помощью функции BeginPaint. Помещаем дескриптор окна в eax. Копируем содержимое виртуального окна в реальное. Заканчиваем перерисовку окна с помощью функции EndPaint. Обнуляем eax. Переходим на метку FINISH.
WMDESTROY: Удаляем контексты окна. При получении сообщения WM_QUIT вызываем функцию PostQuitMessage. Обнуляем eax. Переходим на метку FINISH.
DEFWNDPROC: Вызываем обработчик сообщений по умолчанию.
FINISH: Передаем управление вызывающей функции, завершаем данную функцию.
TITL db "Курсовой_Копылов_ПС-116",0
messX db 'X=3sint+sin5t Y=2*cos3t +sint',0
mov wc.style,CS_HREDRAW+CS_VREDRAW+CS_GLOBALCLASS
mov wc.lpszClassName,offset CLASSNAME
WS_CAPTION+WS_SYSMENU+WS_THICKFRAME+WS_GROUP+WS_TABSTOP,
invoke ShowWindow,hwnd,SW_SHOWNORMAL
invoke GetMessage,offset Message,0,0,0
invoke TranslateMessage,offset Message
invoke DispatchMessageA,offset Message
WNDPROC proc hW:DWORD,Mes:DWORD,wParam:DWORD,lParam:DWORD
invoke GetWindowRect,hW,offset rect_
invoke CreateCompatibleBitmap,hdc,Width_,Height_
invoke PatBlt,memdc,0,0,Width_,Height_,PATCOPY
invoke LineTo,memdc,OffsetX,Height_
invoke CreatePen,PS_SOLID,2,00000000h
invoke InvalidateRect,hW,offset rect_,0
offset messX, eax ; выводтекста X=3cost+cos5t Y=log2(e)*cos3t +sint
invoke BitBlt,hdc,0,0,Width_,Height_,memdc,0,0,SRCCOPY
invoke DefWindowProc,hW,Mes,wParam,lParam
Полученный график полностью совпадает с тем, что получен в программе GraphCalc. Следовательно, моя программа работает верно.

Название: График функции по Assembler’у
Раздел: Рефераты по информатике, программированию
Тип: лабораторная работа
Добавлен 12:53:50 07 октября 2008 Похожие работы
Просмотров: 31
Комментариев: 15
Оценило: 3 человек
Средний балл: 5
Оценка: неизвестно   Скачать

Срочная помощь учащимся в написании различных работ. Бесплатные корректировки! Круглосуточная поддержка! Узнай стоимость твоей работы на сайте 64362.ru
Привет студентам) если возникают трудности с любой работой (от реферата и контрольных до диплома), можете обратиться на FAST-REFERAT.RU , я там обычно заказываю, все качественно и в срок) в любом случае попробуйте, за спрос денег не берут)
Да, но только в случае крайней необходимости.

Лабораторная работа: График функции по Assembler’у
Реферат: ивно практическая работа
Реферат: Субъекты и объекты инвестиционной деятельности
Сочинение Рассуждение Кто Прав
Ключевые Слова В Реферате Пример
Реферат по теме Инновационные направления развития системы физического воспитания детей дошкольного возраста
1132 1223 Историческое Сочинение
Сочинение По Картине Юона Русская Зима
Эссе Образец
Курсовая работа по теме Установка эффективной системы электроснабжения в ПО "Саранинский хлебозавод"
Дипломная работа по теме Разработка редуктора для привода ленточного конвейера
Дипломные По Лингвистике Темы
Контрольные Работы Петерсон 5 Класс Скачать Бесплатно
Ответы На Темы Сочинений
Реферат Sql
Курсовая Работа На Тему Цирроз Печени
Контрольная работа по теме Теория 'морского могущества' А.Т. Мэхена
Контрольная работа по теме Маркетинговая стратегия предприятия
Сезонные Заболевания Реферат
Реферат: Конституция - основной закон государства
Сочинение Для Оркестра Состоящее Из 4
Сочинение: Тема города в комедии Ревизор и поэме Мертвые души Н.В.Гоголя
Реферат: Волейбол в школе
Доклад: Финансовые ведомства Римской империи в IV веке

Report Page