دوره های آموزشی آکادمی پی وی لرن (پروژه محور و ویژه بازار کار)



  • ۱۵
  • اردیبهشت

جلسه ۱۰-۰۱ : دستورالعمل های محاسباتی در زبان اسمبلی (Assembly)

  • دسته‌بندی‌ها :
جلسه ۱۰-۰۱ : دستورالعمل های محاسباتی در زبان اسمبلی (Assembly)
    • جزئیات
    • نوع محتواآموزشی

      همراهان عزیز وب سایت آموزشی پی وی لرن وقتتون بخیر و شادی، با آموزش زبان برنامه نویسی اسمبلی (Assembly) در خدمتتون خواهیم بود. دستورالعملهای محاسباتی در زبان اسمبلی (Assembly) را با بررسی دستورالعمل MUL / IMUL و دستورالعمل های ADD و SUB و غیره آغاز می کنیم. با ما همراه باشید.

      دستورالعملهای محاسباتی در زبان اسمبلی (Assembly)

      دستورالعمل INC

      دستورالعمل INC يک واحد به عملوند خود اضافه خواهد کرد. این بر روی یک عملگر واحد کار می کند که می تواند در یک رجیستر یا حافظه باشد.

      سینتکس

      دستورالعمل INC دارای سینتکس زیر است.

      مثال : 

      مقصد عملوند می تواند یک عملوند ۸ بیتی ، ۱۶ بیتی یا ۳۲ بیتی باشد.

      مثال

      مثال : 

      دستورالعمل DEC

      دستورالعمل DEC يک واحد از عملوند خود کم خواهد کرد. این بر روی یک عملگر واحد کار می کند که می تواند در یک رجیستر یا حافظه باشد.

      سینتکس

      دستورالعمل DEC دارای سینتکس زیر است.

      مثال : 

      مقصد عملوند می تواند یک عملوند ۸ بیتی ، ۱۶ بیتی یا ۳۲ بیتی باشد.

      مثال

      مثال : 

      دستورالعمل های ADD و SUB

      دستورالعمل های ADD و SUB برای اضافه یا تفریق ساده از داده های باینری در اندازه های بایت ، word و doubleword ، یعنی برای اضافه کردن یا تفریق عملوندهای ۸ بیتی ، ۱۶ بیتی یا ۳۲ بیتی به ترتیب استفاده می شود.

      سینتکس

      دستورالعمل های ADD و SUB دارای سینتکس زیر هستند.

      مثال : 

      دستورالعمل ADD / SUB می تواند به شکل های زير استفاده شود:

      • Register to register
      • Memory to register
      • Register to memory
      • Register to constant data
      • Memory to constant data

      اما ، مانند سایر دستورالعمل ها ، عملکرد memory-to-memory با استفاده از دستورالعمل های ADD / SUB امکان پذیر نیست. یک عملیات ADD یا SUB سرریز (overflow) و یا carry flag ها را تنظیم می کند.

      مثال

      در مثال زیر دو رقم از کاربر خواسته می شود ، ارقام را در دجیستر EAX و EBX ذخیره کنید ، مقادیر را اضافه کنید ، نتیجه را در مکان حافظه “res” ذخیره کنید و در آخر نتیجه را نمایش دهید.

      مثال : 

      هنگامی که کد فوق کامپایل و اجرا شد ، نتیجه زیر را ایجاد می کند.

      مثال : 

      برنامه با متغیرهای hardcoded شده :

      مثال : 

      هنگامی که کد فوق کامپایل و اجرا شد ، نتیجه زیر را ایجاد می کند.

      مثال : 

      دستورالعمل MUL / IMUL

      برای ضرب داده های باینری دو دستورالعمل وجود دارد. دستورالعمل (MUL (Multiply داده های بدون علامت را، و (IMUL (Integer Multiply داده های علامت دار را مدیریت می کند. هر دو دستورالعمل روی Carry و Overflow flag تأثیر می گذارند.

      سینتکس

      سینتکس دستورالعمل MUL / IMUL به شرح زیر است.

      مثال : 

      دستور ضرب بسته به اندازه تک عملوند خود به چند شکل ممکن است عمل کند. بخش زیر دستورالعمل MUL را توضیح می دهد.

      ردیفسناریوها
      ۱در صورتی که عملوند یک بایتی باشد، عملوند را در AL ضرب کرده نتيجه را در AX ذخيره می کند.

      ۸ بیت نتیجه با مرتبه بالا در AH ذخیره می شود و ۸ بیت با مرتبه پایین در AL ذخیره می شود.

      Arithmetic1

      ۲در صورتی که عملوند دو بايتی (یک کلمه) باشد، عملوند را در AX ضرب کرده نتيجه را در ثبات DX:AX قرار می دهد. به عبارتی نتیجه حاصل شده یک doubleword است که به دو ثبات نیاز دارد. قسمت مرتبه بالا (سمت چپ) در DX ذخیره می شود و قسمت مرتبه پایین (سمت راست) در AX ذخیره می شود.

       

      The multiplicand should be in the AX register, and the multiplier is a word in memory or another register. For example, for an instruction like MUL DX, you must store the multiplier in DX and the multiplicand in AX.

      The resultant product is a doubleword, which will need two registers. The high-order (leftmost) portion gets stored in DX and the lower-order (rightmost) portion gets stored in AX.

      Arithmetic2

      ۳وقتی عملوند دو مقدار doubleword باشد، عملوند را در EAX ضرب کرده و نتیجه تولید شده در ثبات EDX:EAX ذخیره می شود ، یعنی ۳۲ بیت مرتبه بالا در رجیستری EDX ذخیره می شود و ۳۲ بیت مرتبه پایین در ثبات EAX ذخیره می شود.

      Arithmetic3

      مثال

      مثال : 

      مبحث دستورالعملهای محاسباتی در زبان اسمبلی (Assembly) را با مثالی ادامه می دهیم.

      مثال

      مثال زیر ۳ را با ۲ ضرب می کند و نتیجه را نمایش می دهد.

      مثال : 

      هنگامی که کد فوق کامپایل و اجرا شد ، نتیجه زیر را ایجاد می کند.

      مثال : 

      کلام پایانی

      دستورالعملهای محاسباتی در زبان اسمبلی (Assembly) را با دستورالعمل MUL / IMUL مورد بررسی قرار دادیم. در بخش بعدی نیز مبحث دستورالعمل های محاسباتی را با مبحث دستورالعمل DIV / IDIV ادامه خواهیم داد. با ادامه ی آموزش ها از وب سایت آموزشی پی وی لرن همراه باشید.

      QR:  جلسه ۱۰-۰۱ : دستورالعمل های محاسباتی در زبان اسمبلی (Assembly)
      به اشتراک بگذارید