PDA

View Full Version : حلقه تو در تو



vbiman
جمعه 24 آذر 1385, 20:17 عصر
با سلام
می خواهم دو تا حلقه تو در تو بنویسم مانند یک ماتریس در زبا های دیگر
باتشکر از اون که حال بده جواب درست بده

mzjahromi
شنبه 25 آذر 1385, 06:44 صبح
سوالتون رو خیلی کلی نوشتید
مشخصه چی میخواهید ولی مشخص نیست کجا اشکال دارید(حتی اینکه چی میخواهید هم درست مشخص نیست)

greenway
شنبه 25 آذر 1385, 21:02 عصر
خوب حلقه تو در تو ساده است . کافیه که مقدار ECX یا CX رو توی پشته بکنید و قبل از دستور Loop اون از پشته در بیارید :


Mov CX,10
Lp1:
nop
push cx
mov CX,20
nop
Lp2:
nop
push CX
... Instructions
pop CX
Loop Lp2
pop CX
Loop Lp1

البته این کار رو میشه با چند فرم دیگه هم نوشت ، مثلا میشه از یک خانه حافظه و یا رجیسترهای دیگر برای کنترل حلقه یا ایندکس اون استفاده کنید ... به همین دلیل سوال شما خیلی کلی است .


Mov CX,10
Lp1:
nop
push cx
mov BX,20
nop
Lp2:
nop
Matrix [CX][BX;
... Instructions;
dec BX
Test BX,BX
Jnz Lp2
pop CX
Loop Lp1


یکسری فرمول هم هست که برای تبدیل آرایه های N بعدی به یک آرایه تک بعدی استفاده میشه ( روشی که آرایه ها پیاده سازی میشوند - رجوع کنید به درس زبانهای برنامه سازی ) که مثلا برای آرایه دوبعدی به صورت
m= سایز بعد اول
n= سایز بعد دوم
Array[m][n

A[i][j]=i*m+j