Presentation is loading. Please wait.

Presentation is loading. Please wait.

שפת סף וארכיטקטורה של מעבד 8086

Similar presentations


Presentation on theme: "שפת סף וארכיטקטורה של מעבד 8086"— Presentation transcript:

1 שפת סף וארכיטקטורה של מעבד 8086
מצגת 3 פרק 4

2 בפרק זה: בפרק זה: מבנה הוראה בשפת סף מודל תכנותי של 8086:
תיאור האוגרים מבנה זיכרון וכתובת של תא מבנה תכנית בשפת סף הגדרת משתנים

3 משפחת 80x86 מתכנת בשפת סף, שהיא שפה נמוכה, צריך להכיר לא רק את מבנה ההוראות וכללי השפה אלא גם הארכיטקטורה של המחשב אליו מתייחסות ההוראות בשפה זו. המעבד שנציג הוא מעבד 8086 שייצרה חברת אינטל בשנת 1978. חברת אינטל החלה בפיתוח מעבדים למחשבים אישיים בשנות 1970, ומאז היא הוציאה לשוק גרסאות שונות של מעבדים המכונים 'דורות'. שמות המעבדים מחמשת הדורות הראשונים נקבעו על-ידי מספרים המתחילים בספרות 80 והם: 8086 ו-80186, 80286, 80386, החל מן הדור השישי, התחילה חברת אינטל לכנות את המעבדים בשם פנטיום (פנטה = 5 ביוונית) ולמספרם במספרים מ ואילך, זאת כדי להגן על זכויות היוצרים של החברה.

4 משפחת 80x86 כל דור חדש של מעבדים בא לשפר את כושר העיבוד של המעבדים מן הדור הקודם ויחד עם זאת הוא שמר על עקרון התאימות (Compatibility). לפי עקרון התאימות, כל מחשב המבוסס על מעבד מדור חדש יהיה מסוגל להריץ גם תכניות הכתובות למעבדים מדורות קודמים. כדי לשמור על תאימות, המעבדים מבוססים על אותה ארכיטקטורה דומה ולכל המעבדים יש קבוצת הוראות (ISA) בסיסית, והשינויים מדור לדור מתבטאים בעיקר בהרחבת קבוצת ההוראות ובארגון מעבד שונה. בכל גרסה חדשה של מעבדים אפשר להגדיר צורת עבודה (הנקראת real mode) המאפשרת שימוש בארכיטקטורה של מעבד 8086

5 שפת סף (אסמבלי) דוגמה נתרגם את הפעולות הבאות לשפת סף:
כל הוראה בשפת סף מורכבת מאופרטור ואופרנדים. הערה פדגוגית: הצגנו בפרק ראשון תכנית דוגמאות ולכן ניתן להתחיל בדוגמה את הדיון בנושא זה דוגמה נתרגם את הפעולות הבאות לשפת סף: השם במשתנה a=23 השם במשתנה b=54 חבר a=a+b  תרגום אפשרי לשפת סף

6 הוראות בשפת סף כפי שניתן לראות בשפת סף האופרטור רשום בקוד מנומני (אותיות אנגליות מהוות קיצור של פעולה) ולא בקוד מספרי כמו במחשב הפשוט: MOV, ADD הוראה בשפת סף מגדירה משפחה של הוראות בשפת מכונה ניתן לרשום בצורה כללית כך: MOV operand1, operand2 ומשמעותה: העתק תוכן אופרנד 2 לאופרנד 1, כאשר אופרנד יכול להיות: אוגר, תא בזיכרון או קבוע.

7 הוראות בשפת סף התרגום להוראת מכונה ספציפית מוטל על המהדר - אסמבלר.
האסמבלר היא תכנית הקוראת את הוראות התכנית כמחרוזת, ומפרקת אותה לאופרטור ואופרנדים ובהתאם לכך מתרגמת את ההוראה לקוד מסוים בשפת מכונה. לדוגמה במעבד 8086:

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

