Создание программы с использованием программного продукта 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