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

Slides:



Advertisements
Similar presentations
Programming 8086 – Part IV Stacks, Macros
Advertisements

Lecture By SHERY KHAN Assembly Language Lecture By SHERY KHAN
Chapter 2 (cont.) An Introduction to the 80x86 Microprocessor Family Objectives: The different addressing modes and instruction types available The usefulness.
Assembly Programming Notes for Practical2 Munaf Sheikh
Princess Sumaya Univ. Computer Engineering Dept. د. بســام كحـالــه Dr. Bassam Kahhaleh.
ICS312 Set 6 Operands. Basic Operand Types (1) Register Operands. An operand that refers to a register. MOV AX, BX ; moves contents of register BX to.
Video systems (continue). Practice Modify the program to get a string from a keyboard to display the input string on the middle of the screen with reverse.
Lect 3: Instruction Set and Addressing Modes. 386 Instruction Set (3.4) –Basic Instruction Set : 8086/8088 instruction set –Extended Instruction Set :
Handout 2 Digital System Engineering (EE-390)
Stack Memory H H FFFFF H FFFFE H SS 0105 SP 0008 TOS BOS BOS = FFFF = 1104F H H 1104F H.
The 8086 Assembly Programming Data Allocation & Addressing Modes
Lecture 2 Presented By Dr. Shazzad Hosain Asst. Prof. EECS, NSU.
Princess Sumaya University
1 Hardware and Software Architecture Chapter 2 n The Intel Processor Architecture n History of PC Memory Usage (Real Mode)
3-1 ECE 424 Design of Microprocessor-Based Systems Haibo Wang ECE Department Southern Illinois University Carbondale, IL Intel 8088 (8086) Microprocessor.
Administrative Overview 6 Projects Design Review: Monday before 6:30pm Lab Friend Center 010 (“Fishbowl”)
Lect 4: Instruction Set and Addressing Modes. 386 Instruction Set (3.4)  Basic Instruction Set : 8086/8088 instruction set  Extended Instruction Set.
1/2002JNM1 Positional Notation (Hex Digits). 1/2002JNM2 Problem The 8086 has a 20-bit address bus. Therefore, it can access 1,048,576 bytes of memory.
Microprocessor Microprocessor (cont..) It is a 16 bit μp has a 20 bit address bus can access upto 220 memory locations ( 1 MB). It can support.
(-133)*33+44* *33+44*14 Input device memory calculator Output device controller Control bus data bus memory.
Microprocessors used in Personal Computers. The Memory Map of a Personal Computers Transient Program Area (TPA): Holds the operating system (interrupt.
Intel 8086 (8088) Microprocessor Structure
University of Tehran 1 Microprocessor System Design Omid Fatemi Machine Language Programming
Review of Assembly language. Recalling main concepts.
University of Sargodha, Lahore Campus Prepared by Ali Saeed.
Internal Programming Architecture or Model
Computer Organization & Assembly Language University of Sargodha, Lahore Campus Prepared by Ali Saeed.
Microprocessors CSE- 341 Dr. Jia Uddin Assistant Professor, CSE, BRAC University Dr. Jia Uddin, CSE, BRAC University.
Computer Science 516 Intel x86 Overview. Intel x86 Family Eight-bit 8080, 8085 – 1970s 16-bit 8086 – was internally 16 bits, externally 8 bits.
ΜComputer Structure μProcessor Memory Bus System I/O Ports.
Chapter 2 Instruction Addressing and Execution. Lesson plan Review some concepts in the first week First assembly program with EMU8086 Related concepts.
Assembly language programming
Instruction set Architecture
Introduction to assembly programmıng language
Format of Assembly language
Presentation on Real Mode Memory Addressing
Assembly Language programming
Computer Organization & Assembly Language Chapter 3
ADDRESSING MODES.
Microprocessor Systems Design I
Microprocessor and Assembly Language
Assembly IA-32.
ADDRESSING MODES.
University of Gujrat Department of Computer Science
Intel 8088 (8086) Microprocessor Structure
1st micro 1971 calculator 2300 transistors 4-bit microprocessor
Morgan Kaufmann Publishers Computer Organization and Assembly Language
Defining Types of data expression Dn [name] expression Dn [name]
Symbolic Instruction and Addressing
Introduction to Assembly Language
Data Addressing Modes • MOV AX,BX; This instruction transfers the word contents of the source-register(BX) into the destination register(AX). • The source.
Programming 8086 – Part IV Stacks, Macros
ارايه دهنده : حسن عسكرزاده
Intel 8088 (8086) Microprocessor Structure
8086 Registers Module M14.2 Sections 9.2, 10.1.
CS-401 Computer Architecture & Assembly Language Programming
اصول اساسی برنامه نویسی به زبان اسمبلی
Morgan Kaufmann Publishers Computer Organization and Assembly Language
Symbolic Instruction and Addressing
(Array and Addressing Modes)
Symbolic Instruction and Addressing
(Array and Addressing Modes)
CNET 315 Microprocessor & Assembly Language
Lecture 06 Programming language.
Computer Architecture CST 250
Unit-I 80386DX Architecture
Chapter 6 –Symbolic Instruction and Addressing
Intel 8086.
Chapter 8: Instruction Set 8086 CPU Architecture
(Array and Addressing Modes)
Presentation transcript:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

מודל תכנותי של 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 שגויה!

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

דוגמה: תכנית המסכמת שני מספרים .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   דוגמה: תכנית המסכמת שני מספרים

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

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

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

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

תיאור הנחיות אסמבלר הגדרת תכנית במקטע הקוד שורות מס. 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

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

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

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

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

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

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

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

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

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

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