9 0AFh, 10h (אפס מוביל שמספר מתחיל באות)
הוראות בשפת סף הנתונים יכולים מוצגים בשיטה בינארית, עשרונית או הקסאדצימאלית. נתונים אלו יתורגמו על ידי האסמבלר לנתונים בינאריים כדי להבדיל בין הייצוגים השונים, אנו מוסיפים סימול בסוף המספר: הסימול d בסיום מספר מציין שיטת ספירה עשרונית, ובהתאם המספר 23d יתורגם ל: הסימול h מציין מספר בשיטה הקסאדצימאלית 0AFh, 10h (אפס מוביל שמספר מתחיל באות) הסימול b לציון מספר בינארי, לדוגמה: b. ברירת מחדל מספר ללא סימול הוא מספר עשרוני

10 [Label:] Mnemonic [Operands] [;Comment]
מבנה הוראה בשפת סף: להוראות בשפת סף יש מבנה אחיד 4 שדות: [Label:] Mnemonic [Operands] [;Comment] סימול [ ] משמעותו אופציונלי, שדה חובה יחידי הוא שם מנמוני של האופרטור תפקיד השדות: השדה הראשון הוא תווית Label אותה ניתן להוסיף לחלק משורות התכנית. התווית מציינת את כתובת ההוראה הביצועית אליה מוצמדת התווית. לאחר התווית ובצמוד אליה, יש להוסיף את התו ' : '. שימוש נפוץ בתווית, בהוראות קפיצה, ומימוש הוראות תנאי ולולאות. דוגמה: start: בזמן טעינת התכנית לזיכרון תווית מוחלפת בכתובת

11 מבנה הוראה בשפת סף: השדה השני הוא חובה מציין קוד פעולה של אופרטור הרשום כשם ממנוני mnemonic)) המתאר את כגון MOV, ADD, CMP ועוד. השדה השלישי הוא רשימת אופרנדים (operand) המכילים את הארגומנטים עליהם מתבצעת ההוראה אופרנד יכול להיות(תלוי בהוראה): נתון, אוגר או משתנה בזיכרון . מספר אופרנדים במעבד 8086 הוא בין 0 לשניים

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

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

14 14 אוגרים במעבד 8086 מוחלקים ל- 4 קבוצות לפי התפקיד
רוחב פס נתונים הוא 16 רוחב פס כתובות הוא 20

15 מודל תכנותי של 8086 - קבוצת אוגרי הנתונים
תפקיד: אוגרי הנתונים משתתפים בביצוע הוראות מסוגים שונים (הוראות אריתמטיות, לוגיות, הזזה,...) תכולה: ניתן לאחסן בהם נתונים או כתובות מספר האוגרים: ישנם ארבעה סוגים של אוגרי נתונים: AX, BX, CX ו-DX. ישנן הוראות שמשתמשות בכל האוגרים לאותה מטרה, וישנן הוראות הדורשות שימוש באוגר מסוים בעל תפקיד מיוחד. במקרה כזה – יוצמד שם נוסף לאוגר. לדוגמה, כאשר מבצעים הוראות כפל/חילוק יש להשתמש באוגר AX, שנקרא גם צובר (Accumulator), כאשר משתמשים בהוראות פלט באוגר DX (שנקרא גם אוגר נתוניםData register ) מכיל את הנתונים שיש להציג כאשר מבצעים הוראות הזזה או לולאה, יש להשתמש באוגר CX הנקרא מונה (Counter register) . האוגר BX נקרא אוגר הבסיס (Base register), ובו נשתמש כמצביע בהוראות הכוללות פנייה לקבוצה של תאים בזיכרון (מערך).

