راهنمایی

aida-joon

New Member
سلام لطفا قطعه کد زیرو برام توضیح بدید.
با تشکر

:rose:
کد:
mov  A,1
          mov  cx,25
     for1:
          push cx
          mov  cx,A
     for2:
          mov  ah,02h
          mov  dl,'*'
          int  21h
       
          loop for2
          mov  ah,09h
          lea  dx,msg
          int  21h
          pop  cx
          inc  A
          loop for1
 

the_king

مدیرکل انجمن
ابتدا برای شماره سطر یک متغیر در نظر می گیریم با نام A که بتواند مشخص کند که در سطر فعلی چند ستاره
باید چاپ شود، طبیعتا در سطر n ام n ستاره چاپ خواهد شد. مقدار اولیه A را 1 در قرار می دهیم چون نمایش از
سطر 1 ام شروع می شود :
کد:
          mov  A,1

تعداد سطر هایی که باید نمایش داده شود را در CX قرار می دهیم تا بصورت یک حلقه Loop به آن تعداد تکرار شود :
کد:
          mov  cx,25

ابتدای حلقه نمایش سطر ها را با نام for1 مشخص می کنیم :
کد:
     for1:

برای نمایش ستاره های هر سطر به یک حلقه تکرار loop دیگر نیاز است، اما چون CX در حال حاضر برای حلقه
for1 استفاده شده، بایستی قبل از بکار گیری آن برای یک حلقه جدید، مقدار فعلی اش را جایی ذخیره کنیم،
چه جایی بهتر از پشته :
کد:
          push cx

در هر سطر به همان تعداد شماره سطر ستاره خواهیم داشت، پس تکرار نمایش ستاره ها را بر حسب مقدار A
که شماره سطر فعلی است، تنظیم می کنیم :
کد:
          mov  cx,A

حلقه نمایش ستاره های هر سطر از اینجا آغاز می شود :
کد:
     for2:

سرویس 02h از وقفه 21h ، نمایش یک کاراکتر موجود در DL بر روی صفحه نمایش :
کد:
          mov  ah,02h
          mov  dl,'*'
          int  21h

حلقه for2 آنقدر تکرار می شود تا به تعداد CX که مقدار اش همان A بود، ستاره نمایش داده شود :
کد:
          loop for2

سرویس 09h از وقفه 21h ، نمایش یک پیغام به آدرس DX بر روی صفحه نمایش :
کد:
          mov  ah,09h
          lea  dx,msg
          int  21h

مقدار CX دیگر کاربردی در حلقه for2 ندارد، چون اجرای حلقه for2 به پایان رسیده است، پس مقدار قبلی
CX را در حالی که حلقه for1 در حال اجرا بود، از پشته بازیابی می کنیم :
کد:
          pop  cx

نمایش سطر A ام خاتمه یافته، پس با افزایش دادن مقدار A برای نمایش A+1 کاراکتر در سطر A+1 آماده می شویم :
کد:
          inc  A

حلقه for1 آنقدر ادامه می یابد تا به تعداد 25 سطر نمایش سطر ها تکرار شود :
کد:
          loop for1
 

جدیدترین ارسال ها

بالا