אסמבלי x86/האוגרים: הבדלים בין גרסאות בדף

תוכן שנמחק תוכן שנוסף
ינון א (שיחה | תרומות)
אין תקציר עריכה
תוספות בלעז
שורה 1:
{{אסמבלי}}
רוב התכנות של בשפת אסמבלר מסתמך על האוגרים (Register).<br />
האוגרים הם יחידות זכרון בני 16 ביט כל אחת היושבות במעבד ומבצעות את כל עבודות החישוב.<br />יחידת האוגרים מהירה הרבה יותר מהזיכרון הרגיל של המחשב, דבר שהופך את פעולת המעבד למהירה יותר.
<br />
במעבד 8086 ישנם 14 אוגרים המתחלקים ל 4 סוגים:
 
===אוגרים כלליים===
אוגרים אלו משמשים לרוב פעולות החישוב וההעברה לזכרון וממנו.
*AX - נקרא גם צובר (Accumulator register) - משמש בעיקר לפעולות חישוב ופסיקות.
*BX - נקרא גם אוגר הבסיס (Base register) - משמש בעיקר לכתובות זכרון.
*CX - נקרא גם מונה (Counter register) - משמש בעיקר כמונה לולאות.
*DX - נקרא גם אוגר הנתונים (Data register)- מתפקד כעוזר ל AX ולפעולות כפל וחילוק.
<br /> את כל לעיל ניתן לחלק לשני אוגרים בני 8 ביט. AX למשל, יתחלק ל AH (הביטים השמאליים) ו - AL (הביטים הימניים).
 
===אוגרי המקטע===
אוגרים אלו מכילים כתובת של מקטעי התכנית בלבד, והם נקבעים ע"י מערכת ההפעלה.
*CS - אוגר מקטע הקוד (Code Segment)- מכיל את הכתובת לתחילת המקטע בו יושב קוד השפת מכונה בזכרון - אינו ניתן לישנוי.
*DS - אוגר מקטע הנתונים (Data Segment) - מכיל את הכתובת לתחילת המקטע בו יושבים המשתנים שמשתמשים בהם בתכנית.
*ES - אוגר מקטע הנתונים הנוספים (Extra Segment) - מכיל את הכתובת לתחילת המקטע בו יושבים משתנים נוספים שמשתמשים בהם בתכנית (בעיקר משתני יעד לביצוע העברה או העתקה).
*SS - אוגר מקטע המחסנית (Stack Segment) - מכיל את הכתובת לתחילת המחסנית (ראה להלן).
הערה: את האוגרים הללו לא ניתן לחלק לשני חלקים של 8 ביט.
 
===אוגרי המצביעים===
אוגרים אלו מכילים כתובות יחסיות עבור אוגרי המקטע.
*SI - אוגר מצביע מקור (Source register) - עבור שימוש בקטע זכרון כמקור (יחסית ל DS).
*DI - אוגר מצביע יעד (Destination register) - עבור שימוש בקטע זכרון כיעד להעתקה או העברה (יחסית ל ES).
*SP - מצביע המחסנית (Stack Pointer register) - מצביע על המיקום האחרון במחסנית אליה הוזן נתונים (יחסית ל SS). לא נועד לשינוי ידני.
*BP - מצביע הבסיס (Stack Base Pointer register) - מצביע על מקום כלשהו במחסנית (יחסית ל SS).
*IP - מצביע הפקודה (Instruction Pointer) - מצביע על הפקודה הבאה לביצוע (יחסית ל CS). לא נועד לשינוי ידני.
הערה: את האוגרים הללו לא ניתן לחלק לשני חלקים של 8 ביט.
 
===אוגר הדגלים===