אסמבלי x86/שגרות

מתוך ויקיספר, אוסף הספרים והמדריכים החופשי
אסמבלי x86











השגרה[עריכה]

שגרה = פונקציה = שיטה = פרוצדורה

שגרה היא תת תכנית המאפשרת לנו לבצע פעולה אחת או יותר בתכנית אסמבלי. כל שגרה מתחילה בשורת החותמת של השם ו-PROC, כל שגרה מסתיימת בשורת חותמת, שם השגרה ו-ENDP. חובה לכתוב בשגרה את הפקודה ret. פקודה זו גורמת לאסמבלי לחזור חזרה לתכנית הראשית. יש אפשרות שפקודה זו תגיע עם מספר על ידה. לדוגמא: ret 4, ret 8. השגרה יכולה להכתב בתחילת התכנית ובסוף התכנית. אנו נכתוב אותה בסוף התכנית. מטרת השגרה להקל עלינו כאשר התכנית מורכבת, המבנה נכון יותר, פשוט יותר וחוסך לנו טעויות. כדי לזמן את השגרה יש לכתוב בתכנית הראשית פקודת זימון. הפקודה היא: שם השגרה call כידוע ישנו אוגר הנקרא ip. אוגר זה מכיל את כתובת ההוראה לביצוע. כאשר הפקודה מתבצעת ה-ip מקבל את ההוראה הבאה לביצוע. כאשר האסמבלי פוגש את פקודת call הוא שומר את כתובת הפקודה הבאה לביצוע כך שבסיום השגרה נחזור חזרה לכתובת השמורה ב-ip.

מבנה השגרה וקריאתה[עריכה]

בכדי לקרוא לשגרה נצטרך לקרוא לה:

call שם השגרה

דוגמאות[עריכה]

דוגמה לשיטה שכופלת את AX ב-BX:

proc multiply

	mul bx

	ret

endp multiply

כדי לקרוא לשגרה זו, נצטרך לכתוב:

call multiply