close
تبلیغات در اینترنت
دستورات پرش
مرورگرهای پیشنهادی :
موضوعات
  • پایان نامه و مقاله فنی مهندسی
  • مهندسی برق ، الکترونیک ، مخابرات
  • مهندسی فناوری اطلاعات
  • مهندسی کامپیوتر
  • مهندسی مکانیک
  • مهندسی عمران
  • مهندسی معماری
  • مهندسی ساخت و تولید
  • مهندسی منابع طبیعی
  • مهندسی کشاورزی
  • مهندسی شیلات
  • مهندسی صنایع
  • مهندسی مواد
  • مهندسی نقشه برداری
  • مهندسی تاسیسات
  • مهندسی شیمی
  • مهندسی متالوژی
  • مهندسی نساجی
  • مهندسی معدن
  • مهندسی نفت
  • محیط زیست
  • جوشکاری
  • پایان نامه و مقاله علوم انسانی
  • حقوق
  • اقتصاد
  • مدیریت
  • جغرافیا
  • جهانگردی
  • حسابداری
  • تربیت بدنی
  • ادبیات فارسی
  • علوم سیاسی
  • علوم اجتماعی
  • مدیریت صنعتی
  • مدیریت روابط عمومی
  • احکام و معارف اسلامی
  • روانشناسی و علوم تربیتی
  • گرافیک
  • هنر
  • بیمه
  • تاریخ
  • موسیقی
  • صنایع دستی
  • پایان نامه و مقاله پزشکی
  • علوم آزمایشگاهی
  • بهداشت عمومی
  • طب هسته ای
  • چشم پزشکی
  • جنین شناسی
  • روان پزشکی
  • دندانپزشکی
  • پیراپزشکی
  • دامپزشکی
  • طب سنتی
  • داروسازی
  • پرستاری
  • پزشکی
  • مامایی
  • آناتومی
  • ژنتیک
  • پایان نامه و مقاله علوم پایه
  • زیست شناسی
  • زمین شناسی
  • دندانپزشکی
  • دامپزشکی
  • پزشکی
  • فیزیک
  • پاورپوینت و اسلاید فنی مهندسی
  • پاورپوینت معماری
  • پاورپوینت کامپیوتر و IT
  • نمونه سوالات استخدامی
  • نمونه سوالات استخدامی بانک
  • نمونه سوالات استخدامی آموزش و پرورش
  • نمونه سوالات استخدامی شهرداری
  • نمونه سوالات استخدامی تامین اجتماعی
  • نمونه سوالات استخدامی دستگاه اجرایی
  • نمونه سوالات استخدامی فنی و حرفه ای
  • نمونه سوالات استخدامی وزارت خانه ها
  • نمونه سوالات استخدامی نظامی
  • سایر نمونه سوالات استخدامی
  • جزوات دانشگاهی
  • جزوات دروس مشترک دانشگاهی
  • جزوات مهندسی برق
  • جزوات مهندسی مکانیک
  • جزوات مهندسی عمران
  • جزوات رشته حسابداری
  • جزوات مهندسی فیزیک
  • جزوات مهندسی معماری
  • جزوات مهندسی ریاضی
  • جزوات مهندسی صنایع
  • جزوات مهندسی شیمی
  • جزوات مهندسی کامپیوتر و IT
  • جزوات رشته زمین شناسی
  • جزوات رشته روانشناسی
  • جزوات مهندسی مخابرات
  • جزوات رشته مدیریت
  • جزوات تربیت بدنی
  • جزوات حقوق
  • گزارش کارآموزی فنی مهندسی
  • مهندسی کامپیوتر (سخت افزار - نرم افزار)
  • مهندسی مکانیک
  • مهندسی برق
  • مهندسی شیمی
  • مهندسی فناوری اطلاعات
  • صنایع غذایی
  • حسابداری
  • مدیریت
  • مطالب پربازدید
    مطالب تصادفی
    مطالب پیشین
  • بررسی رابطه تيپ های شخصيتی دبيران دبيرستانهای دخترانه با میزان موفقیت (پنجشنبه 13 اردیبهشت 1397)
  • بررسی پيش تجربی سياهه مشاوره ای لوئيس سوال هاي شماره 3 تا 45 (از مقياس اطمينان اجتماعی) (پنجشنبه 13 اردیبهشت 1397)
  • بررسی مقدماتی شخصيتی كرنل براي سوال 36 و 37 بر روي دانشجويان دانشگاه آزاد اسلامي (پنجشنبه 13 اردیبهشت 1397)
  • مقايسه مشكلات زبان عادی ويژه (چهارشنبه 12 اردیبهشت 1397)
  • مقایسه ویژگی های شخصیتی شخصیت ضد اجتماعی و انحرافات اجتماعی در بین دانشجویان دختر و پسر (جمعه 07 اردیبهشت 1397)
  • بررسی رابطة تك فرزندی با اختلالات رفتاری (چهارشنبه 05 اردیبهشت 1397)
  • بررسی توصيفی موسيقی و موسيقی درمانی بر روی انسان ها (چهارشنبه 05 اردیبهشت 1397)
  • بررسی تأثير ناكامی در ميزان پرخاشگری بين دانش آموزان دختر و پسر مقطع ابتدايی (چهارشنبه 05 اردیبهشت 1397)
  • بررسی ميزان تأثير اردوهای تربيتی ـ آموزشی بر رشد شخصيت دانش آموزان (چهارشنبه 05 اردیبهشت 1397)
  • نياز سنجی كاركنان اطلاعات (چهارشنبه 05 اردیبهشت 1397)
  • مقايسه هوش هيجانی و جرأت ورزی در دانش‌آموزان دختر و پسر نابينا و عادی (چهارشنبه 05 اردیبهشت 1397)
  • مقایسه میزان هیجان خواهی دانشجویان متأهل و مجرد (چهارشنبه 05 اردیبهشت 1397)
  • مددکاری (چهارشنبه 05 اردیبهشت 1397)
  • بررسی علل گرايش جوانان و نوجوانان به قرص های روان گردان (چهارشنبه 05 اردیبهشت 1397)
  • شناسايی نيازهای آموزشی و ترويجی توتون کاران (چهارشنبه 05 اردیبهشت 1397)
  • ساختارهای کنترلی نظير عبارات شرطی و حلقه های تکرار توسط دستورات پرش ساخته می شود. 8086 چند نوع دستورالعمل پرش را در اختيار می گذارد.

    دستور پرش بدون شرط
    دستورات پرش شرطی
    ساختار شرط


    دستورات برنامه پشت سر هم اجرا می شوند يعنی پردازنده دستورات را به ترتيبی که در برنامه ظاهر شده اند اجرا می کند. ساختارهای کنترلی نظير عبارات شرطی، حلقه ها و فراخوانی زيربرنامه روال اجرای برنامه را تغيير می دهد. زبان های سطح بالا ساختارهای کنترلی سطح بالا مانند دستورات if و while را دراختيار می گذارند که اجرای برنامه را کنترل می کنند. زبان اسمبلی چنين ساختارهای پيچيده ای را ندارد در عوض از دستورات پرش برای پياده سازی اين ساختارهای کنترلی استفاده می شود(که البته استفاده نامناسب آن باعث کد اسپاگتی می شود).

    دستورات پرش اجرای برنامه را به نقطه دلخواهی منتقل می کنند. دو نوع دستورالعمل پرش وجود دارد:

    • دستورات پرش بدون شرط
    • دستورات پرش شرطی

    گونه های مختلفی از دستورات پرش وجود دارند:

    • کوتاه (short). اين نوع پرش بسيار محدود است و تنها می تواند 128 بايت بالا يا پايين بپرد. مزيت آن در مصرف کمتر حافظه است. ميزان جابجائی تنها توسط يک بايت مشخص می شود که تعيين می کند چند بايت جلوتر يا عقب تر برود. اين فاصله به ثبات IP اضافه می شود.
    • نزديک (near). اين نوع پرش می تواند به هر موقعيت درون يک سگمنت پرش کند.
    • دور (far). اين نوع پرش اجازه حرکت به سگمنت های ديگر را می دهد.

    دستور پرش بدون شرط

    دستورالعمل (jump) jmp بدون هيچ شرطی کنترل را به نقطه ديگری در برنامه منتقل می کند و مشابه دستور goto در زبان های سطح بالا عمل می کند. فرم کلی آن به صورت زير است:

    jmp target

    target می تواند آدرسی درون همين سگمنت يا سگمنت کد ديگری باشد. معمولا آدرس مقصد توسط يک برچسب معين می شود. برچسب شناسه ای است که بدنبال آن علامت کلون (:) می آيد. اسمبلر با توجه به آفست دستور بعد از برچسب، فاصله پرش را به طور اتوماتيک محاسبه می کند.

    دستورالعمل بعد از jmp هيچوقت اجرا نمی شود مگر اين که از دستور ديگری به آن پرش شده باشد.

    دستور jmp به تنهائی در برنامه موثر نيست و برای ساختن ساختارهای کنترلی همراه با دستورات پرش شرطی استفاده می شود.


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

                   mov DX, 378h   ;Parallel printer port address.
    Forever: in AL, DX           ;Read character from input port.
                   xor AL, 1           ;Invert the L.O. bit.
                   out DX, AL        ;Output data back to port.
                   jmp Forever      ;Repeat forever.


    دستورات پرش شرطی

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

    با توجه به اينکه دستورات پرش شرطی فلگ ها را بررسی می کنند قبل از دستور پرش بايد دستوری وجود داشته باشد که روی فلگ ها تاثير بگذارد. برای مثال بعد از اجرای دستور shl می توانيد فلگ Carry را تست کنيد تا ببينيد بيت 1 از سمت چپ عدد خارج شده است يا خير. يا بعد از دستورالعمل test می توانيد فلگ Zero را بررسی کنيد تا ببينيد بيت های مشخصی در يک عدد 1 بوده اند يا خير. البته در اکثر موارد ساختارهای کنترلی بر اساس مقايسه مقادير و توسط cmp پياده سازی می شوند. دستورالعمل cmp با توجه به حاصل تفريق دو عملوند خود فلگ ها را تنظيم می کند بنابراين می تواند برای بررسی بزرگتر، کوچکتر يا مساوی بودن مقادير استفاده شود. برای مقدارهای بدون علامت دو فلگ Carry و Zero از ثبات پرچم مهم هستند و برای اعداد علامتدار فلگ های Sign و Zero اهميت دارند. فلگ Zero در صورتی که مساوی بودن عملوند را نشان می دهد.

    دستورات پرش تنها فلگ ها را بررسی می کنند و روی آنها تاثيری ندارند.

    دستورالعمل های پرش شرطی انواع مختلفی دارند که همگی با حرف J شروع می شوند و بعد از آن حروف ديگر قرار می گيرند. بدنبال دستور يک آدرس يا برچسب ذکر می شود. اين دستورات را به سه دسته کلی می توان تقسيم کرد:

    • دستورات پرش بر اساس فلگ ها
    • دستورات پرش بعد از مقايسه عملوندهای بدون علامت
    • دستورات پرش بعد از مقايسه عملوندهای علامتدار

    توجه داشته باشيد که پرش های شرطی از نوع کوتاه هستند و طول پرش محدود به 128 بايت است برای غلبه براين محدوديت می توانيد ساختار شرط را توسط پرش متضاد بسازيد.

    در 8086 دستورات مترادفی برای تعدادی از دستورات پرش شرطی وجود دارد. جداول زير مترادف های هر دستور را ليست می کنند. در اين جداول همچنين دستورات متضاد هر دستور شرطی نيز بيان شده است.

    دستورات پرش بر اساس فلگ ها

    دستورالعمل
    شرط
    شرح
    مترادف
    متضاد
    jcCarry = 1پرش در صورتی که رقم نقلی وجود داردjb, jnaejnc
    jncCarry = 0پرش در صورتی که رقم نقلی وجود نداردjnb, jaejc
    jzZero = 1پرش در صورتی که صفر استjejnz
    jnzZero = 0پرش در صورتی که صفر نيستjnejz
    jsSign = 1پرش در صورتی که مثبت است-jns
    jnsSign = 0پرش در صورتی که منفی است-js
    joOverflow=1پرش در صورتی که سرريزی وجود دارد-jno
    jnoOverflew=0پرش در صورتی که سرريزی وجود ندارد-jo
    jpParity = 1پرش در صورتی که پريتی زوج استjpejnp
    jnpParity = 0پرش در صورتی که پريتی فرد استjpojp

    دستورات پرش بعد از مقايسه بدون علامت

    دستورالعمل
    شرط
    شرح
    مترادف
    متضاد
    jaCarry=0, Zero=0پرش در صورتی که بالاتر استjnbejna
    jnbeCarry=0, Zero=0پرش در صورتی که پايين تر يا مساوی نيستjajbe
    jaeCarry = 0پرش در صورتی که بالاتر يا مساوی استjnc, jnbjnae
    jnbCarry = 0پرش در صورتی که پايين تر نيستjnc, jaejb
    jbCarry = 1پرش در صورتی که پايين تر استjc, jnaejnb
    jnaeCarry = 1پرش در صورتی که بالاتر يا مساوی نيستjc, jbjae
    jbeCarry = 1 يا Zero = 1پرش در صورتی که پايين تر يا مساوی استjnajnbe
    jnaCarry = 1 يا Zero = 1پرش در صورتی که بالاتر نيستjbeja
    jeZero = 1پرش در صورتی که مساوی استjzjne
    jneZero = 0پرش در صورتی که نامساوی استjnzje

    دستورات پرش بعد از مقايسه علامتدار

    دستورالعمل
    شرط
    شرح
    مترادف
    متضاد
    jgSign = Overflow يا Zero=0پرش در صورتی که بزرگتر استjnlejng
    jnleSign = Overflow يا Zero=0پرش در صورتی که کوچکتر يا مساوی نيستjgjle
    jgeSign = Overflowپرش در صورتی که بزرگتر يا مساوی استjnljge
    jnlSign = Overflowپرش در صورتی که کوچکتر نيستjgejl
    jlSign Overflowپرش در صورتی که کوچکتر استjngejnl
    jngeSign Overflowپرش در صورتی که بزرگتر يا مساوی نيستjljge
    jleSign Overflow يا Zero=1پرش در صورتی که کوچکتر يا مساوی استjngjnle
    jngSign Overflow يا Zero=1پرش در صورتی که بزرگتر نيستjlejg
    jeZero = 1پرش در صورتی که مساوی استjzjne
    jneZero = 0پرش در صورتی که نامساوی استjnzje

    ساختار شرط

    از دستورات پرش شرطی می توان برای ساختن عبارات if استفاده کرد. به مثال های زير دقت کنيد.

    مثال. در دستورات زير اگر Sum>0 باشد به AH مقدار يک را اختصاص می دهد درغير اينصورت BH را يک می کند.

              cmp Sum, 0
              jg Then
              jmp Else
    Then: mov AH,1
              jmp EndIf
    Else:   mov BH,1
    EndIf:

    مثال. در دستورات زير اگر Total>=100 and Count =0 باشد مقدار Value را با AX جمع می کند.

              cmp total, 100
              jge C2
              jmp EndIf
    C2:     cmp Count, 10
              je Then
              jmp EndIf
    Then: add AX, Value
    EndIf:


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

    درباره :
    برچسب ها :دستور پرش بدون شرط ,دستورات پرش شرطی ,دستورات پرش شرطی ,اسمبلی ,دانشجو ,
    بازدید : 1329 تاریخ : نویسنده : بهرام محمدپور | نظرات ()
    ارسال نظر برای این مطلب

    نام
    ایمیل (منتشر نمی‌شود) (لازم)
    وبسایت
    :):(;):D;)):X:?:P:*=((:O@};-:B/:):S
    نظر خصوصی
    مشخصات شما ذخیره شود ؟[حذف مشخصات] [شکلک ها]
    کد امنیتی
    آمار سایت
  • آمار مطالب
  • کل مطالب : 4311
  • کل نظرات : 17
  • آمار کاربران
  • افراد آنلاین : 7
  • آمار بازدید
  • بازدید امروز : 2,663
  • باردید دیروز : 13,194
  • گوگل امروز : 26
  • گوگل دیروز : 36
  • بازدید هفته : 15,857
  • بازدید ماه : 154,667
  • بازدید سال : 842,587
  • بازدید کلی : 6,696,313
  • نظرسنجی
    چه مطالبی در سایت قرار دهیم؟





    کدهای اختصاصی