אסמבלי x86/שגרות: הבדלים בין גרסאות בדף
מ שוחזר מעריכות של 82.166.219.154 (שיחה) לעריכה האחרונה של BDaniel תגית: שחזור |
אין תקציר עריכה |
||
שורה 8: | שורה 8: | ||
כידוע ישנו אוגר הנקרא הip. אוגר זה מכיל את כתובת ההוראה לביצוע. כאשר הפקודה מתבצעת הip מקבל את ההוראה הבאה לביצוע. כאשר האסמבלי פוגש את פקודת call הוא שומר את כתובת הפקודה הבאה לביצוע כך שבסיום השגרה נחזור חזרה לכתובת השמורה בip. |
כידוע ישנו אוגר הנקרא הip. אוגר זה מכיל את כתובת ההוראה לביצוע. כאשר הפקודה מתבצעת הip מקבל את ההוראה הבאה לביצוע. כאשר האסמבלי פוגש את פקודת call הוא שומר את כתובת הפקודה הבאה לביצוע כך שבסיום השגרה נחזור חזרה לכתובת השמורה בip. |
||
מבנה השגרה וקריאתה == |
|||
[[תמונה:Shigra.jpg]] |
[[תמונה:Shigra.jpg]] |
||
גרסה מ־15:17, 3 במאי 2018
אסמבלי 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