Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Vstup.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
250.34 Кб
Скачать

3 Розробка програмного додатку

3.1 Вибір середовища програмування

Нині дуже багато середовищ та мов програмування. При виборі середовища програмування необхідно враховувати багато чинників, головними з яких є: виконання поставлених завдань, зручний та зрозумілий інтерфейс користувача.

Розглянемо деякі середовища програмування для мови Assembler.

Розглянемо деякі середовища програмування для мови асемблеру.

Masm32 Macro Assembler (MASM) – асемблер для процесорів сімейства x86. Спочатку був зроблений компанією Microsoft для написання програм в операційній системі MS- DOS і був протягом деякого часу найпопулярнішим асемблером , доступним для неї. Це підтримувало широке розмаїття макросредств і структурованість програмних ідіом , включаючи конструкції високого рівня для повторів , викликів процедур і чергувань (тому MASM - асемблер високого рівня). Пізніше була додана можливість написання програм для Windows. MASM - один з небагатьох інструментів розробки Microsoft , для яких не було окремих 16 - і 32 - бітових версій.

GSS Visual Assembler - середовище розробки програмного забезпечення для ОС Windows, призначена для розробки програм мовою асемблера.

Зручна візуальна оболонка з легко налаштованим інтерфейсом нагадує інтерфейс Borland Delphi або Microsoft Visual Studio.

Спочатку створювалася під такі асемблерні пакети як TASM і MASM32 але є можливість адаптувати IDE і під інші пакети.

Основні характеристики:

    • можливість налаштувати IDE практично для будь-якого ассемблерного пакета ( MASM32 , TASM та інших);

    • підтримується інтегрований відладчик під MASM32 , що дозволяє налагоджувати програми прямо по вихідного коду (без дизассемблирования );

    • налаштування будь-якої схеми підсвічування тексту;

    • відображення повної структури коду (процедури , макроси , структури , константи і т.д.);

    • автоматичний пошук декларації змінних;

    • додавання ресурсів до проекту;

    • максимальна простота управління проектом;

    • інтерфейс користувача максимально копіює звичний інтерфейс Microsoft Visual Studio або Borland Delphi;

    • підтримка всіх версій платформи Windows;

FASM (flat assembler) - асемблер, для архітектур IA-32 та x86-64, використовує синтаксис intel. Відомий своєю швидкістю компіляції, оптимізацією розміру скомпільованого коду, портованістю на різні ОС та широкими можливостями препроцесора (макросами), що дозволяє автоматизувати безліч рутинних завдань. Він є низькорівневим асемблером та навмисно має лише невелику кількість опцій командного рядка. FASM є вільним та відкритим програмним забезпеченням.

FASM має біндинги до GUI та OpenGL на платформі Windows. Всі версії FASM можуть створювати файли наступних форматів: «сирі» бінарники з пласкою адресацією (що використовуються передусім як DOS COM застосунки чи SYS драйвери), об'єктні файли: ELF  чи COFF (як класичного так і MS-орієнтованого вигляду), чи застосунки у форматах MZ,ELF,PE(включно з драйверамиWDM). Також існує неофіційний порт на архітектуру ARM (FASMARM).

GSS Visual Assembler розроблений з урахуванням потреб , як професійних розробників , так і начінающіх.Embercadero Rad studio C + + Builder / Delphi XE 6

Embarcadero Technologies – американськa компанія, що займається розробкою програмного забезпечення для створення засобів управління базами даних і самих баз даних. Компанія була заснована в жовтні 1993 року Стефаном Вонгом і Стюартом Браунінгом з єдиним на той момент продуктом для адміністрування СУБД Sybase. Зараз компанія виробляє засоби для адміністрування , створення баз даних і додатків працюють з базами даних для наступних платформ: Oracle , Microsoft SQL Server , IBM DB2 , Sybase і MySQL.

RadASM – безкоштовна середовище розробки програмного забезпечення для ОС Windows і не тільки, спочатку призначена для написання програм мовою асемблера.

Має гнучку систему файлів налаштувань, завдяки чому може бути використана як середовище розробки програмного забезпечення на високорівневих мовах, а також документів, заснованих на мовах розмітки. Створена програмістом Ketil Olsen (KetilO).

AsmEdit – це програма, розроблена спеціально для полегшення програмування в Асемблері. Проффессіоналов, постійно программирующие в Асемблері швидше за все вже звикли використовувати якесь редактори, наприклад MultiEdit, або використовують щось своє, а от тим хто тільки починають освоєння цього язка AsmEdit може чимало допомогти.

