Создание программы с использованием программного продукта Turbo Assembler

Формирование опыта создания программ с использованием программного продукта Turbo Assembler. Использование меньшего количества команд и обращений в память, увеличение скорости и уменьшение размера программы. Степень сложности совместной разработки.

Рубрика Программирование, компьютеры и кибернетика
Вид реферат
Язык русский
Дата добавления 24.02.2010
Размер файла 15,4 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

2

Содержание

  • Введение
    • Исследование WinAPI функций
    • Заключение
    • Библиографический список
    • Приложения

Введение

Целью данного курсового проекта является углубление и закрепление знаний, полученных по дисциплине "Системное программное обеспечение", формирование опыта создания программ с использованием программного продукта Turbo Assembler.

Главным же преимуществом языка ассемблера, в отличие от языков типа Pascal или C, является то, что искусный программист, как правило, способен написать более эффективную программу на ассемблере, чем те, что генерируются трансляторами с языков программирования высокого уровня. Т.е. для программ на ассемблере характерно использование меньшего количества команд и обращений в память, что позволяет увеличить скорость и уменьшить размер программы.

Однако, в силу своей машинной ориентации ("низкого" уровня) человеку по сравнению с языками программирования высокого уровня сложнее читать и понимать программу, она состоит из слишком "мелких" элементов - машинных команд, соответственно усложняются программирование и отладка, растет трудоемкость, велика вероятность внесения ошибок. В значительной степени возрастает сложность совместной разработки.

Исследование WinAPI функций

Функция LoadIcon

Загpужает поименованный pесуpс пиктогpаммы.

В случае успешного завеpшения - идентификатоp пиктогpаммы; 0 - в пpотивном случае.

Функция LoadCursor

Загpужает поименованный pесуpс куpсоpа.

В случае успешного завеpшения - идентификатоp куpсоpа; 0 - если куpсоp не найден; не опpеделено, если pесуpс не является pесуpсом куpсоpа.

Функция RegisterClassEx

Регистpиpует класс окна, атpибуты котоpого опpеделены паpаметpом WndClassEx, для последующего использования. Класс окна может pегистpиpоваться только один pаз.

Функция ShowWindow

Отобpажает или пpячет окно обpазом, указанным паpаметpом CmdShow.

Функция GetMessage

Считывает сообщение, в pамках диапазона фильтpации, из очеpеди сообщений пpикладной задачи. Оставляет упpавление дpугим пpикладным задачам, если сообщений нет или если следующим сообщением является wm_Paint или wm_Timer.

Функция DefWindowProc

Обеспечивает стандаpтную обpаботку сообщений для сообщений, которые явно не обpабатываются пpикладной задачей.

Возвpащаемое значение: результат обpаботки сообщения.

Заключение

В ходе выполнения данной курсовой работы были получены практические навыки по программированию в Win32 API. Была реализована программа на низкоуровневом языке Ассемблер в EXE-формате с использованием программного продукта Turbo Assembler, удовлетворяющая требованиям задания: данная программа осуществляет вывод сообщения от клавиатуры в свое окно.

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

1. Методические указания к лабораторному практикуму /В.П. Кулюкин. Екатеринбург: изд. ИПК УГТУ, 2004. - 40с.

2. Лабораторный практикум по дисциплине "Системное программное обеспечение" / Уфимск. гос. авиац. техн. ун-т. Сост.: О.Д. Лянцев. - Уфа, 2008. - 57 с.

3. Калашников О.А. Ассемблер? Это просто! Учимся программировать. СПб.: БХВ-Петербург, 2006. - 384 с.: ил.

4. Абель П. Ассемблер. Язык и программирование для IBM PC / Пер. с англ. - К.: Век+, М.: ЭНТРОП, 2005. - 736 с.

Приложения

Приложение А - Исходный текст программы

.586

. model flat, stdcall

extern GetModuleHandleA: near

extern LoadIconA: near

extern LoadCursorA: near

extern RegisterClassA: near

extern CreateWindowExA: near

extern GetMessageA: near

extern ShowWindow: near

extern UpdateWindow: near

extern TranslateMessage: near

extern DispatchMessageA: near

extern ExitProcess: near

extern DefWindowProcA: near

extern PostQuitMessage: near

extern BeginPaint: near

extern EndPaint: near

extern TextOutA: near

extern SetBkColor: near

extern InvalidateRect: near

includelib user32. lib

includelib kernel32. lib

includelib gdi32. lib

include windows. inc

style equ CS_HREDRAW + CS_VREDRAW + CS_GLOBALCLASS

_Data segment

hWnd dd 0

msg MSG <? >

wc WNDCLASS <? >

pnt PAINTSTRUCT <? >

hInst dd 0

TitleName db 'Программа 1',0

ClassName db 'Class32',0

char WPARAM 20h

clear db ' ',0

hdc dd 0

_Data ends

_Code segment

Start:

push 0

call GetModuleHandleA

mov [hInst],eax

mov [wc. style],style

mov [wc. lpfnWndProc],offset WndProc

mov [wc. cbClsExtra],0

mov [wc. cbWndExtra],0

mov eax, [hInst]

mov [wc. hInstance],eax

push IDI_APPLICATION

push 0

call LoadIconA

mov [wc. hIcon],eax

push IDC_CROSS

push 0

call LoadCursorA

mov [wc. hCursor],eax

mov [wc. hbrBackground],0

mov dword ptr [wc. lpszMenuName],0

