Автор работы: Пользователь скрыл имя, 29 Марта 2013 в 15:16, курсовая работа
Цель работы:
Получить практические навыки по использованию встроенного дизассемблера Borland C++, по использованию ассемблерных вставок в среде Borland C++ Builder.
Министерство образования
Учреждение образования
«Белорусский Государственный Университет Информатики и
Радиоэлектроники»
Факультет компьютерного проектирования
Кафедра электронных вычислительных средств
Отчет по лабораторной работе № 1
по курсу СП по теме:
«работа в интегрированной среде разработки borland builder c++»
Вариант №3
Выполнили: Проверил:
студенты гр. 910702 Воронецкий И.А.
Астапенко К.А.
Минск 2013
Получить практические навыки по использованию встроенного дизассемблера Borland C++, по использованию ассемблерных вставок в среде Borland C++ Builder.
1.1 Задание
Разработать приложение с графическим пользовательским интерфейсом в среде Borland C++ Builder, которое будет выполнять действия над целыми числами в соответствии с вариантом:
1.2 Разработка приложения
Разработанный графический интерфейс представлен на рисунке ниже.
Рисунок 1 – Форма приложения
Листинг программы (обработка нажатия кнопки «Пуск»):
void __fastcall TForm1::Button1Click(TObject *Sender)
{
int a, b, c, d ;
a=StrToInt(Edit1->Text);
b=StrToInt(Edit2->Text);
c=StrToInt(Edit3->Text);
d = a/b-(2*c);
Label4->Caption ="Result :=" + IntToStr(d);
}
Провели дизассемблирование полученного кода:
Unit1.cpp.14: : TForm(Owner)
00401AE1 66C745E80C00 mov word ptr [ebp-$18],$000c
00401AE7 8B4DD0 mov ecx,[ebp-$30]
00401AEA 33D2 xor edx,edx
00401AEC 8B45FC mov eax,[ebp-$04]
00401AEF E820000000 call Forms::TForm::TForm(const Classes::TComponent *)
00401AF4 8345F411 add dword ptr [ebp-$0c],$11
Unit1.cpp.17: }
00401AF8 8B55D8 mov edx,[ebp-$28]
00401AFB 64891500000000 mov fs:[$00000000],edx
00401B02 8B45FC mov eax,[ebp-$04]
00401B05 807DD700 cmp byte ptr [ebp-$29],$00
00401B09 7405 jz $00401b10
00401B0B E849170000 call $00403259
Unit1.cpp.17: }
00401B10 8BE5 mov esp,ebp
00401B12 5D pop ebp
00401B13 C3 ret
Forms::TForm::TForm(const Classes::TComponent *):
00401B14 55 push ebp
00401B15 8BEC mov ebp,esp
00401B17 83C4D0 add esp,-$30
00401B1A 8855F8 mov [ebp-$08],dl
00401B1D 84D2 test dl,dl
00401B1F 7E05 jle $00401b26
00401B21 E826170000 call $0040324c
00401B26 894DD0 mov [ebp-$30],ecx
00401B29 8855D7 mov [ebp-$29],dl
00401B2C 8945FC mov [ebp-$04],eax
00401B2F B89C424000 mov eax,$0040429c
00401B34 E893130000 call $00402ecc
00401B39 66C745E80C00 mov word ptr [ebp-$18],$000c
00401B3F 8B4DD0 mov ecx,[ebp-$30]
00401B42 33D2 xor edx,edx
00401B44 8B45FC mov eax,[ebp-$04]
00401B47 E8F41C0000 call $00403840
00401B4C 8345F410 add dword ptr [ebp-$0c],$10
00401B50 8B55D8 mov edx,[ebp-$28]
00401B53 64891500000000 mov fs:[$00000000],edx
00401B5A 8B45FC mov eax,[ebp-$04]
00401B5D 807DD700 cmp byte ptr [ebp-$29],$00
00401B61 7405 jz $00401b68
00401B63 E8F1160000 call $00403259
Forms.hpp.1062:
00401B68 8BE5 mov esp,ebp
00401B6A 5D pop ebp
00401B6B C3 ret
00401B6C 0400 add al,$00
00401B6E 0000 add [eax],al
00401B70 90 nop
00401B71 000C00 add [eax+eax],cl
00401B74 98 cwde
00401B75 1D40005446 sbb eax,$46540040
00401B7A 6F outsd
00401B7B 726D jb $00401bea
00401B7D 3120 xor [eax],esp
00401B7F 2A00 sub al,[eax]
00401B81 90 nop
00401B82 90 nop
00401B83 90 nop
Unit1.cpp.19: void __fastcall TForm1::Button1Click(TObject *Sender)
00401B84 55 push ebp
00401B85 8BEC mov ebp,esp
00401B87 83C4B0 add esp,-$50
00401B8A 8955C0 mov [ebp-$40],edx
00401B8D 8945C4 mov [ebp-$3c],eax
00401B90 B850424000 mov eax,$00404250
00401B95 E832130000 call $00402ecc
Unit1.cpp.22: a=StrToInt(Edit1->Text);
00401B9A 66C745D80C00 mov word ptr [ebp-$28],$000c
00401BA0 8D45FC lea eax,[ebp-$04]
00401BA3 E838010000
call System::UnicodeString::
00401BA8 8BD0 mov edx,eax
00401BAA FF45E4 inc dword ptr [ebp-$1c]
00401BAD 8B4DC4 mov ecx,[ebp-$3c]
00401BB0 8B8198030000 mov eax,[ecx+$00000398]
00401BB6 E8391B0000 call $004036f4
00401BBB 8D45FC lea eax,[ebp-$04]
00401BBE 8B00 mov eax,[eax]
00401BC0 E80F180000 call $004033d4
00401BC5 8945BC mov [ebp-$44],eax
00401BC8 FF4DE4 dec dword ptr [ebp-$1c]
00401BCB 8D45FC lea eax,[ebp-$04]
00401BCE BA02000000 mov edx,$00000002
00401BD3 E86C150000
call System::UnicodeString::~
Unit1.cpp.23: b=StrToInt(Edit2->Text);
00401BD8 66C745D81800 mov word ptr [ebp-$28],$0018
00401BDE 8D45F8 lea eax,[ebp-$08]
00401BE1 E8FA000000
call System::UnicodeString::
00401BE6 8BD0 mov edx,eax
00401BE8 FF45E4 inc dword ptr [ebp-$1c]
00401BEB 8B4DC4 mov ecx,[ebp-$3c]
00401BEE 8B819C030000 mov eax,[ecx+$0000039c]
00401BF4 E8FB1A0000 call $004036f4
00401BF9 8D45F8 lea eax,[ebp-$08]
00401BFC 8B00 mov eax,[eax]
00401BFE E8D1170000 call $004033d4
00401C03 8945B8 mov [ebp-$48],eax
00401C06 FF4DE4 dec dword ptr [ebp-$1c]
00401C09 8D45F8 lea eax,[ebp-$08]
00401C0C BA02000000 mov edx,$00000002
00401C11 E82E150000
call System::UnicodeString::~
Unit1.cpp.24: c=StrToInt(Edit3->Text);
00401C16 66C745D82400 mov word ptr [ebp-$28],$0024
00401C1C 8D45F4 lea eax,[ebp-$0c]
00401C1F E8BC000000
call System::UnicodeString::
00401C24 8BD0 mov edx,eax
00401C26 FF45E4 inc dword ptr [ebp-$1c]
00401C29 8B4DC4 mov ecx,[ebp-$3c]
00401C2C 8B81A0030000 mov eax,[ecx+$000003a0]
00401C32 E8BD1A0000 call $004036f4
00401C37 8D45F4 lea eax,[ebp-$0c]
00401C3A 8B00 mov eax,[eax]
00401C3C E893170000 call $004033d4
00401C41 8945B4 mov [ebp-$4c],eax
00401C44 FF4DE4 dec dword ptr [ebp-$1c]
00401C47 8D45F4 lea eax,[ebp-$0c]
00401C4A BA02000000 mov edx,$00000002
00401C4F E8F0140000
call System::UnicodeString::~
Unit1.cpp.25: d = a/b-(2*c);
00401C54 8B45BC mov eax,[ebp-$44]
00401C57 99 cdq
00401C58 F77DB8 idiv dword ptr [ebp-$48]
00401C5B 8B4DB4 mov ecx,[ebp-$4c]
00401C5E 03C9 add ecx,ecx
00401C60 2BC1 sub eax,ecx
00401C62 8945B0 mov [ebp-$50],eax
1.3 вывод
В ходе данной лабораторной работы провели разработку приложения для расчета заданного выражения в среде Borland C++ Builder и ознакомились с возможностями встроенного дизассемблера на примере полученного проекта.
Информация о работе Написание модулей для DLE. Разработка приложений на фреймворке Kohana