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

תוכן שנמחק תוכן שנוסף
מ ←‏הערוצים: תקלדה
הוספת מידע ותיקון שגיאות לשוניות.
שורה 1:
{{אסמבלי x86}}
כדיעל מנת לבצע הוראה, המעבד קורא מהזיכרון ו/או מהקלטמקלט נתון הנמצא שם. ולאחר מכן מבצע את הפקודה הנדרשת שכוללת הכנסת נתון חדש בזיכרון ןו/או ביחידת הפלט.
== הערוצים ==
קיימים שלושה ערוצים שבהם המעבד מעביר נתונים אל הזיכרון וממנו:
* פס הנתונים - בפס זה נכתבים הנתונים המועברים.
* פס המענים - בפס זה כתובה הכתובת שלשםשאליה המעבד ניגש כרגע, כאשר המעבד יודע את הכתובת הוא יכול לקבוע לאן לשלוח נתונים או מאיפה לקבל נתוניםאותם.
* פס הבקרה - פס זה קובע האם המעבד כעת כותב לזיכרון או קורא ממנו.
 
שורה 10:
המעבד משנה את פס הבקרה, מכניס את הכתובת הנכונה בפס המענים וממשיך לקבל או לשלוח נתונים לכתובת המדוברת.
== חלקי הזיכרון ==
בתוך הזיכרון, ישנה חלוקה למקטעים. לכל מקטע יש כתובת בסיס משלו, אשר מהווה את תחילת המקטע ומספר כתובות מוגבל שמסמן כל תא (כתובת ההיסט).
יש חלוקה בתוך הזיכרון למקטעים. כל מקטע יש לו כתובת משלו, שבתוכה קיימות כמה כתובות שכל כתובת היא של תא אחד. מלבד הזיכרון שבו מאוכסנת התוכנית והזיכרון שבו הנתונים הנדרשים לתוכנית מסויימת, יש כמה חלקים בזיכרון שנמצאים בעצם בתוך המעבד, והגישה אליהם מהירה ביותר. חלקים אלה הם האוגרים. כל התוכניות בנויות על העברת מידע ממקום סתמי בזכריון אל אחד האוגרים, או להיפך. אין גישה להעברת מידע בזיכרון ממקום למקום בלי לעבור קודם כל לאחד מהאוגרים.
בארכיטקטורת 8086, שאיתה נעבוד, קיימים 4 מקטעי זיכרון שכתובת הבסיס שלהם מוחזקת באוגרי המקטע:
 
* מקטע הקוד (Code/Text Segment) - מקטע זה מחזיק בתוכו את קוד התוכנית עצמו. לפיו למעשה מבצעת התוכנית את ריצתה בסדר הרצוי והוא אינו ניתן לשינוי.
===מצביעים===
* מקטע הנתונים (Data Segment) - מקטע זה מחזיק בתוכו את המשתנים הגלובאליים בתוכנית. המקטע מחולק לשני חלקים: חלק השומר את המשתנים המאותחלים (Data) וחלק השומר את המשתנים שאינם מאותחלים (BSS).
כדי לעבור מנקודה מסויימת בזיכרון לנקודה אחרת, צריך שיהיה מידע איפה נמצאים כרגע. למחשב אין מכונה שזזה ממקום למקום, במקום זה קיימים אוגרים מסויימים שהנתון שבתוכם אומר מאיזה חלק בזיכרון לקרוא כעת. כדי להורות לעבור לחלק הבא יש לשנות את המספר שם ב-1.
* מקטע המחסנית (Stack Segment) - מקטע זה שומר את המחסנית, אשר מכילה בתוכה, בין היתר, את המשתנים המקומיים. ראו פירוט על המחסנית ב-[[אסמבלי x86/המחסנית|חלק ז' - המחסנית]].
 
* מקטע הנתונים הנוספים (Extra Segment) - מקטע זה קיים לעזרת המתכנת לפי רצונו, לרוב משמש להחזקת משתני יעד לביצוע העברה או העתקה.
===המחסנית===
ישמלבד חלוקה בתוךמקטעי הזיכרון למקטעים. כל מקטע יש לו כתובת משלו, שבתוכה קיימות כמה כתובות שכל כתובת היא של תא אחד. מלבד הזיכרון שבו מאוכסנת התוכנית והזיכרון שבו הנתונים הנדרשים לתוכנית מסויימת, ישישנם כמה חלקים בזיכרון שנמצאים בעצםלמעשה בתוך המעבד, והגישה אליהם מהירה ביותר. חלקים אלהאלו הם האוגרים. כל התוכניות בנויות על העברת מידע ממקום סתמי בזכריון אל אחד האוגרים, או להיפך. אין גישה להעברת מידע בזיכרון ממקום למקום בלי לעבור קודם כל לאחד מהאוגרים (ראו פירוט על האוגרים ב-[[אסמבלי x86/האוגרים|חלק ג' - האוגרים]]).
יש קטע בזיכרון שהמצביע לא זז ממנו, אלא כל הנתונים שנכנסים שם, נדחפים קדימה בכתובת אחת ורק את הנתון האחרון שנכנס המצביע רואה.