Середовища розробки з asm вставками:

  • Embarcadero® RAD Studio XE6 являє собою повномасштабне рішення для розробки дійсно «нативних» додатків для для Windows, Mac, Android і iOS на основі єдиної бази вихідних кодів. Ви можете створювати високопродуктивні «нативні» компілюють програми для різних пристроїв з найвищим рівнем користувальницького взаємодії. Розширте ваші Windows-проекти до мобільних додатків, взаємодіючих з даними масштабу підприємства і сервісами BaaS.

 Visual Studio 2013 Експрес C + + Visual Studio Express 2013 для Windows Desktop забезпечує створення класичних додатків на мовах C #, Visual Basic, C + + і, підтримуючи Windows Presentation Foundation (WPF), Windows Forms і Win32.

– Eclipse - вільне модульне інтегроване середовище розробки програмного забезпечення. Розробляється і підтримується Eclipse Foundation і включає проекти, такі як платформа Eclipse, набір інструментів для розробників на мові Java, засоби для управління сирцевими кодами, візуальні побудовники GUI тощо. Написаний в основному на Java, може бути використаний для розробки застосунків на Java і, за допомогою різних плаґінів, на інших мовах програмування, включаючи Ada, C, C++, COBOL, Fortran, Perl, PHP, Python, R, Ruby (включно з каркасом Ruby on Rails), Scala, Clojure та Scheme. Середовища розробки зокрема включають Eclipse ADT (Ada Development Toolkit) для Ada, Eclipse CDT для C/C++, Eclipse JDT для Java, Eclipse PDT для PHP.

Початок коду йде від IBM VisualAge, він був розрахований на розробників Java, складаючи Java Development Tools (JDT). Але користувачі могли розширяти можливості, встановлюючи написані для програмного каркасу Eclipse плагіни, такі як інструменти розробки під інші мови програмування, і могли писати і вносити свої власні плагіни і модулі.

Випущена на умовах Eclipse Public License, Eclipse є вільним програмним забезпеченням. Він став одним з перших IDE під GNU Classpath і без проблем працює під IcedTea.

MonoDevelop - відкрите інтегроване середовище розробки для платформ Linux, Mac OS X та Microsoft Windows, передусім націлене на розробку програм, які використовують і Mono, і Microsoft .NET framework. На даний момент підтримуються мови C#, Java, Boo, Visual Basic.NET, CIL, Python, Vala, C та C++. Також MonoDevelop підтримує такі технології, як Gtk#, ASP.NET MVC, Silverlight, MonoMac и MonoTouch.

MonoDevelop включає можливості подібні до NetBeans та Microsoft Visual Studio, такі як автоматичне доповнення, інтеграція контролю коду, графічний користувацький інтерфейс і веб-дизайнер. В MonoDevelop інтегрований Gtk# GUI дизайнер під назвою Stetic.

Проаналізувавши можливості та переваги кожної з середовищ програмування, описаних вище, було прийнято рішення середовище програмування FASM для реалізації поставленого завдання на мові Assembler.

3.2 Алгоритм додатку

Алгоритм додатку складається з 2 блок-схем:

    • схема процедури DialogProc (Рис.3.1)

    • загальна блок-схема (Рис.3.2)

Рисунок 3.1 – Блок-схема процедури DialogProc

Рисунок 3.2 – Загальна блок-схема

3.3 Інструкція користувача

Після запуску виконавчого файлу з’являється вікно, яке має 7 полів вводу. Кожне поле треба заповнити обов’язково.

Сервер – IP адреса сервера

Порт – порт серверу

Логин – ім’я користувача для входу

Пароль – пароль

Каталог – шлях куди треба завантажити файл

Локальний файл – розташування файлу який треба завантажити

Загрузить как – назва файлу, що завантажується

Вікно програми зображено на рисунку 3.3:

Рисунок 3.3 – Вікно програми

Для з’єднання с FTP- сервером, необхідно зареєструватися на віддаленому комп’ютері або як користувач зі своїм іменем чи зайти як анонімний користувач. Для цього в даних полях потрібно ввести ім’я користувача и пароль.

Коли з’єднання зі сервером відбулося можна починати завантаження файлів. Для цього потрібно вибрати папку в котру потрібно завантажити файл і вписати її в поле « Каталог».

Коли папка вибрана, потрібно вибрати той файл який потрібно завантажити на FTP-сервер. Для цього потрібно в поле «Локальний файл» вписати місце знаходження файлів.

Залишається останнє поле яке потрібно заповнити – «Загрузить как». В цьому полі потрібно вписати назву файлу який потрібно завантажити на сервер.