mov dword ptr [wc. lpszClassName],offset ClassName

push offset wc

call RegisterClassA

push 0

push [hInst]

push 0

push 0

push 400

push 400

push 100

push 100

push WS_OVERLAPPEDWINDOW

push offset TitleName

push offset ClassName

push 0

call CreateWindowExA

cmp eax,0

jz _err

mov [hWnd],eax

push SW_SHOWNORMAL

push [hWnd]

call ShowWindow

push [hWnd]

call UpdateWindow

msg_loop:

push 0

push 0

push 0

push offset msg

call GetMessageA

cmp eax,0

je end_loop

push offset msg

call TranslateMessage

push offset msg

call DispatchMessageA

jmp msg_loop

end_loop:

push [msg. wParam]

call ExitProcess

_err:

jmp end_loop

WndProc proc

push ebp

mov ebp,esp

push ebx

push esi

push edi

cmp dword ptr [ebp+0ch],WM_DESTROY

je wmdestroy

cmp dword ptr [ebp+0ch],WM_CREATE

je wmcreate

cmp dword ptr [ebp+0ch],WM_PAINT

je wmpaint

cmp dword ptr [ebp+0ch],WM_CHAR

je wmchar

jmp defwndproc

wmchar:

push dword ptr [ebp+10h]

pop char

push TRUE

push NULL

push dword ptr [ebp+08h]

call InvalidateRect

wmpaint:

push offset pnt

push dword ptr [ebp+08h]

call BeginPaint

mov hdc,eax

push 5

push offset clear

push 100

push 100

push hdc

call TextOutA

push 1

push offset char

push 100

push 100

push hdc

call TextOutA

push offset pnt

push eax

call EndPaint

mov eax,0

jmp finish

wmcreate:

mov eax,0

jmp finish

defwndproc:

push dword ptr [ebp+14h]

push dword ptr [ebp+10h]

push dword ptr [ebp+0ch]

push dword ptr [ebp+08h]

call DefWindowProcA

jmp finish

wmdestroy:

push 0

call PostQuitMessage

mov eax,0

finish:

pop edi

pop esi

pop ebx

pop ebp

ret 16

WndProc endp

lenstr proc

push ebp

mov ebp,esp

push esi

mov esi,dword ptr [ebp+8]

xor ebx,ebx

lbl1:

cmp byte ptr [esi],0

jz lbl2

inc ebx

inc esi

jmp lbl1

lbl2:

pop esi

pop ebp

ret 4

lenstr endp

_Code ends

end Start


Подобные документы

  • Разработка программного продукта на языке программирования Turbo C. Назначение и область применения программы. Установка и запуск программы. Наиболее важные функции приложения с руководством по их использованию. Возможные проблемы и пути их устранения.

    курсовая работа [1,2 M], добавлен 11.09.2012

  • Создание программы для вычисления значения функции на основе определённой формулы. Уточнение структуры входных и выходных данных и определение ассемблерного формата их представления. Разработка алгоритмов для реализации работы программного обеспечения.

    курсовая работа [240,6 K], добавлен 17.06.2013

  • Характеристика программного продукта и стадий разработки. Расчет затрат на разработку и договорной цены, эксплуатационных расходов, связанных с использованием нового программного продукта. Оценка конкурентоспособности. Изучение, оценка рыночного спроса.

    курсовая работа [139,0 K], добавлен 22.09.2008

  • Рассмотрение основных особенностей компьютерной программы Assembler: функции, структурное описание. Характеристика собственных векторов обработчиков прерываний. Div64 как функция-вычислитель, реализующая операцию деления знаковых чисел в формате 64:16.

    контрольная работа [224,7 K], добавлен 11.03.2013

  • Структурная схема микроконтроллера, процесс разработки принципиальной схемы и программного обеспечения. Конфигурирование регистров аналого-цифрового преобразователя. Код программы на языке Assembler, конфигурирование регистров внешних прерываний.

    курсовая работа [267,5 K], добавлен 08.06.2019

  • Особенности алгоритмов, критерии качества. Создание и применение программного продукта на языке Delphi. Тип операционной системы. Внутренняя структура программного продукта. Руководство пользователя и программиста, расчет себестоимости и цены программы.

    дипломная работа [1,5 M], добавлен 12.06.2009

  • Основные требования к составу и параметрам технических средства. Верификация программного продукта. Расширение функционала программы и его реализация. Отладка и тестирование программного продукта. Тестирование программы в граничных и реальных условиях.

    курсовая работа [1,3 M], добавлен 29.12.2014

  • Робота з цілими значеннями за допомогою арифметичних команд. Механізм роботи команд передачі керування мови Assembler. Типи даних "FPU" та система регістрів. Програма та її структура на мові Assembler, робота з директивами. Текстовий режим відеоадаптера.

    лабораторная работа [1,7 M], добавлен 31.05.2014

  • Алгоритм разработки программного обеспечения. Выбор оптимальной среды программирования. Использование регистров специального назначения. Листинг программы в кодах языка Assambler. Результаты ее компилирования. Блок схема основной программы и макроса RND.

    курсовая работа [416,5 K], добавлен 11.03.2015

  • Арифметические команды языка Assembler в архитектуре x86. Организация ветвлений и циклов в программах. Ввод строк с клавиатуры и команды пакетной обработки (строковые команды). Алгоритм вывода на экран в текстовом режиме с использованием средств BIOS.

    контрольная работа [18,0 K], добавлен 05.07.2014

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.