بخشی از پاورپوینت
اسلاید 1 :
مقدمه
منبع اصلی این پروژه یک سایت اینترنتی میباشد
توضیحات از کتاب برنامه نویسی به زبان اسمبلی از مهندس قمی و چندین سایت اینترنتی میباشد .
اسلاید 2 :
معرفی مجموعه دستورات این برنامه
ORG
اين شبه دستور افست ادرس محل ذخيره دستور يا داده بعدي را تعيين ميكند . شكل كلي ان بصورت زير است
ORG ادرس
مثلا دستور ORG1000H
سبب میشود که انتقال برنامه به خانه ی هزارم حافظه برود و از آنجا شروع به ادامه ی اجرای برنامه کند استفاده از اين دستور در هر مكاني از برنامه اختياري است . و هر گاه كاربر لازم ديد كه ادامه برنامه در خانه ديگري از حافظه اجرا شود از اين دستور استفاده ميكند . اما استفاده از اين دستور در برنامه هاي کام بلافاصله قبل از شروع كد نويسي برنامه اجباري است
اسلاید 3 :
آدرس دهی فوری یا بلافاصله:
در صورتی که بخواهیم یک عدد ثابت نه یک آدرس را در مکانی از حافظه قرار دهیم از آدرس دهی فوری استفاده می کنیم.مشخصه آدرس دهی فوری استفاده از پیشوند # قبل از عدد است.
در صورتی که در یک دستور از عددی استفاده کنیم اگر عدد بدون پیشوند باشد نوع آدرس دهی مستقیم است و در صورتی که عدد پیشوند # داشته باشد آدرس دهی فوری خواهد بود.
اسلاید 4 :
MOV
اين دستور براي كپي كردن يك خانه از حافظه يا داده ها در بايت ها ي حافظه استفاده مي شود.توجه كنيدكه اين دستوريك دستوربايتي است.
اسلاید 5 :
فراخوانی زیر برنامه
برای فراخوانی زیر برنامه از دستور
CALL
استفاده میشود که به شکل زیر است
CALLآدرس
آدرس را میتوان مستقیم یا غیر مستقیم در نظر گرفت
هنگامی که این دستور اجرا میگردد دو عمل انجام میشود
1.آدرس برگشت به زیر برنامه فراخوان در پشته ذخیره میشود
2.کنترل اجرای برنامه به آدرس شروع زیر برنامه میرود
اسلاید 6 :
برگشت از زیر برنامه
برای برگشت به زیر برنامه فراخوان از دستور
RET/RETF
استفاده میگردد شکل کلی دستور به صورت زیر است
RET/RETF مقدار
مقدار تعداد بایت هاییست که از پشته بازیابی میگردد
این دستور اعمال زیر را انجام میدهد
1.آدرس برگشت به برنامه فراخوان را از بالای پشته بازیابی میکند
2.به ادرس زیر برنامه فراخوان پرش میکند
اسلاید 7 :
دستور :CJ E
این دستور برای عملیات حلقه به کار می رود و فرم کلی آن به صورت زیر است:
CJ E اپراند 1 , آدرس نسبی. اپراند 2
این دستور اپراند 1 را با اپراند 2 مقایسه می کند اگر مساوی نباشد به آدرس نسبی مقصد پرش می کند در غیر این صورت دستور بعدی اجرا می شود.
اسلاید 8 :
حافظه مجموعه ای از بایت ها است.و بایت از 8 بیت ساخته شده است میکرو کنترلر توانائی به کارگیری دستورات بیتی رابرای تغییر بیتها یی که بیت آدرس پذیر هستند را دارد.
این دستورات شامل دستورات انتقال بیت ودستورات منطقی و ست کردن بیت و پاک کردن بیت و ... هستند.
برای اینکه بیت مشخصی را ست کنیم (مقدار آن را هر چه باشد به یک تغییر دهیم) از دستور SETB استفاده می کنیم.
SETB bit
برای پاک کردن یک بیت( صفر را در آن قرار دهیم ) از دستور
CLR bit
استفاده می کنیم .برای مکمل کردن یک بیت مشخص (اگر مقدار آن یک باشد به صفر تبدیل می شود و برعکس) از دستور
CPL bit
استفاده می کنیم .دستور انتقال داده بیتی همان دستور mov است . دستور mov را قبلا برای انتقال یک بایت از حافظه نیز به کار بردیم حال چگونه تشخیص دهیم که یک دستور mov ، یک بایت از حافظه را انتقال می دهد یا یک بیت ؟
جواب این است: در صورتی که عملوند اول دستور یک بایت باشد یا یک ثبات، دستور mov بایتی است و هنگامی که عملوند دستور یک بیت باشد دستور، بیتی است
اسلاید 9 :
انشعاب غیر شرطی :
در این گونه انشعاب ها برنامه بدون چک کردن شرطی ، به قسمت دیگری از برنامه می پرد. این گونه پرشها با استفاده از مشتقات JMP و CALL استفاده می شود.
ه نوع دستور JMP ( jump) وجود دارد . sjmp (short jump) برای پرش کوتاه (پرش نسبی با طول 127 بایت به جلو یا عقب ) وljmp (lo g Jump) برای پرش طولانی وAjmpبرای پرش با آدرس دهی مطلق . پرش طولانی می تواند به هر کجای برنامه باشد و محدودیت فاصله ندارد (در یک صفحه 64 کیلو بایتی)اما برای پرش مطلق باید هم آدرس مبدا و هم آدرس مقصد در یک صفحه دو کیلو بایتی باشند.
بسته به اختلاف آدرس مبدا و مقصد و همچنین صفحه دو کیلو بایتی که آدرس وبدا در آن قرار دارد ازjmpمناسب استفاده می کنیم .فرضا ممکن است که اختلاف آدرس مبدا و قصد کمتر از یک کیلو بایت باشد اما آدرس مبدا در یک صفحه دو کیلو بایتی قرار داشته باشد و آدرس مقصد در یک صفحه دو کیلو بایتی دیگر قرار داشته باشد در این حالت اگر اختلاف دو آدرس کمتر از 127 باشد ازsjmpو در غیر اینصورت ازljmpاستفاده می کنیم .
صفحات دو کیلو بایتی مورد بحث از آدرس های زیر شروع می شوند (0000و800hو1000hو1800hوf800h)
نوع دیگر پرشهای غیر شرطی call است دستور Call برای فراخوانی زیر برنامه ها به کار می رود.
دستور بعدی DJ Z است (decrease jump if ot zero) ( یک واحد کم کن و در صورتی که صفر نبود بپر.)می توان از این دستوربرای اجرای حلقه به تعداد دفعات تکرار مشخص استفاده کرد (مشابه حلقه ی for در زبانهای برنامه نویس سطح بالا):
اسلاید 10 :
شکل دستور
DJ Z عملوند 1,address
عملوند1 می تواند یکی از ثبات های بانک ثبات یا آدرس یک بایت از حافظه باشد.
دستور پرش شرطی پ کاربرد دیگر دستور CJ E(compare jump if ot equal)مقایسه کن و بپر در صورتی که دو عملوند برابر نباشند.
CJ E عملوند 1,عملوند 2, address