לדלג לתוכן

אסמבלי x86/התקשורת בין המעבד לזיכרון ויחידות הקלט-פלט

מתוך ויקיספר, אוסף הספרים והמדריכים החופשי
אסמבלי x86











על מנת לבצע הוראה, המעבד קורא מהזיכרון ו/או מקלט נתון הנמצא שם ולאחר מכן מבצע את הפקודה הנדרשת שכוללת הכנסת נתון חדש בזיכרון ו/או ביחידת הפלט.

הערוצים

[עריכה]

קיימים שלושה ערוצים שבהם המעבד מעביר נתונים אל הזיכרון וממנו:

  • פס הנתונים - בפס זה נכתבים הנתונים המועברים.
  • פס המענים - בפס זה כתובה הכתובת שאליה המעבד ניגש כרגע, כאשר המעבד יודע את הכתובת הוא יכול לקבוע לאן לשלוח נתונים או מאיפה לקבל אותם.
  • פס הבקרה - פס זה קובע האם המעבד כעת כותב לזיכרון או קורא ממנו.

ביצוע פקודה

[עריכה]

המעבד משנה את פס הבקרה, מכניס את הכתובת הנכונה בפס המענים וממשיך לקבל או לשלוח נתונים לכתובת המדוברת.

חלקי הזיכרון

[עריכה]

בתוך הזיכרון, ישנה חלוקה למקטעים. לכל מקטע יש כתובת בסיס משלו, אשר מהווה את תחילת המקטע ומספר כתובות מוגבל שמסמן כל תא (כתובת ההיסט). בארכיטקטורת 8086, שאיתה נעבוד, קיימים 4 מקטעי זיכרון שכתובת הבסיס שלהם מוחזקת באוגרי המקטע:

  • מקטע הקוד (Code/Text Segment) - מקטע זה מחזיק בתוכו את קוד התוכנית עצמו. לפיו למעשה מבצעת התוכנית את ריצתה בסדר הרצוי והוא אינו ניתן לשינוי.
  • מקטע הנתונים (Data Segment) - מקטע זה מחזיק בתוכו את הנתונים והמשתנים הגלובאליים בתוכנית. המקטע מחולק לשני חלקים: חלק השומר את הנתונים המאותחלים (Data) וחלק השומר את הנתונים שאינם מאותחלים (BSS).
  • מקטע המחסנית (Stack Segment) - מקטע זה שומר את המחסנית, אשר מכילה בתוכה, בין היתר, את המשתנים המקומיים. ראו פירוט על המחסנית ב-חלק ז' - המחסנית.
  • מקטע הנתונים הנוספים (Extra Segment) - מקטע זה קיים לעזרת המתכנת לפי רצונו, לרוב משמש להחזקת משתני יעד לביצוע העברה או העתקה.

מלבד מקטעי הזיכרון, ישנם כמה חלקים בזיכרון שנמצאים למעשה בתוך המעבד, והגישה אליהם מהירה ביותר. חלקים אלו הם האוגרים. כל התוכניות בנויות על העברת מידע ממקום סתמי בזכריון אל אחד האוגרים, או להיפך. אין גישה להעברת מידע בזיכרון ממקום למקום בלי לעבור קודם כל לאחד מהאוגרים (ראו פירוט על האוגרים ב-חלק ג' - האוגרים).