Студопедия  
Главная страница | Контакты | Случайная страница

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Анализ программы редактора текста.

Читайте также:
  1. C.) Анализ современной среды и деятельности человека показывает, что она может быть названа
  2. F) Всестороннее изучение и анализ учебно-воспитательного процесса в целях координирования целостного педагогического процесса
  3. FMEA – АНАЛИЗ (FAILURE MODE AND EFFECTS ANALYSIS).
  4. I. Историко-философский анализ понятий «виртуальность» и «виртуальная реальность» с античного периода до XX века.
  5. I. Разработка программы мониторинга
  6. II. Метод анализа оперы
  7. II. Начала математического анализа
  8. II. Работа над созданием собственного текста.
  9. II. ТЕХНИКА И ТЕХНОЛОГИЯ ВОДОСНАБЖЕНИЯ И КАНАЛИЗАЦИИ
  10. II. Требования к структуре основной общеобразовательной программы дошкольного образования

Виды работ:

- изучить программу на Ассемблере;

- провести анализ структуры программы;

- провести анализ операторов программы;

- ознакомиться с возможным использованием операторов программного кода.

Задание 1. Проанализировать программу, написанную на ассемблере и добавить комментарии к каждой строчке.

format PE GUI 4.0 entry start

include 'win32a.inc' IDM_NEW = 101

IDM_EXIT = 102

IDM_ABOUT = 901


section '.text' code readable executable start:

invoke GetModuleHandle,0 mov [wc.hInstance],eax invoke LoadIcon,eax,17 mov [wc.hIcon],eax

invoke LoadCursor,0,IDC_ARROW mov [wc.hCursor],eax

invoke RegisterClass,wc test eax,eax

jz error

 

invoke LoadMenu,[wc.hInstance],37 invoke

CreateWindowEx,0,_class,_title,WS_VISIBLE+WS_OVERLAPPEDWINDOW,144,128,256,25 6,NULL,eax,[wc.hInstance],NULL

test eax,eax jz error

 

msg_loop:

invoke GetMessage,msg,NULL,0,0 cmp eax,1

jb end_loop

jne msg_loop

invoke TranslateMessage,msg invoke DispatchMessage,msg jmp msg_loop

 

error:

invoke MessageBox,NULL,_error,NULL,MB_ICONERROR+MB_OK

 

end_loop:

invoke ExitProcess,[msg.wParam]

 

proc WindowProc hwnd,wmsg,wparam,lparam push ebx esi edi

cmp [wmsg],WM_CREATE je.wmcreate

cmp [wmsg],WM_SIZE je.wmsize

cmp [wmsg],WM_SETFOCUS je.wmsetfocus

cmp [wmsg],WM_COMMAND je.wmcommand

cmp [wmsg],WM_DESTROY je.wmdestroy

.defwndproc:

invoke DefWindowProc,[hwnd],[wmsg],[wparam],[lparam] jmp.finish


.wmcreate:

invoke GetClientRect,[hwnd],client invoke

CreateWindowEx,WS_EX_CLIENTEDGE,_edit,0,WS_VISIBLE+WS_CHILD+WS_HSCROL L+WS_VSCROLL+ES_AUTOHSCROLL+ES_AUTOVSCROLL+ES_MULTILINE,[client.left

],[client.top],[client.right],[client.bottom],[hwnd],0,[wc.hInstance],NULL or eax,eax

jz.failed

mov [edithwnd],eax invoke

CreateFont,16,0,0,0,0,FALSE,FALSE,FALSE,ANSI_CHARSET,OUT_RASTER_PRECIS,CLI P_DEFAULT_PRECIS,DEFAULT_QUALITY,FIXED_PITCH+FF_DONTCARE,NULL

or eax,eax

jz.failed

mov [editfont],eax

invoke SendMessage,[edithwnd],WM_SETFONT,eax,FALSE xor eax,eax

jmp.finish

.failed:

or eax,-1

jmp.finish

.wmsize:

invoke GetClientRect,[hwnd],client invoke

MoveWindow,[edithwnd],[client.left],[client.top],[client.right],[client.bottom],TRUE xor eax,eax

jmp.finish

.wmsetfocus:

invoke SetFocus,[edithwnd] xor eax,eax

