close
تبلیغات در اینترنت
ارسال و دريافت پارمترها
loading...
سرویس سایت سایت رزبلاگ بزرگترین سرویس ارائه خدمات سایت نویسی حرفه ای در ایران

فیلم و کتاب دات آی آر

یکی از زبان های برنامه نویسی که در حال حاضر بسیار استفاده می شود ، زبان جاوااسکریپت است . دانلود رایگان کتب برنامه نویسی و جزوات دانشگاهی

ارسال و دريافت پارمترها

پارامترها مقاديری هستند که می توانيد به زيربرنامه بدهيد يا بگيريد. برای ارسال يا دريافت پارامترها معمولا از ثبات، متغيرهای سراسری يا پشته استفاده می شود.

ارسال پارامتر از طريق ثبات

مثال. زيربرنامه زير طول يک رشته را محاسبه و در ثبات CX برمیگرداند. آدرس شروع رشته در ثبات SI قرار دارد.

StrLen PROC
           push SI
           mov CX,0
Whl:   cmp Byte Ptr[SI],'$'
           jc EndW
           inc CX
           inc SI
           jmp Whl
EndW: pop SI
           ret
StrLen ENDP

ارسال پارامتر از طريق پشته

پارامترهائی که به زيربرنامه داده می شوند را می توان قبل از فراخوانی زيربرنامه در پشته اضافه کرد. پارامترها در زيربرنامه pop نمی شوند بلکه مستقيما از پشته دسترسی می شوند زيرا قبل از دستور call در پشته اضافه شده اند و آدرس برگشتی بعد از آن اضافه می شود. علاوه براين چون ممکن است در چندين جای زيربرنامه استفاده شوند معمولا درون ثبات نگهداری نمی شوند و بهتر است در حافظه پشته باقی بمانند.

يک برنامه خارجی که يک پارامتر از طريق پشته را ارسال می کند در نظربگيريد. وقتی زيربرنامه درخواست می شود پارامتر می تواند با آدرس دهی غيرمستقيم [SP+4] دسترسی شود. اگر پشته هم در زيربرنامه برای ذخيره داده استفاده شود عدد بيشتری بايد به SP اضافه شود. ثبات BP را برای ارجاع به داده های درون پشته می توان به کار برد. ثبات SP با هر push و pop تغيير می کند اما BP ابتدا برابر با SP می شود و سپس ثابت می ماند در انتهای زيربرنامه مقدار اوليه BP بايد برگردانده شود. بعد از اينکه زيربرنامه تمام شد پارامترهائی که در پشته اضافه شده اند بايد حذف شوند.


مثال. تابع زير طول رشته را محاسبه و آدرس شروع رشته از طريق پشته به زيربرنامه ارسال می شود.

StrLen PROC
           push BP
           mov BP,SP
           mov SI,[BP+4]
           sub CX,0
Whl:   cmp byte ptr [SI],'$'
           jc Endw
           inc CX
           inc SI
           jmp Whl
EndW: pop BP
           ret
StrLen ENDP

مثال. محاسبه مجموع سه عدد که از طريق پشته به زيربرنامه ارسال شده اند

بازدید : 1104 تاریخ : زمان : نویسنده : بهرام محمدپور نظرات ()
تبلیغات
Rozblog.com رز بلاگ - متفاوت ترين سرويس سایت ساز

آمار سایت
  • کل مطالب : 4311
  • کل نظرات : 17
  • افراد آنلاین : 5
  • تعداد اعضا : 2920
  • آی پی امروز : 0
  • آی پی دیروز : 282
  • بازدید امروز : 257
  • باردید دیروز : 0
  • گوگل امروز : 3
  • گوگل دیروز : 0
  • بازدید هفته : 257
  • بازدید ماه : 257
  • بازدید سال : 257
  • بازدید کلی : 5,571,780
  • مطالب
    کدهای اختصاصی