ابتدا برای شماره سطر یک متغیر در نظر می گیریم با نام A که بتواند مشخص کند که در سطر فعلی چند ستاره
باید چاپ شود، طبیعتا در سطر n ام n ستاره چاپ خواهد شد. مقدار اولیه A را 1 در قرار می دهیم چون نمایش از
سطر 1 ام شروع می شود :
تعداد سطر هایی که باید نمایش داده شود را در CX قرار می دهیم تا بصورت یک حلقه Loop به آن تعداد تکرار شود :
ابتدای حلقه نمایش سطر ها را با نام for1 مشخص می کنیم :
برای نمایش ستاره های هر سطر به یک حلقه تکرار loop دیگر نیاز است، اما چون CX در حال حاضر برای حلقه
for1 استفاده شده، بایستی قبل از بکار گیری آن برای یک حلقه جدید، مقدار فعلی اش را جایی ذخیره کنیم،
چه جایی بهتر از پشته :
در هر سطر به همان تعداد شماره سطر ستاره خواهیم داشت، پس تکرار نمایش ستاره ها را بر حسب مقدار A
که شماره سطر فعلی است، تنظیم می کنیم :
حلقه نمایش ستاره های هر سطر از اینجا آغاز می شود :
سرویس 02h از وقفه 21h ، نمایش یک کاراکتر موجود در DL بر روی صفحه نمایش :
کد:
mov ah,02h
mov dl,'*'
int 21h
حلقه for2 آنقدر تکرار می شود تا به تعداد CX که مقدار اش همان A بود، ستاره نمایش داده شود :
سرویس 09h از وقفه 21h ، نمایش یک پیغام به آدرس DX بر روی صفحه نمایش :
کد:
mov ah,09h
lea dx,msg
int 21h
مقدار CX دیگر کاربردی در حلقه for2 ندارد، چون اجرای حلقه for2 به پایان رسیده است، پس مقدار قبلی
CX را در حالی که حلقه for1 در حال اجرا بود، از پشته بازیابی می کنیم :
نمایش سطر A ام خاتمه یافته، پس با افزایش دادن مقدار A برای نمایش A+1 کاراکتر در سطر A+1 آماده می شویم :
حلقه for1 آنقدر ادامه می یابد تا به تعداد 25 سطر نمایش سطر ها تکرار شود :