|
עמוד:253
7 . 3 המחסנית ומצביע המחסנית 7 . 3 . 1 מבנה המחסנית לניהול מנגנון החזרה מפרוצדורת , המעבד משתמש באזור מיוחד בזיכרון הראשי , שנקרא מחסנית rmonnn . ( Stack ) ממוקמת במקטע מיוחד שהוקצה לה , מקטע זה נקרא "מקטע המחסנית" Stack Segment ) או בקיצור . ( SS המחסנית מתוכננת כך שתוכל לאחסן לזמן קצר נתונים וכתובות . כדי להקצות מקום אחסון למחסנית אנו משתמשים בהנחיה ו מספר בתים . STACK לדוגמה , נגדיר מחסנית בגודל 256 בתים . STACK 100 h המחסנית מנוהלת בדרך הדומה מאוד לדרך שבה מנוהלת מחסנית תחמושת של רובה אוטומטי . הכדורים נטענים במחסנית תחמושת בזה אחר זה , ודוחפים זה את זה דרך הפתח הנמצא בראש המחסנית . פריקת הכדורים מן המחסנית נעשית גם היא דרך הפתח , אך סדר הוצאת הכדורים הפוך מסדר הכנסת הכדורים : זה שנכנס-אחרון-יוצא-ראשון . ( LIFO - Last-In-First-Out ) בספר זה נעדיף לרשום את הפרוצדורות בסיום קטע הקוד של התכנית הראשית ( המזמנת את הפרוצדורה . ( שימו לב , המעבד לא מבדיל בין קטע קוד של הפרוצדורה לבין קטע הקוד של התכנית הראשית 1 המתכנת הוא זה שצריך לדאוג להפרדה בין קטעים האלה . אם נכתוב את הפרוצדורה לאחר התווית שמציינת את תחילת התכנית ( בדוגמה שלעיל זו התווית , ( start המעבד יתחיל לבצע את הפרוצדורה ( החל מן ההוראה הראשונה ) אבל כאשר יסיים את הפרוצדורה , ויגיע להוראה , RET הוא לא ימצא כתובת חזרה ( משום שהפרוצדורה לא נקראה כלל , ( ולכן המעבד יקפוץ לכתובת אקראית במקטע הקוד . שאלה 7 . 1 כתבו תכנית המשתמשת בפרוצדורה בשם terminateProg ותפקידה לסיים את התכנית ולהחזיר את הבקרה למערכת ההפעלה .
|
|