0

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

 
siryahya
siryahya
کاربر طلایی1
تاریخ عضویت : اسفند 1389 
تعداد پست ها : 158650
محل سکونت : ▂▃▄▅▆▇█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 ) کار میکنه ( البته به شرطی که عدد های ما علامت دار نباشن در واقع مثبت باشن )

 

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

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