|
עמוד:267
באיור 7 . 9 אפשר לראות כי לאחר זימון הפרוצדורה , יצביע האוגר SP על ראש המחסנית ( התא שמכיל את כתובת החזרה , ( וכי במחסנית שמור עותק של הנתונים שנשלחו לפרוצדורה . כיצד אם כך ניתן לפנות לפרמטרים שנשלחו לפרוצדורה ? מקובל להשתמש באוגר BP ( שהוא אוגר בן 16 סיביות שמצביע על היסט במקטע המחסנית , ( כדי לגשת לפרמטרים השמורים במחסנית . אך תחילה עלינו לאתחל את ערכו של BP לערכו של , SP ולכן בתחילת הפרוצדורה נרשום את ההשמה MOV VOM כעת נשתמש בשיטת מיעון בסיס כדי לחשב את ההעתק של הפרמטר מראש המחסנית ; כתוצאה , יחולו השינויים האלה , לפי סדר הכנסתם של הפרמטרים למחסנית : תוכנו של המשתנה uvin a BP + 4 n : 11 n : £ תוכנו של המשתנה b הועבר לכתובת BP + 2 בהתאם , נכתוב את הפרוצדורה : swap swap ENDP ret 4 mov [ bp + 2 ] , ax ; [ BP + 2 ] = 0012 h xchg ax , [ bp + 4 ] ; AX = 0012 h , [ BP + 2 ] = 00 A 9 h mov ax , [ bp + 2 ] ; AX = 00 A 9 h mov bp , sp ; BP = SP swap PROC בסיום הפרוצדורה , עלינו להחזיר את המחסנית למצבה המקורי , כלומר לאחר שתישלף כתובת החזרה , עדיין יהיו במחסנית שני הפרמטרים שהכנסנו לתוכה לפני הזימון לפרוצדורה . כדי להוציא את הפרמטרים מהמחסנית נשתמש בהוראת החזרה RET 4 הוראה זו מקדמת את ערכו של SP ב4- וכך נשלפת תחילה כתובת החזרה ( עליה מצביע ( SP ובהתאם ערכו של SP גדל ב . 2- לאחר מכן גדל ערכו של SP ב4- וכך הוא חוזר למצב ההתחלתי , שבו הוא הצביע על הכתובת , OlOOh והקצאת הזיכרון עבור הפרמטרים של הפרוצדורה מבוטלת .
|
|