16 מודל תכנותי של 8086 - קבוצת אוגרי הנתונים
גודל – מספר הסיביות: כל האוגרים בקבוצה זו הנתונים במעבד 8086 הם בני 2 בתים (16 סיביות) ניתן להתייחס אל אוגר נתונים כאל אוגר המכיל בתוכו שני אוגרים נפרדים, בגודל של בית (8 סיביות) כל אחד. חלקו התחתון של האוגר (סיביות 0 עד 7) משמש כאוגר אחד, ומצוין באמצעות האות L (קיצור של Low). חלקו העליון של האוגר (סיביות 8 עד 15) משמש כאוגר שני, ומצוין באמצעות האות H קיצור של (High). האותיות L ו-H מחליפות את האות X באוגר השלם. לדוגמה: MOV AX, 0FF00h ; AH=0FFh, AL=00h MOV BL, AL אי-אפשר להשתמש באותה הוראה באופרנד אחד שהוא אוגר בגודל בית ובאופרנד אחר שהוא אוגר בגודל מילה. למשל ההוראה: MOV BL, AX שגויה!

17 מודל תכנותי של 8086 - קבוצת אוגרי ההצבעה ואוגרי האינדקס
אוגרי ההצבעה ואוגרי האינדקס הם אוגרים ייעודיים גודל בני 16 סיביות (לא ניתן לגשת בנפרד לבית העליון או לבית התחתון שלהם) תפקיד: הם משמשים כמצביעים לתא בזיכרון. תכולה: האוגרים האלה מכילים כתובות ישנם חמישה סוגים של אוגרי הצבעה ואוגרי אינדקס: SP, BP, SI, DI ו-IP. נפרט בקצרה על תפקידי האוגרים האלה:  האוגר IP מצביע הוראות – (Instruction Pointer) – מצביע על כתובתו של הזיכרון שיש להביא ממנו את ההוראה הבאה בתכנית אל יחידת המישק לפס. בניגוד לשאר אוגרי ההצבעה, הוא אינו בשליטת המתכנת, כלומר לא ניתן לכתוב הוראה שבה IP הוא אופרנד. האוגר SP מצביע מחסנית – (Stack Pointer) – האוגר הזה מכיל את כתובתה של המחסנית. המחסנית היא קטע מוגדר בזיכרון הראשי, שהמעבד משתמש בו לביצוע פרוצדורות וכאמצעי זיכרון מהיר. האוגרים BP, SI, DI – מכילים כתובות זיכרון של אופרנדים ומשמשים בעיקר בביצוע לולאות שבהן יש גישה לקטע רציף של תאים בזיכרון הנקראים 'מערכים'.

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

19 מודל תכנותי של 8086 - קבוצת אוגרי הסגמנט
אוגרי הסגמנט מהווים חלק מקבוצת האוגרים הייעודיים תפקיד: בהם משתמשים כדי לחשב את הכתובת של תא בזיכרון, אליו הוא צריך לפנות אליו כדי לקרוא ממנו או לכתוב לתוכו. גודל: 16 סיביות תכולה: כתובת ישנם ארבעה סוגים של אוגרי סגמנט: CS, DS, SS ו-ES

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

21 ארגון הזיכרון יחידת הזיכרון של המחשב משמשת לאחסון נתונים והוראות של תכניות. חלק מן הנתונים מאוחסנים בה לפני ביצוע התכנית, חלקם במהלכה וחלקם נשמרים בזיכרון גם לאחר שביצוע התכנית הסתיים ניתן לחלק את הזיכרון של המחשב לשני סוגים: זיכרון ראשי בו מאוחסנים הנתונים והתכניות שנמחקים עם כיבוי המחשב (ניתוק המתח). זיכרון המשני, שמשמש כיחידת זיכרון קבועה, נשמרים נתונים ותכניות לאחר כיבוי המחשב. המידע בזיכרון משני נשמר במדיה מגנטית או אופטית כגון בדיסק קשיח (Hard Disk), בתקליטורים (CD – Compact Disk) ובתקליטונים (דיסקטים).

