حلقه ها در زبان اسمبلی – آموزش Assembly

assembly loops 4620 تصویر

حلقه ها در زبان اسمبلی

در زبان اسمبلی به منظور پیاده سازی حلقه ها می توان از دستور JMP استفاده کرد. برای نمونه قطعه کد زیر قسمت <LOOP-BODY> را ۱۰ بار اجرا می کند.

MOV     CL, 10
L1:
<LOOP-BODY>
DEC     CL
JNZ     L1

مجموعه دستورالعمل پردانده، شامل یک گروه از دستورالعمل ها برای پیاده سازی حلقه ها است. در زیر سینتکس دستورالعمل LOOP را مشاهده می کنید:

LOOP      label

دستور LOOP فرض می کند که ثبات ECX شامل تعداد تکرار حلقه است. هنگامی که دستورات حلقه اجرا می شود، ثبات ECX کاهش می یابد و کنترل اجرای برنامه به label مشخص شده انتقال می یابد. این عملیات تا زمانی که مقدار ثبات ECX به صفر نرسیده باشد، ادامه می یابد.

مثال زیر نحوه استفاده از سینتکس بالا را نشان می دهد:

mov ECX,10
l1:
<loop body>
loop l1

مثال

برنامه زیر شماره های ۱ تا ۹ را بر روی صفحه چاپ می کند:

section .text
global _start        ;must be declared for using gcc
_start:                 ;tell linker entry point
mov ecx,10
mov eax, '1'
l1:
mov [num], eax
mov eax, 4
mov ebx, 1
push ecx
mov ecx, num
mov edx, 1
int 0x80
mov eax, [num]
sub eax, '0'
inc eax
add eax, '0'
pop ecx
loop l1
mov eax,1             ;system call number (sys_exit)
int 0x80              ;call kernel
section .bss
num resb 1

امتحان کنید

زمانی که کد بالا توسط کامپایلر اسمبلی اجرا شود، نتیجه زیر را تولید خواهد کرد:

123456789:

نوشته حلقه ها در زبان اسمبلی – آموزش Assembly اولین بار در سورس سرا - آموزش برنامه نویسی. پدیدار شد.

درباره نویسنده: administrator

ممکن است دوست داشته باشید

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *