|
صفحة: 268
שאלה 7 . 6 א . כאשר מחשבים את הכתובת של פרמטר a ( לדוגמה , ( הסבירו מדוע מחברים bp + 2 ולא מחסרים ? bp-2 ב . בעקבות ביצוע ההוראה , RET 4 האם הערכים שהיו במחסנית נמחקו ? מתי ערכים אלה נמחקים ? ג . הסבירו מה יקרה אם נשנה את הוראת החזרה מהפרוצדורה ונרשום את ההוראה . RET לסיכום , בתכנית זו העברנו לפרוצדורה פרמטרים לפי ערך , כלומר העתקנו למחסנית את הנתונים ששמורים במשתנים b-1 a וביצענו את ההחלפה בין הנתונים במחסנית ולא בין תאי הזיכרון שהוקצו למשתנים אלה . בסיום הפרוצדורה אנו "משחררים" במחסנית את הזיכרון שהוקצה לפרמטרים שהועברו , ומרגע זה לא ניתן "לגשת" אליהם , לעומת זאת , ערכם של המשתנים b ^ a לא השתנה כלל . כדי לבצע משימה בהצלחה נממש העברת פרמטרים לפי אזכור . 7 . 4 . 2 שימוש במחסנית להעברת פרמטרים לפי אזכור ( by reference ) כדי לממש העברת פרמטרים לפי אזכור , יש לשמור במחסנית את כתובות המשתנים ולא את הערכים עצמם . | דוגמה 7 . 5 עלינו לכתוב תכנית שתזמן את הפרוצדורה swapByRef ( a , b ) המחליפה בין ערכי שני פרמטרים ומממשת העברת פרמטרים לפי אזכור . בשיטה זו , לפני הזימון של הפרוצדורה עלינו לדחוף למחסנית את הכתובות של המשתנים . b-1 a להלן קטע התכנית הראשית המזמנת את הפרוצדורה CODE b DW A 9 h aDW I 2 h . DATA . STACK 100 h . MODEL SMALL
|
|