0

اصول برنامه نویسی در اسمبلی

 
siryahya
siryahya
کاربر طلایی1
تاریخ عضویت : اسفند 1389 
تعداد پست ها : 158652
محل سکونت : ▂▃▄▅▆▇█Tabriz█▇▆▅▄▃▂

پاسخ به:اصول برنامه نویسی در اسمبلی
دوشنبه 21 اردیبهشت 1394  2:54 AM

دستور CMP 
دستور cmp که در واقع یعنی مقایسه ( compare ) دقیقا کار sub رو انجام میده با این تفاوت که مقدار destination رو تغییر نمیده یعنی تفریق رو انجام میده و تمام flag ها رو دقیقا مثل sub تغییر میده اما فرقش اینه که حاصل تفریق رو دیگه به ما نمیده فقط برای مقایسه به کار میره خیلی به صرفه تره اگر به جای sub از cmp استفاده کنیم چون انرژی کم تر و زمان کمتر میگیره .
 
اگر یادتون باشه برنامه ای نوشته بودیم که دو تا عدد رو میگرفت و میگفت که کدومش بزرگ تره حالا میخوایم همون برنامه رو به صورت بهینه تر و با دستورات بهتر مجددا بنویسیم :
 
خوب اول که باید عدد اول رو بگیریم بریزیم تو ebx و دوم رو بریزیم تو eax که بدونیم کی به کیه 
کد PHP:
mov edx,0
in eax,[dx]
mov ebx,eax
in eax,[dx]  
خوب حالا میایم برنامه ای که نوشته بودیم رو این بار با استفاده از CMP و JL مینویسیم :
کد PHP:
CMP ebx,eax
JL SIB
mov eax,1
JMP END
SIB:    mov eax,2
END:    mov edx,1
out [dx],eax
ret  
این برنامه برای تمام اعداد چهار بایتی ( :O ) کار میکنه ( البته به شرطی که عدد های ما علامت دار نباشن در واقع مثبت باشن )

 

ترکی زبان قربون صدقه رفتنه داریم که: گوزلرین گیله‌سین قاداسین آلیم که یعنی درد و بلای مردمک چشات به جونم …!.

تشکرات از این پست
دسترسی سریع به انجمن ها