jmp.finish

.wmcommand:

mov eax,[wparam] and eax,0FFFFh cmp eax,IDM_NEW je.new

cmp eax,IDM_ABOUT je.about

cmp eax,IDM_EXIT je.wmdestroy

jmp.defwndproc

.new:

invoke SendMessage,[edithwnd],WM_SETTEXT,0,0 jmp.finish

.about:

invoke MessageBox,[hwnd],_about_text,_about_title,MB_OK jmp.finish

.wmdestroy:

invoke DeleteObject,[editfont] invoke PostQuitMessage,0 xor eax,eax

.finish:


 

 

endp


pop edi esi ebx ret


 

section '.data' data readable writeable

 

_title TCHAR 'MiniPad',0

_about_title TCHAR 'About MiniPad',0

_about_text TCHAR 'This is Win32 example program created with flat assembler.',0

_error TCHAR 'Startup failed.',0

 

_class TCHAR 'MINIPAD32',0

_edit TCHAR 'EDIT',0

 

wc WNDCLASS 0,WindowProc,0,0,NULL,NULL,NULL,COLOR_BTNFACE+1,NULL,_class

 

edithwnd dd? editfont dd?

 

msg MSG client RECT

section '.idata' import data readable writeable library kernel,'KERNEL32.DLL',\

user,'USER32.DLL',\

gdi,'GDI32.DLL'

 

import kernel,\ GetModuleHandle,'GetModuleHandleA',\ ExitProcess,'ExitProcess'

 

import user,\

RegisterClass,'RegisterClassA',\ CreateWindowEx,'CreateWindowExA',\ DefWindowProc,'DefWindowProcA',\ SetWindowLong,'SetWindowLongA',\ RedrawWindow,'RedrawWindow',\ GetMessage,'GetMessageA',\ TranslateMessage,'TranslateMessage',\ DispatchMessage,'DispatchMessageA',\ SendMessage,'SendMessageA',\ LoadCursor,'LoadCursorA',\ LoadIcon,'LoadIconA',\ LoadMenu,'LoadMenuA',\ GetClientRect,'GetClientRect',\ MoveWindow,'MoveWindow',\ SetFocus,'SetFocus',\ MessageBox,'MessageBoxA',\ PostQuitMessage,'PostQuitMessage'


import gdi,\

CreateFont,'CreateFontA',\ DeleteObject,'DeleteObject'

 

section '.rsrc' resource data readable

 

; resource directory

 

directory RT_MENU,menus,\ RT_ICON,icons,\ RT_GROUP_ICON,group_icons,\ RT_VERSION,versions

; resource subdirectories resource menus,\

37,LANG_ENGLISH+SUBLANG_DEFAULT,main_menu

 

resource icons,\

1,LANG_NEUTRAL,icon_data

 

resource group_icons,\ 17,LANG_NEUTRAL,main_icon

 

resource versions,\

1,LANG_NEUTRAL,version

 

menu main_menu

menuitem '&File',0,MFR_POPUP menuitem '&New',IDM_NEW menuseparator

menuitem 'E&xit',IDM_EXIT,MFR_END menuitem '&Help',0,MFR_POPUP + MFR_END

menuitem '&About...',IDM_ABOUT,MFR_END icon main_icon,icon_data,'minipad.ico'

versioninfo

version,VOS WINDOWS32,VFT_APP,VFT2_UNKNOWN,LANG_ENGLISH+SUBLANG_ DEFAULT,0,\

'FileDescription','MiniPad - example program',\ 'LegalCopyright','No rights reserved.',\ 'FileVersion','1.0',\

'ProductVersion','1.0',\ 'OriginalFilename','MINIPAD.EXE'

 

Задание 2. В меню «Help» - подменю «About…» в открывшемся окне вывести информацию о разработчике программы.

Изменить название программы на «Мини блокнот» Задание 3. Оформить отчет.




Дата добавления: 2015-04-12; просмотров: 36 | Поможем написать вашу работу | Нарушение авторских прав

1 | 2 | 3 | <== 4 ==> | 5 | 6 | 7 | 8 | 9 | 10 |


lektsii.net - Лекции.Нет - 2014-2024 год. (0.023 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав