لوگوی سایت نوآوران گرمی
نوآوران گرمی | مرجع فیلم های آموزشی و همیار دانشجو

شماره های پشتیبانی

09194751295 - 09365442247

NoavaranGermi@gmail.com

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

1 امتیاز2 امتیاز3 امتیاز4 امتیاز5 امتیاز (33 امتیاز از 8 رای)
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

×

توجه: در صورت سفارش ( انجام شبیه سازی - برنامه نویسی و ...) در موضوعات بالا می توانید به صورت آنلاین با ما در تماس باشید.

×

توجه: اگر در موضوعات بالا تخصص دارید می توانید با ما همکاری کرده و برای خود کسب درآمد کنید.

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

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

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