حلقه ها در زبان اسمبلی
در زبان اسمبلی به منظور پیاده سازی حلقه ها می توان از دستور 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 اولین بار در سورس سرا - آموزش برنامه نویسی. پدیدار شد.