Коли всі поля заповнені, то можна розпочинати завантаження файлу на FTP-сервер. Для цього потрібно натиснути кнопку «Загрузить». Якщо операція виконалась успішно, то з’явитися вікно зі текстом «File uploaded». Вікно зі зображенням виконаної операції зображено на рисунку 3.4.

Рисунок 3.4 – Вікно успішно виконаної операції завантаження

Висновки

У даному курсовому проекту було розроблено додаток який виступає FTP-клієнтом, працюючим в OC Windows. Результатом виконання курсового проекту є три розділи: опис предметної області, опис функцій WinApi, вибір середовища програмування та інструкція користувача.

Використовувався пакет FASM на основі вільно розповсюджуваного ПЗ FASM встановлений в кореневому каталозі з диску С.

Програма займає після компіляції та відладки 4 КБ.

Файли проекту займають 7 КБ.

Список використаних джерел

  1. Аблязов Р. Программирование на Ассемблере на платформе х86 – 64 – 304 с. 2011.

  2. Ирвин К. Язык ассемблера для процессоров Intel. – М.: Изд. дом «Вильямс», 2005.

  3. Калашников О.А. Ассемблер – это просто. Учимся программировать. 2 - е издание.336 с. 2011.

  4. Пирогов В.Ю. ASSEMBLER. Учебный курс.- М.: Издатель Молгачева С.В., Издательство Нолидж, 2001. - 848 с., ил.

  5. Румянцев П.В. Исследование программ Win32: до дизассемблера и отладчика – 367 с.2004.

  6. Юров В. И. Assembler. Учебник для вузов. 2-е изд. /- СПб.: Питер, 2003. 637 с.

ДОДАТОК А

include 'WIN32A.INC'

section '.data' data readable writeable

szError db 'Error',0

szText1 db 'Can not open Internet connection',0

szText2 db 'Can not open FTP connection',0

szText3 db 'Can not change FTP directory',0

szText4 db 'Can not upload file',0

szOK db 'OK',0

szText5 db 'File uploaded',0

user_agent db 'Simple FTP Uploader',0

login rb 100

password rb 100

server rb 100

port dd ?

local_file rb MAX_PATH

remote_file rb MAX_PATH

remote_dir rb MAX_PATH

hInet dd ?

hConnection dd ?

INTERNET_OPEN_TYPE_PRECONFIG =0

INTERNET_FLAG_PASSIVE = 0x08000000

INTERNET_SERVICE_FTP = 1

FTP_TRANSFER_TYPE_BINARY = 2

section '.code' code readable executable

start:

invoke GetModuleHandle,0

invoke DialogBoxParam,eax,37,HWND_DESKTOP,DialogProc,0

invoke ExitProcess,0

proc DialogProc hwnddlg,msg,wparam,lparam

push ebx esi edi

cmp [msg],WM_INITDIALOG

je .wminitdialog

cmp [msg],WM_COMMAND

je .wmcommand

cmp [msg],WM_CLOSE

je .wmclose

xor eax,eax

jmp .finish

.wminitdialog:

jmp .processed

.wmcommand:

cmp [wparam],BN_CLICKED shl 16 + IDCANCEL

je .wmclose

cmp [wparam],BN_CLICKED shl 16 + ID_UPLOAD

je .wmupload

jmp .processed

.wmupload:

; Отримуємо дані для підключення

invoke GetDlgItemText,[hwnddlg],ID_SERVER,server,100

invoke GetDlgItemInt,[hwnddlg],ID_PORT,0,FALSE

mov [port],eax

invoke GetDlgItemText,[hwnddlg],ID_LOGIN,login,100

invoke GetDlgItemText,[hwnddlg],ID_PASSWORD,password,100

invoke GetDlgItemText,[hwnddlg],ID_DIR,remote_dir,MAX_PATH

invoke GetDlgItemText,[hwnddlg],ID_LFILE,local_file,MAX_PATH

invoke GetDlgItemText,[hwnddlg],ID_RFILE,remote_file,MAX_PATH

; Відкрити інтернет-з’єднання

invoke InternetOpen,user_agent,INTERNET_OPEN_TYPE_PRECONFIG,NULL,NULL,0

or eax,eax

jnz @f

invoke MessageBox,[hwnddlg],szText1,szError,MB_OK

jmp .processed

@@:

mov [hInet],eax

; Відкрити FTP-з’єднання

invoke InternetConnect,[hInet],server,[port],login,password,INTERNET_SERVICE_FTP,INTERNET_FLAG_PASSIVE,0

or eax,eax

jnz @f

invoke InternetCloseHandle,[hInet]

invoke MessageBox,[hwnddlg],szText2,szError,MB_OK

jmp .processed

@@:

mov [hConnection],eax

; Установить рабочую директорию на FTP

invoke FtpSetCurrentDirectory,[hConnection],remote_dir

cmp eax,TRUE

je @f

invoke InternetCloseHandle,[hConnection]

invoke InternetCloseHandle,[hInet]

invoke MessageBox,[hwnddlg],szText3,szError,MB_OK

jmp .processed

@@:

invoke FtpPutFile,[hConnection],local_file,remote_file,FTP_TRANSFER_TYPE_BINARY,0

cmp eax,TRUE

je @f

invoke InternetCloseHandle,[hConnection]

invoke InternetCloseHandle,[hInet]

invoke MessageBox,[hwnddlg],szText4,szError,MB_OK

jmp .processed

@@:

invoke InternetCloseHandle,[hConnection]

invoke InternetCloseHandle,[hInet]

invoke MessageBox,[hwnddlg],szText5,szOK,MB_OK

jmp .processed

.wmclose:

invoke EndDialog,[hwnddlg],0

.processed:

mov eax,1

.finish:

pop edi esi ebx

ret

endp

section '.idata' import data readable writeable

library kernel32,'kernel32.dll',\

user32,'user32.dll',\

shell32,'shell32.dll',\

wininet,'wininet.dll'

include 'api\kernel32.inc'

include 'api\user32.inc'

include 'api\shell32.inc'

import wininet,\

InternetOpen,'InternetOpenA',\

InternetConnect,'InternetConnectA',\

FtpPutFile,'FtpPutFileA',\

FtpSetCurrentDirectory,'FtpSetCurrentDirectoryA',\

InternetCloseHandle,'InternetCloseHandle'

section '.rsrc' resource data readable

directory RT_DIALOG,dialogs

resource dialogs,\

37,LANG_ENGLISH+SUBLANG_DEFAULT,demonstration

ID_UPLOAD = 100

ID_SERVER = 101

ID_PORT = 102

ID_LOGIN = 103

ID_PASSWORD = 104

ID_DIR = 105

ID_LFILE = 106

ID_RFILE = 107

dialog demonstration,'Simple FTP Uploader',0,0,190,135,WS_CAPTION+WS_SYSMENU+DS_CENTER+DS_SYSMODAL

dialogitem 'BUTTON','',-1, 2, -1, 185, 115,WS_VISIBLE+BS_GROUPBOX

dialogitem 'STATIC','Server:',-1,6,8,40,13,WS_VISIBLE+SS_RIGHT

dialogitem 'EDIT','example.com', ID_SERVER,53,7,130,13,WS_VISIBLE+WS_BORDER+WS_TABSTOP+ES_AUTOHSCROLL

dialogitem 'STATIC','Port:',-1,6,23,40,13,WS_VISIBLE+SS_RIGHT

dialogitem 'EDIT','21', ID_PORT,53,22,130,13,WS_VISIBLE+WS_BORDER+WS_TABSTOP

dialogitem 'STATIC','Login:',-1,6,38,40,13,WS_VISIBLE+SS_RIGHT

dialogitem 'EDIT','', ID_LOGIN,53,37,130,13,WS_VISIBLE+WS_BORDER+WS_TABSTOP

dialogitem 'STATIC','Password:',-1,6,53,40,13,WS_VISIBLE+SS_RIGHT

dialogitem 'EDIT','', ID_PASSWORD,53,52,130,13,WS_VISIBLE+WS_BORDER+WS_TABSTOP

dialogitem 'STATIC','Directory:',-1,6,68,40,13,WS_VISIBLE+SS_RIGHT

dialogitem 'EDIT','/public_html/', ID_DIR,53,67,130,13,WS_VISIBLE+WS_BORDER+WS_TABSTOP

dialogitem 'STATIC','Local file:',-1,6,83,40,13,WS_VISIBLE+SS_RIGHT

dialogitem 'EDIT','D:\data.txt', ID_LFILE,53,82,130,13,WS_VISIBLE+WS_BORDER+WS_TABSTOP

dialogitem 'STATIC','Upload as:',-1,6,99,40,13,WS_VISIBLE+SS_RIGHT

dialogitem 'EDIT','data.txt', ID_RFILE,53,98,130,13,WS_VISIBLE+WS_BORDER+WS_TABSTOP

dialogitem 'BUTTON','Upload',ID_UPLOAD,80,117,50,15,WS_VISIBLE+WS_TABSTOP+BS_PUSHBUTTON

dialogitem 'BUTTON','Exit',IDCANCEL,135,117,50,15,WS_VISIBLE+WS_TABSTOP+BS_PUSHBUTTON

enddialog

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]