22 ארגון הזיכרון ליחידות זיכרון יש מאפיינים רבים אולם בשלב נציין רק את המאפיינים החשובים לכתיבת תכנית בשפת סף, והם: גודל של תא זיכרון – קובע את מספר הסיביות ואת הערך הגדול ביותר שאפשר לאחסן בזיכרון. במעבד 8086 גודל של תא זיכרון הוא byte 1 ובו ניתן לאחסן 256 ערכים שונים. במידה וצריך לאחסן ערכים גדולים יותר ניתן להשתמש במספר תאי זיכרון על-פי הצורך. למשל, כדי לאחסן את הערך 1000 נשתמש בשני תאי זיכרון.

23 ארגון הזיכרון כתובת של תא בזיכרון אותה המעבד רושם בפס הכתובות כאשר הוא פונה לקרוא מהזיכרון או לכתוב בזיכרון. לכל תא יש כתובת ייחודית הנקראת כתובת מוחלטת בפס הכתובות של מעבד 8086 יש 20 קווי כתובת ולכן מספר הכתובות השונות שניתן ליצור 220 = 1,048,576 מפת הזיכרון מתחילה בכתובת 00000h והכתובת האחרונה היא FFFFFh.

24 ארגון הזיכרון קיבולת של זיכרון
מאחר ובית הוא גודל שכיח בזיכרונות, קיימים מספר גדלים סטנדרטיים למדידת מספר הבתים בזיכרון המתוארים בטבלה הבאה: במעבד 8086 יש 1MB

25 ארגון הזיכרון הראשי BIOS זיכרון ROM זיכרון RAM
מענים 896K-1M רכיב ROM המכיל את ה- BIOS , תכנה צרובה שמספקת שירותי בדיקה של תקינות החומרה עם העלאת המחשב וממשקים ליחידות חמרה ושירותים לפסיקות תכנה מענים 640K-896K רכיב ROM לקריאה בלבד מענים אלו שייכים לרכיבי קלט/פלט שונים כמו מסך מענים מ- 0 עד 640K זיכרון לקריאה /כתיבה לשימוש המתכנת, לכאן נטענת התכנית שאנו מריצים BIOS זיכרון ROM זיכרון RAM

26 ארגון זיכרון - מקטעים מעבד 8086 מחלק את מרחב הזיכרון שהוא לינארי לארבעה מקטעים (או סגמנטים segments) שגודל מקסימאלי של כל אחד מהם יכול להיות 64KB ולכל אחד יש שם וייעוד שונה ארגון זיכרון 80386

27 תפקיד המקטעים סגמנט הקוד (Code Segment) – בו נשמרת התכנית שיש להריץ. בדרך-כלל זהו אזור רציף של כתובות המכילות את הוראות התכנית בשפת מכונה. לאזור הזה המעבד פונה בשלב ההבאה של מחזור הבאה-וביצוע, כדי לקרוא את ההוראה לביצוע. סגמנט הנתונים (Data Segment) – באזור הזה מאוחסנים המשתנים. לאזור הזה המעבד פונה בשלב הביצוע של מחזור הבאה וביצוע לצורך קריאה וכתיבה של נתונים שיש לעבד . סגמנט מחסנית (Stack Segment) משמש כזיכרון מהיר ולטיפול בפרוצדורות, רקורסיות ועוד. הסגמנט הנוסף (External Segment) הוא סגמנט נתונים נוסף והוא משמש בדרך כלל לאחסון של נתונים המשותפים למספר משימות.

