الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

nested loops

مغلق
بدأه shdelpiero في 13 مايو 2006 · 2 رد · 525 مشاهدة · في لغة Assembly لأنظمة 16, 32, 64 بت
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله وبركاته

ازاي اعمل nested loops

مثال

for(i=1;i<10;i++)
  for(j=0;j<36;j=j+4)

وجزاكم الله خيرا

#2

السلام عليكم

نبداء اولاً بالجزء الاول وهو على النحو التالي

;for(i=1;i<10;i++)

mov ecx,1
loop1:
inc ecx
...;outerloop
cmp ecx,10
jl loop1

والان الحلفة الداخلية

for(i=1;i<10;i++)
  for(j=0;j<36;j=j+4)
mov ecx,1
mov edx,0
loop1:
inc ecx
loop2:
add edx,4
...;innerloop
cmp edx,36
jl loop2
cmp ecx,10
jl loop1

لاحظ ان قيمة ecx لا يجب ان تتغير فى الinnerloop حتى لا تؤثر على سير الحلفة الخارجية, وإذا اردت استخدام ecx داخل الحلقة الداخلية يجب ان تقوم بعملية push ومن ثم pop حتى تحافظ على قيمتها...

ارجو ان تكون الاجابة واضحة...

ملاحظة : الكمبايلر يستخدم

xor edx,edx

بدل

mov edx,0

ولكن اخترت إستخدام الطريقة الثانية لانها اوضح..

والسلام عليكم

لا إله إلا الله محمد رسول الله

busbar : يجب ان تدرك انه هناك حد ادنى للمعرفة المطلوبة قبل البدء في عمل أي شئ.

#3

السلام عليكم, بصورة اخرى يدعمها masm32

; .data
i	db	1
j	db	0
;-------------------
; .code
.while	i < 10
	 .while j < 36
		  ; do your stuff
		   add j, 4
		  ; continue your stuff
	 .endw
mov j, 0
add i, 1
.endw

« Everything looks different from another cracker point of view »

« There are 11 types of people, those who understand binary, those who don't, well I'm the rest »

« ?Do you speak Binary »

me W4R3ZD00D/

هذا الموضوع مغلق.

مواضيع مشابهة