استفاده از عملگر DUP در زبان اسمبلی Assembly

  • سه شنبه ۲۴ آذر ۱۳۹۴
  • بازدید ۲,۴۹۸ نفر
  • 1 امتیاز2 امتیاز3 امتیاز4 امتیاز5 امتیاز (38 امتیاز از 9 رای)
    Loading...

تصویر operand-dup-assembly-12659 استفاده از عملگر DUP در زبان اسمبلی Assembly

استفاده از عملگر DUP در زبان اسمبلی Assembly

در این بخش از آموزش زبان اسمبلی برای شما کاربران عزیز استفاده از عملگر DUP در زبان اسمبلی Assembly را آماده کرده ایم که می توانید در ادامه آن را مشاهده کنید.

با استفاده از عمگر DUP هنگام تعریف داده با دستورات DB، DW و DD می توانیم چندین بایت یا چندین کلمه از حافظه را که مورد نیازمان است برای استفاده انتخاب کنیم. مثلا هنگام تعریف ارایه می توانیم از عملگر DUP در بخش سگمنت داده استفاده کنیم و تعداد خانه های ارایه را مشخص کنیم. برای درک بهتر عملگر DUP در زبان اسمبلی به مثال زیر توجه کنید.

توضیحات بیشتر استفاده از عملگر DUP در زبان اسمبلی Assembly را در ادامه مطلب می توانید مشاهده کنید.

p1 dw 40 dup(0)

p2 db 30 dup(“*”)

p3 db 25 dup(‘* ‘),’*’

در کد بالا دستور خط اول ۴۰ کلمه از حافظه را به خود اختصاص می دهد که محتویات هر کدام از آن ها شامل عدد ۰ است. دستور خط دوم ۳۰ بایت از حافظه را اختصاص می دهد که محتویات هر بایت برابر با علامت * خواهد شد. دستور خط سوم ۲۵ بایت از حافظه را تعیین می کند که شامل ۲۶ تا علامت ستاره است و هر ستاره با فاصله از هم جدا شده اند.

p4 db 20 dup(7 dup(‘*’),3 dup(‘+’),9 dup(‘-‘))

در دستور بالا ۵۷ ستاره،۳ علامت جمع و سپس ۹ علامت منها را تعریف می شود و این کار را ۲۰ بار تکرار می نماید.

p5 dw 200

p6 dw p1 * 10

p7 dw 10 * 8 * 7

p8 dw p7 + 5

در دستورات DB، DW و DD نیز می توانیم از عبارات محاسباتی استفاده کنیم. شاید کاربرد عبارت چندان جالب به نظر نرسد ولی ممکن است گاهی برای خوانایی برنامه خوب باشد. در مثال بالا چند نمونه کد برای استفاده از عبارات محاسباتی در دستورات تعریف داده نوشته شده است.

نحوه تعریف ارایه یک بعدی در زبان اسمبلی:

p9 db 10 dup(?)

در مثال بالا متغیر p9 به صورت ارایه یک بعدی که دارای ۱۰ خانه ۱ بایتی است تعریف شده است که عناصر ارایه نامعلوم می باشد و p9+0 به عنصر اول ارایه و p9+1 به عنصر دوم و p9+2 به عنصر سوم و تا آخر به این طریق می توان به تمام عناصر ارایه یک بعدی دسترسی داشته باشیم.

نحوه تعریف ماتریس یا ارایه دو بعدی در زبان اسمبلی:

p10 db 3 dup( 3 dup(0))

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

داده های تعریف شده در سگمنت داده

base       db      ۳    ;۲         ;lenght  of n element
two        db      ۱    ;۱         ;lenght of elemnet
row db 0
col db 0
address dw 0

زیر برنامه تعریف شده در سگمنت کد

compute_addres  proc
               mov       address,0
               mov       di,0                              ;
               mov       ah, 0                   ;
               mov       al, row                 ; ax=row
               dec       al                      ; I=I-1
               mul       base                    ; (i-1)*20
               mov       di, ax                  ;start  address of  row
               mov       al, col                 ; ax=col
               mov       ah, 00                  
               dec       ax                      ;j=j-1
               mul       two                     ;(j-1)*2
               add       di, ax                  ;di=(i-1)*20+(i-1)*2
               mov       address,di           
               ret
compute_addres endp

با استفاده از ماکروی زیر می توانید از سطر و ستون مورد نظر مقداری خوانده و در متغیری قرار دهد.

setvaluecost macro i1,j1,value
  pushreg
  mov cl,i1
  mov ch,j1
  mov row,cl
  mov col,ch
  pushreg
  call compute_addres
  popreg
  mov di,address
  mov cost[di],value
  popreg
endm


مشاهده ویدئو در این باره

خوشحال خواهیم شد اگر نظر خودتون رو درباره این مطلب ثبت کنید

خطا!دکمه ریفریش را بزنید
  1. تصویر آواتار کاربر 0
    وحید شنبه , 31 تیر

    بسیار خوب و عالی بود . ممنون . زنده باد اسمبلی

لیســــــــت پــــــــروژه های انتشــــــــار نشده ( 22 موضوع )

مشاهده لیست کامل
مشاهده لیست کامل
مشاهده لیست کامل
مشاهده لیست کامل
socket programing آموزش برنامه نویسی آموزش سی شارپ اینترنت اشیا بازی تحت شبکه بازی تحت شبکه به زبان سی شارپ برنامه تحت شبکه با سی شارپ برنامه نویسی ترجمه مقاله ترجمه مقاله شبکه دانلود رایگان پروژه های دانشجویی دانلود سورس برنامه دانلود سورس رایگان دانلود نرم افزار دانلود پروژه دانشجویی دانلود پروژه رایگان دانلود پروژه های دانشجویی دانلود کتاب دانلود کتاب آموزشی دانلود کتاب اموزشی سورس رایگان سورس کد بازی تحت شبکه سورس کد بازی تحت شبکه با C# سورس کد بازی تحت شبکه چند نفره سوکت پروگرمین شبکه SDN شبیه سازی با نرم افزار R نحوه نوشتن برنامه تحت شبکه نرم افزار Rstudio پروژه arena پروژه matlab پروژه ns2 پروژه opnet پروژه ارنا پروژه سیمولینک matlab پروژه شبکه عصبی پروژه مهندسی صنایع پروژه مهندسی صنایع با ارنا پروژه های آماده با OpenGL پروژه های آماده با OpenGL در سی پلاس پلاس پروژه های آماده با ارنا پروژه های آماده برای درس گرافیک کامپیوتری پروژه هوش مصنوعی پروژه پردازش تصویر matlab پروژه پردازش سیگنال matlab