28 היסט + כתובת תחילת הסגמנט
כתובת של תא בזיכרון כתובת של תא בזיכרון מורכבת משני חלקים: היסט + כתובת תחילת הסגמנט כתובת תחילת סגמנט שמורה באוגר סגמנט (CS, DS,..) כתובת ההיסט באחד מאוגרי ההצבעה ואוגרי האינדקס וגם אוגר נתונים BX (...(SI, DI, BX,

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

30 המרה מכתובת לוגית לכתובת מוחלטת
איך מחושבת כתובת מוחלטת בת 20 סיביות כאשר כל אוגר הוא בן 16 סיביות ? על כך אחראית יחידה הנמצאת במעבד

31 חפיפת מקטעים: כתובת לוגית וכתובת מוחלטת

32 קביעת כתובת בסיס של מקטע
אוגר מקטע קוד יכול להכיל כתובת שהיא כפולה של 16 כפולה זו נקראת פסקה (paragraph) באמצעות אוגר CS ניתן לכסות את כל מרחב הכתובות בזיכרון 1MB בכפולות של 16 לדוגמה, כאשר CS=0, הכתובת שהוא מצביע עליה היא 0*16 כאשר CS=1, הכתובת שהוא מצביע עליה היא 1*16 כאשר CS=k, הכתובת שהוא מצביע עליה היא k*16

33 יתרונות של השימוש במקטעים
תאימות למעבד קודם 8085 שבו מרחב הזיכרון הוא רק 64KB (מקטע אחד מכסה את כל התחום) בתכנית אנו מציינים את ההיסט של תא (רק 16 סיביות) . המעבד מחשב כתובת מוחלטת בעזרת כתובת אוגר המקטע המתאים הפרדה בין נתונים והוראות אפשרות להריץ אותה התכנית ובכל פעם לשנות את רק את הנתונים. מנגנון זה מאפשר להריץ מספר תכניות, כאשר לכל תכנית מוקצים סגמנטים נפרדים , מנגנון זה מאפשר שיתוף נתונים בין מספר תכניות.

34 טעינת תכנית לזיכרון PSP מקטע קוד מקטע הנתונים מקטע המחסנית
מערכת הפעלה DOS טוענת את התכנית לזיכרון במקום פנוי בשטח לכתיבה קריאה סדר הקצאת המקטעים: PSP גוש שהוא כותרת המכילה מידע על התכנית לאחריו מקטע הקוד, הנתונים והמחסנית לאחר טעינת התכנית לזיכרון, מ"ה DOS מאתחלת חלק מהאוגרים: אוגרים ES ו- DS לכתובת של PSP אוגרים CS ו- SS למען תחילת המקטע המתאים אוגר IP כתובת היסט של ההוראה הראשונה אוגר SP לראש המחסנית PSP מקטע קוד מקטע הנתונים מקטע המחסנית

35

36 גודל מקטע הנתונים גודל מקטע הנתונים נקבע על פי מספר המשתנים וגודלם
לדוגמה: הגדרנו 3 בתים, גודל המקטע יהיה הכפולה הקטנה ביותר של 16 וגדולה מ- 3 ולכן הגודל של מקטע נתונים יהיה 16 בתים (פסקה אחת) אבל רק שלושה בתים ראשונים יכילו את המשתנים שהגדרנו . יתר 13 הבתים הם "זיכרון מבוזבז"

37 מבנה תכנית בשפת סף כדי להריץ תכנית בשפת סף, היא צריכה לכלול בנוסף להוראות של התכנית עצמה גם הוראות מיוחדות שיתארו את הסגמנטים בהם אנו רוצים להשתמש ואת המשתנים בהם נשתמש בתכנית, לדאוג להקצאת מקום לנתונים ועוד... תכנית בשפת סף להרצה כוללת הוראות בשפת סף והנחיות אסמבלר הנחיות אסמבלר אינן מתורגמות לשפת מכונה קיימים מספר אסמבלרים למעבד 8086: הוראות שפת סף זהות, הנחיות אסמבלר שונות אנו נתאר הנחיות של אסבמלר TASM (חברת בורלנד) בחוברת פעילויות נתאר גם MASM (חברת מיקרוסופט)

38 דוגמה: תכנית המסכמת שני מספרים
.MODEL SMALL .STACK 100H .DATA a    DW    2 b    DW    5 sum  DW    ? .CODE START: ; אתחול מקטע נתונים MOV    AX, @DATA MOV DS, AX ;חיבור המספרים MOV  AX, a         ;ax = a ADD   AX, b         ;ax = a + b MOV   sum, AX       ;sum = ax ;סיום התכנית והחזרת בקרה למערכת ההפעלה MOV   AX, 4C00h INT   21h END start   דוגמה: תכנית המסכמת שני מספרים

39 שלד של תכנית .MODEL SMALL .STACK 100h .DATA הגדרת משתנים .CODE start:
; אתחול מקטע נתונים MOV    AX, @DATA MOV DS, AX גוף התכנית ;סיום התכנית והחזרת בקרה למערכת ההפעלה MOV   AX, 4C00h INT   21h END start   שלד של תכנית

40 תיאור הנחיות אסמבלר הנחיה מס. 1 ..MODEL SMALL
שלוש ההנחיות הבאות מגדירות את המקטעים: הנחיה מס. 2 קובעת את תחילת מקטע המחסנית ואת גודל המחסנית .STACK 100h בתכנית זו אנו לא משתמשים במחסנית אולם אנו נכלול הנחיה זו בתכניות שנכתוב, ובהמשך נרחיב על תפקיד המחסנית אופן השימוש וכיצד קובעים את גודלה. הנחיה מס. 3 מגדירה את תחילת מקטע נתונים .DATA הנחיה מס. 7 מציינת את תחילת מקטע קוד הוראות ולמעשה כך נקבע גם סיום מקטע נתונים .CODE

41 תיאור הנחיות אסמבלר הגדרת משתנים במקטע הנתונים: a DW 2 b DW 5
הנחיות מס. 4 עד מס. 6 מגדירות שלושה נתונים שיאוחסנו במקטע הנתונים: משתנה בשם a מטיפוס מילה מוגדר על ידי DW ומאותחל לערך 2. a DW 2 משתנה בשם b מטיפוס מילה מוגדר על ידי DW ומאותחל לערך 3. b DW 5 משתנה בשם sum מטיפוס מילה מוגדר על ידי DW ללא ערך תחילי מצוין ע"י התו '?'. sum DW ?

42 תיאור הנחיות אסמבלר הגדרת תכנית במקטע הקוד
שורה מס. 8 מתחילה בתווית המסתיימת בנקודתיים start: תווית היא שם לוגי לכתובת בזיכרון, והתווית start מציינת את תחילת קטע הוראות התכנית. שתי הוראות הביצוע הראשונות, רשומות בשורות 10 ו- 11 ותפקידן לאתחל את אוגר הסגמנט בכתובת הבסיס של מקטע הנתונים: 10. mov ; AX= כתובת בסיס של מקטע הנתונים mov ds, ax ; DS = AX הוראה מס. 10 מעבירה לאוגר AX את מען תחילת סגמנט הנתונים. מסמן למהדר (אסמבלר) את מען מקטע נתונים כפי שנקבע בזמן הרצת התכנית. בזמן הידור ערכו נקבע לאפס ורק בזמן הקישור הוא מקבל את כתובת של סגמנט הנתונים כפי שנקבע בטעינה של תכנית לזיכרון. הוראת מס. 11 היא הוראת השמה המעתיקה כתובת זו מאוגר AX אל אוגר סגמנט נתונים DS.

43 תיאור הנחיות אסמבלר הגדרת תכנית במקטע הקוד
שורות מס. 13 עד 15, הוראות בשפת סף המגדירות פעולת חיבור a + b והשמת התוצאה בזיכרון בתא שכתובתו הוא sum mov ax, a         ; ax = a add ax, b         ; ax = a + b mov    sum, AX       ; sum = ax סיום התכנית והחזרת בקרה למערכת ההפעלה שורות מס. 17 ומס. 18, אותן נרשום בכל תכנית, מאפשרות יציאה מסודרת מהרצה של תכנית והחזרת הבקרה למערכת הפעלה. 17. mov ax, 4C00h int 21h שורה מס. 19 היא הנחיה האחרונה בתכנית והיא מציינת לאסמבלר את סוף התכנית והמהדר לא יתייחס לכל ההוראות שיופיעו לאחר הנחיה 19. END start

44 תכנית בשפת סף - כללי קריאות:
שימוש בהערות, שורות רווח הזחה הנחיות אסמבלר אותיות גדולות הוראות בשפת סף אותיות קטנות שמות משתנים אותיות קטנות קו תחתון מפריד בין מילים my_var1 שמות פרוצדורות מתחיל באות גדולה לכל מילה: NewLine

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

46 הגדרת משתנים בשפת סף מבנה הגדרה של משתנה הכולל שלושה ארגומנטים:
var-name Data-type init-value ארגומנט ראשון הוא שם משתנה באורך עד 31 תווים, המתחיל באות ויכול להכיל אותיות, מספרים ותווים מיוחדים '$', '-', '?', '.'. ארגומנט שני מציין את טיפוס נתונים והוא מתחיל תמיד באות D, שמציינת קיצור של המילה Define , ולאחריו אות נוספת המציינת טיפוס מתוך חמישה טיפוסי נתונים אפשריים

47 הגדרת משתנים בשפת סף טיפוסי משתנים במעבד 8086: DB Byteמקצה בית אחד-
DW Word - מקצה 2 בתים DD Double word - מקצה 4 בתים DQ Quadra word - מקצה 8 בתים DT Tera Word - מקצה 10 בתים

48 הגדרת משתנים בשפת סף הארגומנט השלישי מציין ערך תחילי המושם במקום האחסון עם ההקצאה של הזיכרון. ניתן להגדיר משתנה ללא ערך תחילי על ידי הסימול '?'. לדוגמה נרשום שלוש הגדרות של משתנים:

49 נתונים שניתן לאחסן במשתנים
הערכים של נתונים שניתן לאחסן בזיכרון הם מספרים שלמים וקוד אסקיי המייצג תווים ומחרוזות, כולם בסופו של דבר מתורגמים בשפת מכונה למספרים בינאריים. גודל של תו בקוד אסקיי הוא בית אחד והוא מסומן ע"י גרשיים בודדים או כפולים: "a" או 'a' מספרים שלמים יכולים להיות מיוצגים בבסיסים: בינארי, עשרוני או הקסדצימאלי. סימול הבסיס נעשה על ידי הוספת תו בסוף המספר המציין את הבסיס. לדוגמה: b 0AD40h 98dאו שימו לב: במספרים המיוצגים בשיטה הקסדיצמאלית ומתחילים באחת האותיות A – F, יש להוסיף את הספרה 0 בתחילת המספר. כל עוד לא ציינו הנחיה מפורשת לשיטת ספירה, ברירת מחדל בתכניות היא שמספר ללא סימן מייצג תמיד מספר עשרוני.

50 נתונים שניתן לאחסן במשתנים
מעבד 8086 מאפשר שימוש במספרים שלמים ללא סימן ומספרים שלמים עם סימן המיוצגים בשיטת המשלים לשתיים. כך לדוגמה, במשתנה a מטיפוס בית a DB יאוחסן הערך 0F6h שהוא המשלים לשתיים של הערך -10. מעבד 8086 אינו מאפשר שימוש במספרים ממשיים. מעבדים מתקדמים ממשפחתx86 כוללים הוראות אסמבלי נוספות המאפשרות לבצע חישובים עם מספרים ממשיים..

51 סדר טעינת נתונים מטיפוס מילה לתאי זיכרון מטיפוס בית:
בית תחתון של המילה לכתובת נמוכה ובית עליון של המילה לכתובת גבוהה

52 .DATA var1 DB 10h var2 DB 00h var3 DW 1234h sum DB -1h var4 DW 51ABh

53 לראות מקטע נתונים .DS: View Dump


Download ppt "שפת סף וארכיטקטורה של מעבד 8086"

Similar presentations


Ads by Google