Тестирование программы. Содержание
Содержание
Введение................................................................................................. 5
1 Описание.............................................................................................. 6
2 Текст программы................................................................................ 7
3 Тестирование....................................................................................... 8
Заключение............................................................................................. 9
Список используемых источников...................................................... 10
Введение
Среди начинающих программистов довольно распространено мнение, что написание программ под ОС Windows на языках низкого уровня исключительно трудоемкая и сложная задача. Минимум, на что согласны эти программисты – это Visual Basic или, на худой конец – Delphi или Builder.
Такие программисты, как правило, не видят за частоколом мастеров и авто построителей для форм и модулей программ, сути тех системных событий, которые происходят на их ПЭВМ при выполнении приложения. Трудно таким программистам и использование системных отладчиков типа WinIse для анализа кода как собственных программ, так и программ сторонних изготовителей.
С другой стороны те программисты, кто нашел в себе силы затратить определенное количество времени на составление и отладку программ под Windows на языке Ассемблер, становятся значительно более продвинутыми специалистами в области программирования приложений в среде Windows, начинают «чувствовать» операционную систему и более квалифицированно подходят к использованию ее возможностей во всех остальных средах программирования.
Описание
Начиная с процессора i386 появилась технология страничной адресации расширенной памяти ПЭВМ, при которой используются расширенные до 32 бит регистры процессора. Приложения, основанные на такой адресации, являются более устойчивыми в работе, более быстро выполняются, однако по размеру исполняемых файлов минимум в двое превосходят 16-ти разрядные приложения.
Текст листинга программы начнется с указания компилятору пользоваться инструкциями минимум 386 процессор.
Модель памяти для 32-х разрядных приложений – flat, то есть вся память адресуется как непрерывная область. Передача параметров между процедурой и стеком – стандартная, поэтому передаем компилятору следующие команды: «.model flat,STDCALL».
Подключаемым файлом с описанием используемых системой переменных и структур – файл win32.
В библиотеке функций для 32-х разрядных приложениях функция вывода сообщения на экран имеет имя MessageBoxA. Кроме того, нам понадобится функция ExitProcess, которая завершает 32-х разрядную программу и передает управление операционной системе. Использовать в 32-х разрядных приложениях функцию 4С00 прерывания 21h уже нельзя.
Для совместимости текстов программ, написанных для 16-ти разрядных приложений, с 32х битным приложением можно ввести обозначение MessageBox, к которому уже привыкли и присвоим ему адрес системной функции MessageBoxA «MessageBox equ <MessageBoxA>».
Теперь в программе мы можем использовать функцию вывода на экран сообщения, обращаясь к ней как по имени MessageBox, так и по имени MessageBoxA. Эти синонимы теперь указывают на одну и ту же системную функцию.
Область кода программы тоже упростится, поскольку в модели памяти FLAT нет понятия «селектор», а есть только «смещение». Поэтому не надо устанавливать DS, а следует только ввести в качестве параметров процедуры нужные смещения в области данных.
Выход из программы осуществляем системной функцией ExitProcess, подавая ей в качестве параметра код выхода 0. Обычно в коде выхода устанавливаются биты ошибки выполнения программы.
Завершение листинга программы осуществляется стандартным образом.
Текст программы
Текст разработанного нами приложения представлен в листинге 2.1.
Листинг 2.1 – Текст файла Lab1.asm
.386 .model flat,STDCALL include win32.inc extrn MessageBoxA:PROC extrn ExitProcess:PROC extrn MessageBoxIndirectA:PROC extrn WinHelpA:proc MessageBox equ <MessageBoxA> .data szMsg db 'Выберите действие',0 szCapt db 'Лаб. работа №1',0 szMsgOK db 'Была нажата кнопка Да.',0 szMsgNO db 'Была нажата кнопка Нет.',0 Path db 'My.hlp',0 MSGBOXPARAMS struc cbSize dd 40 hwndOwner dd 0 hInstance dd 0 lpszText dd 0 lpszCaption dd 0 dwStyle dd 0 lpszIcon dd 0 dwContextHelpId dd 0 lpfnMsgBoxCallback dd 0 dwLanguageId dd 0 MSGBOXPARAMS ends MsBxPrm MSGBOXPARAMS<> .code start: mov dword ptr MsBxPrm.lpszText,offset szMsg mov dword ptr MsBxPrm.lpszCaption,offset szCapt mov dword ptr MsBxPrm.dwStyle,MB_YESNO+MF_HELP mov dword ptr MsBxPrm.lpfnMsgBoxCallback,offset MsgBoxCallback M00: call MessageBoxIndirectA,offset MsBxPrm cmp ax,6 jne M02 jmp M01 M02: call MessageBox,0,offset szMsgNO,offset szCapt,MB_OK+MB_ICONQUESTION jmp M03 M01: call MessageBox,0,offset szMsgOK,offset szCapt,MB_OK+MB_ICONQUESTION jmp M03 M03: call ExitProcess,0 MsgBoxCallback proc lpHlpInf call WinHelpA,0,offset Path,HELP_HELPONHELP,0,0 ret MsgBoxCallback endp ends end start |
Тестирование программы
При запуске программы перед нами открывается окно представленное на рисунке 3.1
Рисунок 3.1 – Стартовое диалоговое окно программы
Если нажать на кнопку «ДА» то откроется новое окно с соответствующей записью (Рисунок 3.2), если в открывшемся окне нажать на кнопку «ОК» то программа закроется.
Рисунок 3.2 – диалоговое окно открывающееся после нажатия на кнопку «ДА»
Если нажать на кнопку «НЕТ» то откроется новое окно с соответствующей записью (Рисунок 3.3), функционал данного окна аналогичен окну описанному выше.
Рисунок 3.3 – диалоговое окно открывающееся после нажатия на кнопку «НЕТ»
Если нажать на кнопку «Справка» то откроется файл My.hlp, ка кна рисунке 3.4 (файл хранит информацию о подключению к интернету).
Рисунок 3.4 – Демонстрация работы кнопки «Справка»
Заключение
В рамках данной лабораторной работы был рассмотрены программные функции Windows, с помощью которой создали свое приложение на языке Ассемблер.
Список используемых источников
1) step1_Win32.doc