אסמבלי/האוגרים
מתוך ויקיספר, אוסף ספרי הלימוד והמדריכים החופשי.
| אסמבלי |
|---|
|
| [עריכת תבנית] |
רוב התכנות של בשפת אסמבלר מסתמך על האוגרים (Register).
האוגרים הם יחידות זכרון בני 16 ביט כל אחת היושבות במעבד ומבצעות את כל עבודות החישוב. יחידת האוגרים מהירה הרבה יותר מהזיכרון הרגיל של המחשב, דבר שהופך את פעולת המעבד למהירה יותר.
במעבד 8086 ישנם 14 אוגרים המתחלקים ל 4 סוגים:
תוכן עניינים |
[עריכה] אוגרים כלליים
אוגרים אלו משמשים לרוב פעולות החישוב וההעברה לזכרון וממנו.
- AX - נקרא גם צובר (Accumulator register) - משמש בעיקר לפעולות חישוב,קלט פלט ופסיקות.
- BX - נקרא גם אוגר הבסיס (Base register) - משמש בעיקר כמצביע לכתובות זכרון.
- CX - נקרא גם מונה (Counter register) - משמש בעיקר כמונה לולאות.
- DX - נקרא גם אוגר הנתונים (Data register)- מתפקד כעוזר ל AX ולפעולות כפל וחילוק.
את כל לעיל ניתן לחלק לשני אוגרים בני 8 ביט. AX למשל, יתחלק ל AH (הביטים השמאליים) ו - AL (הביטים הימניים). לדוגמא, אם המספר 1234H שנמצא באוגר AX, יחולק לשניים, לאוגר AL וAH. אוגר AH יכיל את הספרות הראשונות (12H) לעומת AL שיכיל את הספרות האחרונות (34H).
[עריכה] אוגרי המקטע
אוגרים אלו מכילים כתובת של מקטעי התכנית בלבד, והם נקבעים ע"י מערכת ההפעלה.
- 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 ביט.
[עריכה] אוגר הדגלים
זהו בעצם אוגר אחד המכיל 9 דגלים הנותנים גישה לביצוע תקין של התכנית ולקביעת תצורתה.
הדגל נחשב דלוק כשערך הביט - 1. וכבוי כשערכו - 0.
- Overflow - דגל הגלישה - יידלק לאחר ביצוע פעולה אריתמטית שבה סימן התוצאה (+/-) שגוי.
- Direction - דגל הכיוון - מורה למעבד בפקודות מחרוזת לקדם מצביעים כלפי מעלה (0) או מטה (1).
- Interrut - דגל אפשור פסיקות חומרה. 1=אפשור, 0= אי אפשור.
- Trace -
- Sign - דגל הסימן - יידלק כשהביט השמאלי ביותר באופרנד היעד בפעולה האחרונה יהיה 1, מה שמציין מספר שלילי.
- Zero - דגל האפס - יידלק כשתוצאת הפעולה האריתמטית האחרונה יהיה שווה לאפס. נועד בעיקר לביצוע קפיצות מותנות.
- Auxiliary Carry - דגל נשא נוסף.
- Parity - דגל הזוגי - יידלק כאשר מספר הביטים הדולקים בתוצאת הפעולה האריתמטית האחרונה הוא זוגי. ייכבה כאשר היא אי-זוגית.
- Carry - דגל הנשא - משמעותי בפעולות במספרים בלתי מכוונים בלבד(unsignrd). במספרים כאלה, בביצוע פעולת חיבור שתוצאתה גדולה מטיפוס היעד, או בביצוע פעולת חיסור של ערך גדול מערך קטן ממנו, ידלק דגל זה.

