You are on page 1of 3

‫•‪ 2.0‬הקדמה וחזרה‬ ‫שיעור מס' ‪ 3‬המשך מאפיינים מעבד ‪4.11.

2015‬‬
‫מערכת מבוססת מיקרומחשב כוללת את שלושת המרכיבים הבאים‪:‬‬
‫‪ 2.0‬הקדמה וחזרה‬
‫• ‪ - (Microprocessor)- CPU‬יחידת עיבוד מרכזית )מעבד(‪.‬‬
‫•‬ ‫‪ 2.3.6‬מערכת הפקודות‬
‫• ‪ - Main Memory‬בו מאוחסנים פקודות ונתונים של התוכנית בזמן ביצוע‪.‬‬
‫‪ 2.3.7‬יחידת ביצוע ההוראות‬
‫• ‪ – Input/Output Devices‬התקנים ליצירת קשר בין המעבד לבין‬
‫המשתמש‪.‬‬ ‫‪ 2.3.8‬ארגון הזכרון‬
‫• ‪ - Address Bus‬מעביר כתובת גישה ממעבד לתאי זיכרון או להתקני‬ ‫‪ 2.3.9‬מרחב כתובות קלט פלט‬
‫קלט‪/‬פלט‬
‫• ‪.‬‬
‫‪ 2.3.10‬שיטות מיעון‬
‫• ‪ - Data Bus‬מעביר נתונים ‪.‬‬

‫• ‪ - Control Bus‬מעביר אותות בקרה לניהול גישה לזיכרון ו להתקני‬ ‫‪ 2.3.11‬ניהול פסיקות‬
‫קלט‪/‬פלט‬
‫• כל מסלול הוא למעשה אוסף של קווים המקשרים את ה‪ CPU -‬אל‬ ‫‪ 2.3.12‬הגדרת ההדקים של המעבד‬ ‫‪1‬‬
‫מרכיבי המערכת‪ .‬כל מרכיבי המערכת מחוברים אל ה‪ CPU -‬במקביל‬

‫דירוג של שפות תכנות‬


‫שפות תכנות מדורגות בשלוש רמות‪:‬‬ ‫‪AX 16 bit‬‬ ‫‪AH 8 bit‬‬ ‫‪AL 8 bit Accumulator‬‬
‫• ‪ – High level language‬שפת ‪Visual C ,Visual Basic , C#‬‬ ‫‪BX 16 bit‬‬ ‫‪BH 8 bit‬‬ ‫‪BL 8 bit Base Register‬‬
‫‪CX 16 bit‬‬ ‫‪CH 8 bit‬‬ ‫‪CL 8 bit‬‬ ‫‪Count Register‬‬
‫השפות האלו לא מתייחסות למבנה פנימי של המעבד אלא להיגיון של‬
‫‪DX 16 bit‬‬ ‫‪DH 8 bit‬‬ ‫‪DL 8 bit Data Register‬‬
‫המשימה בגדול‪.‬‬ ‫‪ES 16 bit‬‬ ‫‪Extra Segment‬‬
‫‪SP 16 bit Stack Pointer‬‬ ‫‪CS 16 bit‬‬ ‫‪Code Segment‬‬
‫• ‪Assembly Language - Low level language‬‬ ‫‪BP 16 bit Base Pointer‬‬ ‫‪SS 16 bit‬‬ ‫‪Stack Segment‬‬
‫השפה זו מתייחסת למבנה פנימי של המעבד ומפרטת למעבד את כל‬ ‫‪SI 16 bit Source Index Register‬‬
‫‪DS 16 bit‬‬ ‫‪Data Segment‬‬
‫‪DI 16 bit Destination Index Register‬‬
‫שלבי ביצוע של המשימה בהתאם לאוסף פקודות של שפת אסמבלי‬ ‫‪IP 16 bit‬‬ ‫‪Instruction Pointer‬‬
‫שמוכר למעבד הזה‪.‬‬ ‫‪FLAGS 16 bit‬‬

‫• ‪ – Machine language‬שפת מכונה‬ ‫‪3‬‬


‫‪BIU registers‬‬
‫בשפה זאת התוכנית מקודדת למספרים בקוד בינארי וישר מוכנה לביצוע‬ ‫‪(for 20 bit address‬‬
‫ע"י המעבד‪ .‬כל פקודה של שפת אסמבלי מתורגמת ע"י קומפיילר לפקודה‬ ‫‪EU‬‬ ‫)‪generation‬‬
‫בשפת מכובה וכוללת את השדות‪:‬‬ ‫‪registers‬‬
‫‪16 bit‬‬
‫קידוד של פקודה עצמה שניקרא ‪Operation Code – OPCODE‬‬ ‫‪arithmetic‬‬
‫ומשתנים ) ‪ ( OPERANDS‬כלפיהם מתבצעת את הפקודה‬

‫• כל תוכנית שכתובה בשפה עלית או בשפת אסמבלי חייבת לעבור תרגום‬


‫לשפת מכונה‪.‬‬

‫‪ 2.3.6‬מערכת הפקודות‬ ‫תרגום לשפת מכונה של המעבד ‪8086‬‬


‫‪ .0‬הנחיות של שפת אסמבלי – ‪ Directives‬הן לא פקודות לביצוע ע"י‬ ‫‪High-level‬‬ ‫‪Assembly‬‬ ‫‪Machine‬‬
‫המעבד אלא קובעות לקומפיילר איך לתרגם את התוכנית ואיך לארגן את‬ ‫‪language‬‬ ‫‪Compiler‬‬ ‫‪language‬‬ ‫‪Assembler‬‬ ‫‪language‬‬
‫הזיכרון‬ ‫‪program‬‬ ‫‪program‬‬ ‫‪program‬‬
‫‪DB | DW | DD‬‬ ‫‪.1‬פקודות להגדרת נתונים‬
‫‪.2‬פקודות להגדרת קבועים ‪name EQU expression Constants‬‬ ‫• תרגום משפת אסמבלי ‪ ASM86‬לשפת מכונה של המעבד ‪8086‬‬
‫‪XCHG‬‬ ‫‪.3‬פקודת החלפה‬ ‫מתבצעת בשני שלבים ‪:‬‬
‫][‬ ‫‪.4‬פקודה גישה לזכרון‬
‫‪Push,Pop‬‬ ‫‪.5‬פקודות גישה למחסנית –‬ ‫‪ TASM Compiler‬עם יצירת קובץ ‪Listing‬‬ ‫‪.1‬תרגום עצמו ע"י‬
‫לזיהוי טעויות‬
‫‪IN, OUT‬‬ ‫‪.6‬פקודות קלט פלט‬
‫‪.2‬וקישור בין חלקי התוכנית ע"י ‪TASM Linker - TLINK‬‬
‫‪ADD, SUB‬‬ ‫‪.7‬פקודות מתמטיות – חיבור חיסור )כפל וחילוק(‬
‫‪JMP‬‬ ‫‪.8‬פקודות קפיצה‬
‫‪JNZ‬‬ ‫‪.9‬פקודות קפיצה עם תנאי‬
‫• ‪TASM/l My_Prog.ASM  My_Prog.OBJ , My_Prog.LST‬‬
‫‪CALL‬‬ ‫‪.10‬קריאה לתת‪-‬שיגרה‬
‫• ‪TLINK My_Prog.OBJ  My_Prog.EXE‬‬
‫‪AND , OR‬‬ ‫‪.11‬פונקציות לוגיות‬
‫‪SHIFT‬‬ ‫‪.12‬פונקציות הזזה‬
‫‪My_Prog.EXE – Executable File‬‬
‫‪MOVES‬‬ ‫‪.13‬פעולות על מחרוזת‬
‫‪INT‬‬ ‫‪.14‬פקודות פסיקה‬

‫‪1‬‬
‫מבחינה אחת לפחות‪ ,‬המיקרופרוססור הוא מכונה פשוטה מאוד‪ .‬הוא חוזר כל‬ ‫הבאת פקודה לביצוע מהזיכרון אל ה‪CPU Opcode Fetch Cycle -‬‬
‫הזמן על הרצף‪.1:‬הבא את ההוראה הבאה מהזיכרון‪Fetch -‬‬ ‫‪IP‬‬
‫‪ .2‬בצע את ההוראה – ‪.3 Execution‬לך לשלב ‪.1‬‬ ‫‪Address=N‬‬
‫‪Address Bus‬‬
‫ארבע שלבי ביצוע הפקודה‬
‫• ‪ Instruction Fetch‬הבאת ‪ Opcode‬של הפקודה לביצוע מזיכרון ראשי‬ ‫‪Opcode‬‬
‫אל ה‪. CPU -‬‬ ‫‪Data Bus‬‬
‫‪Instruction‬‬
‫• ‪ Instruction decode‬פענוח הפקודה) ‪ (Opcode‬שנמצאת באוגר ‪ IP‬ע"י‬ ‫‪Register‬‬
‫החומרה‬
‫‪Clk Control Bus‬‬
‫• ‪ Execution‬ביצוע הפקודה )עיבוד אריתמטי ‪ ,‬אחסון זמני (‬ ‫‪Opcode N‬‬

‫• ‪ Write back‬כתיבת התוצאות העיבוד חזרה לזיכרון הראשי‬ ‫‪Rd‬‬


‫‪CPU‬‬ ‫‪Main Memory‬‬
‫בסה"כ קיימות חמש פעולות שונות או חמישה מחזורי פס אפשריים‪:‬‬
‫• כל משימה שהמערכת צריכה לבצע ‪ ,‬כתובה כתוכנית בשפת תכנות‬
‫‪.1‬קריאה מהזיכרון‪.‬‬ ‫כלשהי‪ ,‬מתורגמת לשפת מכונה ע"י קומפיילר ומאוחסנת בזיכרון כאוסף‬
‫‪ .2‬כתיבה לזיכרון‪.‬‬ ‫נתונים בינאריים בסדר מסוים) ‪.(Set of Operation Codes - OpCodes‬‬
‫‪ .3‬קריאה מקלט‪/‬פלט‪.‬‬ ‫• ה‪ CPU -‬פונה לאזור בזיכרון הראשי עליו מצביע ה‪ IP -‬מביא את ה‪-‬‬
‫‪ .4‬כתיבה לקלט‪/‬פלט‪.‬‬ ‫‪ Opcode‬של הפקודה הנוכחית מזיכרון אל ה‪ ,CPU-‬מפענח אותה ומבצע‬
‫‪ .5‬סרק )פעולה פנימית שאינה דורשת גישה לזיכרון או למיפתח‬ ‫את הפקודה‪.‬שוב פונה לזיכרון להבאת הפקודה הבאה מפענח ומבצע וכך‬
‫קלט‪/‬פלט(‪.‬‬ ‫עד סוף התוכנית‪.‬‬

‫‪ 2.3.8‬ארגון הזכרון‬ ‫‪ 2.3.7‬יחידת ביצוע ההוראות‬


‫• כל תוכנית באופן קבוע מאוחסנת בזיכרון משני )דיסקט‪ ,‬דיסק קשיח‪CD- ,‬‬
‫‪.( ROM‬בהזמנת תוכנית לביצוע מערכת הפעלה מעתיקה את התוכנית‬
‫‪,‬שהוזמנה בשמה ‪ ,‬מזיכרון משני לזיכרון ראשי ומשם התוכנית ניתנת‬
‫לגישה מצד המעבד‪.‬זיכרון ראשי של המעבד ‪ 8086‬ניתן לגישה ע"י פס‬
‫כתובות בעל ‪ 20‬סיביות וכולל ‪ 2^20 = 1 Mbyte‬תאים ברוחב ‪ 8‬סיביות כל‬
‫תא אחד‪.‬האוגרים הפנימיים של המעבד ‪ 8086‬בעלי רוחב ‪ 16‬סיביות‬
‫ובעזרת אוגר אחד אי‪-‬אפשר לבנות כתובת גישה לזיכרון בעלת ‪ 20‬סיביות‬
‫רוחב‪.‬בגלל זה הזיכרון הראשי מחולק למקטעים כך שכל תוכנית ‪,‬שרצה‬
‫במעבד ‪ ,‬מקבלת מספר מוגבל של המקטעים )עד ‪ 4‬מקטעים( בהם‬
‫מאוחסנים‪:‬‬
‫•‬
‫התוכנה – ב‪ ,Code Segment -‬נתונים ‪-‬ב‪Data Segment or Extra -‬‬
‫מחסנית – ב‪. Stack Segment -‬‬ ‫‪, Segment‬‬

‫• מערכת הפעלה מנהלת את הזיכרון וממקמת את כל התוכניות שעולות‬


‫לביצוע בסגמנטים משלהם וטוענת את אוגרי המקטעים ) ‪CS, DS, SS,‬‬
‫‪ ( ES‬בהתאם‪.‬‬
‫• כל תוכנית שרצה יכולה להשתמש אך ורק בתאי הזיכרון שבתוך המקטעים‬
‫ולגשת אליהם ע"י אוגרי הצבעה פנימיים של המעבד ) בעלי ‪ 16‬סיביות‬
‫בלבד( הגודל המכסימלי של המקטע – ‪2^16 = 64 KBytes‬‬ ‫‪9‬‬

‫אופן גישה לזיכרון ע"י שילוב אוגר מקטע ואוגר הצבעה‬ ‫חלוקת זיכרון למקטעים‬
‫• כתובת מלאה של התא בזיכרון הראשי נקראת כתובת פיזית וכוללת ‪20‬‬
‫סיביות הכתובת הזאת נבנה ע"י זוג אוגרים ‪ :‬אוגר מקטע ואוגר הצבעה‬ ‫‪MEMMORY‬‬ ‫‪Address‬‬
‫‪,‬שכל אחד מהם בעל ‪ 16‬סיביות ‪ 16‬סיביות עליונות של כתובת התחלתית‬ ‫‪DI‬‬
‫‪64K Extra Seg‬‬ ‫‪FFFFF‬‬
‫של המקטע נטענת לאוגר מקטע ע"י מערכת הפעלה ונקראת כתובת‬ ‫‪Segment Registers‬‬
‫‪ES:0‬‬
‫התחלתית של המקטע‪ CPU .‬מצביע לתוך המקטעים ע"י אוגרי הצבעה‬
‫וכתובת זאת )בתוך המקטע( בעלת ‪ 16‬סיביות נקראת כתובת יחסית )‬ ‫‪EXTRA‬‬ ‫‪SI, BX‬‬ ‫‪64K DataSegment‬‬
‫‪ ( Offset‬או כתובת אפקטיבית ) ‪( Effective Address‬‬
‫• כדי לבנות כתובת פיזית בעלת ‪ 20‬סיביות משני האוגרים‪ ,‬ה‪ CPU-‬טוען‬ ‫‪DATA‬‬ ‫‪DS:0‬‬
‫תוכן של אוגר המקטע לאוגר הזזה‪ ,‬מזיז אותה בארבע סיביות כלפי שמאל‪,‬‬ ‫‪SP‬‬ ‫‪64K Stack Segment‬‬
‫מחבר אליו תוכן של אוגר ההצבעה ומפיק את תוצאת החיבור לפס כתובות‬ ‫‪STACK‬‬
‫של המערכת‬ ‫‪SS:0‬‬
‫• ה‪, CPU -‬באופן ברירת מחדל ‪ ,‬משייך את אוגרי ההצבעה למקטעים‬ ‫‪CODE‬‬
‫באופן הבא‪:‬אוגר ‪IP (Instruction Pointer ) or PC ( Program‬‬ ‫‪IP‬‬ ‫‪64K Code Segment‬‬
‫)‪ Counter‬מצביע לתוך ‪CS:IP : Code Segment‬‬
‫– אוגרים ‪ BX,DI,SI‬מצביעים לתוך ‪DS:SI, : Data Segment‬‬ ‫‪CS:0‬‬
‫‪DS:DI, DS:BX‬‬
‫– אוגרים ‪ BP,SP‬מצביעים לתוך ‪SS:SP, : Stack Segment‬‬
‫‪SS:BP‬‬
‫– אין ברירת מחדל ל‪ - Extra Segment -‬משתמשים במקטע זה רק‬ ‫‪00000‬‬
‫לפעולות עם מחרוזות – ‪String Operations‬‬

‫‪2‬‬
‫‪ 2.3.10‬שיטות מיעון‬ ‫•‪ 2.3.9‬מרחב כתובות קלט פלט‬
‫‪.1‬מיעון אוגר ‪MOV DX,AX‬‬
‫‪.2‬מיעון מיידי מיידי ; ‪ MOV DX,20‬אופרנט המקור הוא מספר‬ ‫•רוחב פס כתובות כלפי התקני קלט‪/‬פלט ‪ 16 -‬סיביות ‪ ,‬זאת אומרת שהוא‬
‫‪.3‬מיעון ישיר ישיר ‪; TWENTY DW 20h‬גישה לנתון לפי כתובתו‬ ‫יכול להתחבר למספר התקנים‪;216 = 64535 Devices :‬‬
‫‪; DX 0020h MOV DX,TWENTY‬‬
‫‪.4‬מיעון עקיף ‪ ; MOV DX,[SI]-‬גישה לנתון בעזרת אוגר הצבעה‬
‫ערך באוגר הצבעה זהו הכתובת יחסית של התא במקטע בזיכרון הראשי‬ ‫•כמות זו של כתובות עולה בהרבה על הנדרש ברוב המחשבים‪ ,‬ולכן רק לחלק‬
‫סוגריים מרובעות ] [ מסמנות מעון עקיף‬ ‫קטן מכתובות אלו מחוברים התקני קלט‪/‬פלט‬
‫בברירת מחדל האוגרים ‪ BX, DI, SI‬מצביעים לתוך ה‪Data Segment -‬‬
‫בזוג עם האוגר ‪DS‬‬
‫בברירת מחדל האוגר ‪ BP‬מצביע לתוך ה‪ Stack Segment -‬בזוג עם‬
‫האוגר ‪SS‬‬
‫אפשר לשנות את ברירת המחדל ע"י כתיבת זוג בפקודה ‪ES:BX; SS:SI‬‬
‫]‪MOV DX,[SS: SI‬‬

‫דוגמה של תוכנית פשוטה בשפת אסמבלי ‪ :‬מילוי זיכרון בנתון ”‪“A‬‬ ‫• תנאים )חלק(‬
‫‪•Sseg SEGMENT STACK‬‬ ‫‪; Open the Stack Segment‬‬ ‫שני אופרנטים חייבים להיות באותו גודל‬ ‫•‬
‫‪DW 50‬‬ ‫)?( ‪DUP‬‬ ‫‪; The Stack Size Is 50 Words‬‬ ‫אופרנט המקור יכול להיות ‪:‬אוגר‪ ,‬תא בזיכרון או קבוע )מספר(‬ ‫•‬
‫‪SSeg ENDS‬‬ ‫‪; Close the Stack Segment‬‬
‫‪DSeg SEGMENT‬‬ ‫‪; Open the Data Segment‬‬
‫אופרנט המקור יכול להיות ‪:‬אוגר או תא בזיכרון‬ ‫•‬
‫‪block‬‬ ‫‪DB‬‬ ‫‪100‬‬ ‫‪DUP (0); Block for Filling‬‬ ‫אי‪-‬אפשר להעביר נתון מתא בזיכרון לתא בזיכרון באופן ישיר‬ ‫•‬
‫‪bl_length‬‬ ‫‪DW‬‬ ‫‪50 ; Number of Data for Filling‬‬
‫‪DSeg ENDS‬‬ ‫‪; Close the Data Segment‬‬
‫‪CSeg SEGMENT‬‬ ‫‪; Open the Code Segment‬‬ ‫• דוגמאות נכונות ולא‪..‬‬
‫‪ASSUME‬‬ ‫‪CS: CSeg, DS: DSeg,SS:SSeg‬‬ ‫‪Data,67h‬‬ ‫‪MOV‬‬ ‫•‬
‫‪main:‬‬ ‫‪MOV‬‬ ‫‪AX, DSeg‬‬
‫‪MOV‬‬ ‫‪DS,AX‬‬ ‫]‪AX, [BX‬‬ ‫‪MOV‬‬ ‫•‬
‫‪MOV‬‬ ‫‪DI, OFFSET block‬‬ ‫‪BX,CS:Data+4‬‬ ‫‪MOV‬‬ ‫•‬
‫‪MOV‬‬ ‫’‪AL,’A‬‬
‫‪MOV‬‬ ‫‪CX, bl_length‬‬
‫]‪AX,[SS:SI‬‬ ‫‪MOV‬‬ ‫•‬
‫‪next:‬‬ ‫‪MOV‬‬ ‫‪[DI],AL‬‬ ‫]‪AX, [BX+SI+7‬‬ ‫‪MOV‬‬ ‫•‬
‫‪INC‬‬ ‫‪DI‬‬ ‫]‪AX,[BP+SI+2‬‬ ‫‪MOV‬‬ ‫•‬
‫‪LOOP next‬‬
‫‪INT 3‬‬ ‫‪AX,BL – Impossible‬‬ ‫‪MOV‬‬ ‫•‬
‫‪CSeg ENDS‬‬ ‫‪; Close the Code Segment‬‬ ‫‪Data1, Data2 – Impossible‬‬ ‫‪MOV‬‬ ‫•‬
‫‪END‬‬ ‫‪main‬‬ ‫‪; End the Program Code‬‬

‫•‪ 2.3.12‬הגדרת ההדקים של המעבד‬ ‫•‪ 2.3.11‬ניהול פסיקות‬


‫•פסיקה ‪ -Interrupt‬אות המתקבל במעבד מרכיב חומרה או תוכנה ומאפשר‬
‫לשנות את סדר ביצוע הפקודות בתוכנית מחשב שלא על ידי בקרה מותנית‪.‬‬
‫בעת קבלת הפסיקה משהה המחשב את ביצועה הסדרתי של התוכנית‪ ,‬כדי‬
‫להפעיל שגרת טיפול בפסיקה‪ .‬לאחר הטיפול‪ ,‬ממשיך המחשב בביצוע‬
‫הסדרתי של התוכנית‪ .‬פסיקות משמשות כאמצעי תקשורת בין תהליכים‬
‫במחשב ופסיקות תוכנה נמצאות בשימוש נרחב במחשבים הפועלים בריבוי‬
‫משימות‪.‬‬

‫•יש ‪ 3‬סוגי פסיקות‬


‫–‪System Interrupt‬‬ ‫•‪ .1‬פסיקות מערכת למשל חלוקה באפס‬

‫•‪ .2‬פסיקות תוכנה )‪Software Interrupts (INT <n> -BIOS,DOS‬‬

‫‪Hardware‬‬ ‫•‪.3‬פסיקות חומרה למשל בקשות שמגיעות ממקור חיצוני לרגלי המעבד‬
‫‪ Interrupt‬הן אמצעי המאפשר להתקנים חיצוניים )למשל מקלדת‪ ,‬מסך‪ ,‬דיסק‬
‫קשיח( לקבל ולתת שירותים למעבד‪.‬‬

‫‪3‬‬

You might also like