ویرگول
ورودثبت نام
سید عمید قائم مقامی
سید عمید قائم مقامیبرنامه نویسی سیستم ویندوز و مهندسی معکوس و علاقه مند به آموزش.
سید عمید قائم مقامی
سید عمید قائم مقامی
خواندن ۳ دقیقه·۴ روز پیش

برنامه نویسی قسمت 19(ساختار ها در Assembly ):

if در c++

کد سی پلاس پلاس:

int main() { int x = 10; int y = 0; if (x > 5) { y = 1; } return 0; }

کد اسمبلی:

.386 .model flat, stdcall .stack 4096 .code start: mov eax, 10 ; x = 10 mov ebx, 0 ; y = 0 cmp eax, 5 ; compare x with 5 jle skip_if ; if x <= 5 → skip mov ebx, 1 ; y = 1 (if body) skip_if: end start

if … else در c++

کد سی پلاس پلاس:

int main() { int x = 10; int y = 0; if (x > 5) { y = 1; } else { y = 2; } return 0; }

کد اسمبلی:

.386 .model flat, stdcall .stack 4096 .code start: mov eax, 10 ; x = 10 mov ebx, 0 ; y = 0 cmp eax, 5 ; compare x with 5 jle else_part ; if x <= 5 → go to else ; --- if body: y = 1 --- mov ebx, 1 jmp end_if ; jump over the else-part else_part: ; --- else body: y = 2 --- mov ebx, 2 end_if: end start

for در c++

کد سی پلاس پلاس:

int main() { int i; for (i = 0; i < 5; i++) { // do nothing } return 0; }

کد اسمبلی:

.386 .model flat, stdcall .stack 4096 .code start: mov ecx, 0 ; i = 0 for_loop: cmp ecx, 5 ; i < 5 ? jge end_loop ; if i >= 5 → پایان حلقه ; ----- body of loop ----- ; هیچ کاری نمی‌کنیم (مثل مثال C++) ; ------------------------- inc ecx ; i++ jmp for_loop ; تکرار حلقه end_loop: end start

while در C++

کد سی پلاس پلاس:

int main() { int i = 0; while (i < 5) { i++; } return 0; }

کد اسمبلی:

.386 .model flat, stdcall .stack 4096 .code start: mov ecx, 0 ; i = 0 while_start: cmp ecx, 5 ; i < 5 ? jge while_end ; if i >= 5 → خارج شو inc ecx ; i++ jmp while_start ; تکرار حلقه while_end: end start

do…while در c++

کد سی پلاس پلاس:

int main() { int i = 0; do { i++; } while (i < 5); return 0; }

کد اسمبلی:

.386 .model flat, stdcall .stack 4096 .code start: mov ecx, 0 ; i = 0 do_start: inc ecx ; i++ cmp ecx, 5 ; i < 5 ? jl do_start ; اگر کوچکتر بود → ادامه حلقه end start

switch-case در c++

کد سی پلاس پلاس:

int main() { int x = 2; int y = 0; switch (x) { case 1: y = 10; break; case 2: y = 20; break; case 3: y = 30; break; default: y = 99; break; } return 0; }

کد اسمبلی:

.386 .model flat, stdcall .stack 4096 .code start: mov eax, 2 ; x = 2 mov ebx, 0 ; y = 0 cmp eax, 1 je case1 cmp eax, 2 je case2 cmp eax, 3 je case3 jmp default_case case1: mov ebx, 10 jmp end_switch case2: mov ebx, 20 jmp end_switch case3: mov ebx, 30 jmp end_switch default_case: mov ebx, 99 end_switch: end start

Telegram: @CaKeegan
Gmail : amidgm2020@gmail.com

سی پلاس پلاساسمبلیAssembly
۰
۰
سید عمید قائم مقامی
سید عمید قائم مقامی
برنامه نویسی سیستم ویندوز و مهندسی معکوس و علاقه مند به آموزش.
شاید از این پست‌ها خوشتان بیاید