- •Цели и задачи производственнойпрактики
- •Иметь практическийопыт:
- •Организация производственнойпрактики
- •Сроки проведенияпрактики.
- •Базы практики
- •Обязанности руководителейпрактики
- •Оформление результатов практики
- •Содержаниепрактики
- •Структура и содержание отчета по производственнойпрактике
- •7.Содержание основной частиотчета
- •Календарный план прохожденияпрактики
- •Анализ простой программы наАссемблере.
- •Кодпрограммы:
- •Задания на производственнуюпрактику.
- •Анализ простой программы наАссемблере.
- •Анализ программы редакторатекста.
- •Анализ программы управления диалоговымиокнами.
- •Анализ программы управления аппаратной частьюПк.
- •Анализ программы моделированияграфики.
- •Требования коформлению
- •Порядок проведения зачета по производственнойпрактике
- •10.Перечень рекомендуемыхисточниковОсновныеисточники:
- •Дополнительныеисточники:
- •Интернет–ресурсы:
- •Задание на производственную практикупо
- •Оборудования
- •Последовательность прохожденияпроизводственнойпрактики
Анализ простой программы наАссемблере.
Видыработ:
ознакомиться с простой программой наАссемблере;
провести анализ структурыпрограммы;
провести анализ операторовпрограммы;
ознакомиться с возможным использованием операторовпрограммногокода.
Задание1.Проанализировать программу,написанную на ассемблереидобавить комментарии к каждойстрочке.
include'win32ax.inc'
.codestart:
invoke MessageBox,HWND_DESKTOP,"Hi! I'm the exampleprogram!",invokeGetCommandLine,MB_OK
invokeExitProcess,0
.endstart
Задание 2. Изменить программутак, что выводилосьследующеесообщение«Привет!!!Меня зовут(здесь ВашиФИО)».
Задание3.Оформитьотчет.
Анализ программы редакторатекста.
Видыработ:
изучить программу наАссемблере;
провести анализ структурыпрограммы;
провести анализ операторовпрограммы;
ознакомиться с возможным использованием операторовпрограммногокода.
Задание1.Проанализировать программу,написанную на ассемблереидобавить комментарии к каждойстрочке.
format PEGUI4.0entrystart
include'win32a.inc'IDM_NEW =101
IDM_EXIT =102
IDM_ABOUT =901
section '.text' code readableexecutablestart:
invokeGetModuleHandle,0mov [wc.hInstance],eaxinvoke LoadIcon,eax,17mov [wc.hIcon],eax
invokeLoadCursor,0,IDC_ARROWmov [wc.hCursor],eax
invokeRegisterClass,wctest eax,eax
jz error
invokeLoadMenu,[wc.hInstance],37invoke
CreateWindowEx,0,_class,_title,WS_VISIBLE+WS_OVERLAPPEDWINDOW,144,128,256,256,NULL,eax,[wc.hInstance],NULL
test eax,eaxjz error
msg_loop:
invokeGetMessage,msg,NULL,0,0cmp eax,1
jb end_loop
jne msg_loop
invokeTranslateMessage,msginvokeDispatchMessage,msgjmpmsg_loop
error:
invokeMessageBox,NULL,_error,NULL,MB_ICONERROR+MB_OK
end_loop:
invokeExitProcess,[msg.wParam]
proc WindowProchwnd,wmsg,wparam,lparampush ebxesiedi
cmp [wmsg],WM_CREATEje .wmcreate
cmp [wmsg],WM_SIZEje .wmsize
cmp [wmsg],WM_SETFOCUSje .wmsetfocus
cmp [wmsg],WM_COMMANDje .wmcommand
cmp [wmsg],WM_DESTROYje .wmdestroy
.defwndproc:
invokeDefWindowProc,[hwnd],[wmsg],[wparam],[lparam]jmp .finish
.wmcreate:
invokeGetClientRect,[hwnd],clientinvoke
CreateWindowEx,WS_EX_CLIENTEDGE,_edit,0,WS_VISIBLE+WS_CHILD+WS_HSCROLL+WS_VSCROLL+ES_AUTOHSCROLL+ES_AUTOVSCROLL+ES_MULTILINE,[client.left
],[client.top],[client.right],[client.bottom],[hwnd],0,[wc.hInstance],NULLor eax,eax
jz .failed
mov [edithwnd],eaxinvoke
CreateFont,16,0,0,0,0,FALSE,FALSE,FALSE,ANSI_CHARSET,OUT_RASTER_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,FIXED_PITCH+FF_DONTCARE,NULL
or eax,eax
jz .failed
mov [editfont],eax
invokeSendMessage,[edithwnd],WM_SETFONT,eax,FALSExor eax,eax
jmp .finish
.failed:
or eax,-1
jmp .finish
.wmsize:
invokeGetClientRect,[hwnd],clientinvoke
MoveWindow,[edithwnd],[client.left],[client.top],[client.right],[client.bottom],TRUExor eax,eax
jmp .finish
.wmsetfocus:
invokeSetFocus,[edithwnd]xor eax,eax
jmp .finish
.wmcommand:
mov eax,[wparam]and eax,0FFFFhcmp eax,IDM_NEWje .new
cmp eax,IDM_ABOUTje .about
cmp eax,IDM_EXITje .wmdestroy
jmp .defwndproc
.new:
invokeSendMessage,[edithwnd],WM_SETTEXT,0,0jmp .finish
.about:
invokeMessageBox,[hwnd],_about_text,_about_title,MB_OKjmp .finish
.wmdestroy:
invokeDeleteObject,[editfont]invoke PostQuitMessage,0xor eax,eax
.finish:
endp
pop ediesiebxret
section '.data' data readablewriteable
_title TCHAR'MiniPad',0
_about_title TCHAR 'AboutMiniPad',0
_about_text TCHAR 'This is Win32 example program created withflatassembler.',0
_error TCHAR 'Startupfailed.',0
_class TCHAR'MINIPAD32',0
_editTCHAR'EDIT',0
wcWNDCLASS0,WindowProc,0,0,NULL,NULL,NULL,COLOR_BTNFACE+1,NULL,_class
edithwnd dd?editfont dd?
msgMSGclientRECT
section '.idata' import data readablewriteablelibrarykernel,'KERNEL32.DLL',\
user,'USER32.DLL',\
gdi,'GDI32.DLL'
importkernel,\GetModuleHandle,'GetModuleHandleA',\ExitProcess,'ExitProcess'
importuser,\
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'
importgdi,\
CreateFont,'CreateFontA',\DeleteObject,'DeleteObject'
section '.rsrc' resource datareadable
; resourcedirectory
directoryRT_MENU,menus,\RT_ICON,icons,\RT_GROUP_ICON,group_icons,\RT_VERSION,versions
; resourcesubdirectoriesresourcemenus,\
37,LANG_ENGLISH+SUBLANG_DEFAULT,main_menu
resourceicons,\
1,LANG_NEUTRAL,icon_data
resourcegroup_icons,\17,LANG_NEUTRAL,main_icon
resourceversions,\
1,LANG_NEUTRAL,version
menumain_menu
menuitem'&File',0,MFR_POPUPmenuitem'&New',IDM_NEWmenuseparator
menuitem'E&xit',IDM_EXIT,MFR_ENDmenuitem '&Help',0,MFR_POPUP +MFR_END
menuitem'&About...',IDM_ABOUT,MFR_ENDiconmain_icon,icon_data,'minipad.ico'
versioninfo
version,VOSWINDOWS32,VFT_APP,VFT2_UNKNOWN,LANG_ENGLISH+SUBLANG_DEFAULT,0,\
'FileDescription','MiniPad - exampleprogram',\'LegalCopyright','No rightsreserved.',\'FileVersion','1.0',\
'ProductVersion','1.0',\'OriginalFilename','MINIPAD.EXE'
Задание2.В меню«Help» -подменю«About…»в открывшемсяокневывести информацию о разработчикепрограммы.
Изменить название программы на«Миниблокнот»Задание3.Оформитьотчет.
