עמוד:186

במחסנית נקראת כתובת החזרה . ( Return address ) ב8086- קיימים שני סוגים של קריאות לשגרה : קריאה לשגרה קרובה ( Near routine ) וקריאה לשגרה רחוקה . ( Far routine ) כאשר קוראים לשגרה קרובה , כתובת השגרה חייבת להיות במקטע הקוד הנוכחי . בתוך המקטע הזה אין הגבלה על מיקומה של הכתובת או על מרחקה מן ה , CS : IP- ולכן , בקפיצה לשגרה , ה8086- צריך לשנות רק את ערכו של האוגר , IP ולקבוע בו את הכתובת היחסית של השגרה . ערך האוגר CS אינו משתנה . כדי לחזור אל התכנית בסיום ביצוע השגרה , יש לשמור את כתובת החזרה , כלומר את הערך של האוגר . IP נציין שבספר הזה נציג הוראות לביצוע שגרה קרובה בלבד . אולם אפשר לשלב בתכנית גם הוראות לביצוע שגרה רחוקה , הנמצאת במקטע קוד אחר . במקרה הזה גם ערך האוגר CS משתנה , ולכן צריך לשמור את שני הערכים ( של האוגר IP ושל האוגר . ( CS דוגמה נתאר את מנגנון השגרה . DELAY נניח כי ההוראה הראשונה של השגרה נמצאת בכתובת היחסית , 10 h במקטע הקוד הנוכחי . א . קריאה לשגרה : הניחו כי הוראת הקריאה לשגרה נמצאת בכתובות היחסיות 102 h-101 h וכי לפני הקריאה . SP = 4 Fh באיור 1 . 66 מוצג מצב המחסנית , ומוצגים האוגרים SP ו , IP- לפני ביצוע ההוראה ואחריה : CALL DELAY ההוראה CALL DELAY מבצעת את הקריאה לשגרה , ולפני שהתכנית עוברת לביצוע השגרה , הכתובת של האוגר IP נשמרת במחסנית : SP ? SP – 1 דחיפת החצי העליון של IP למחסנית SP ? SP – 1 ] SP [ ? IPH דחיפת החצי התחתון של IP למחסנית ] SP [ ? IPL ( כתובת ההוראה הראשונה בשגרה ) IP ? DELAY

מטח : המרכז לטכנולוגיה חינוכית


לצפייה מיטבית ורציפה בכותר