| המועמדים צריכים להיות מסוגלים: | הערות והנחיות |
|---|---|
| הצג הבנה של המודל הבסיסי של ון ניימן למערכת מחשב ומתוך המושג התוכנית מאחסנת | |
| הצג הבנה של התפקיד והתפקודים של רישומיות, כולל ההבדל בין רישומיות רב-שימושיות לבין רישומיות ייעודיות | רישומיות ייעודיות כוללות: • נגד ספן תוכנית (PC) • נגד נתוני זיכרון (MDR) • נגד כתובות זיכרון (MAR) • צובר (ACC) • נגד אינדקס (IX) • נגד הוראה נוכחית (CIR) • נגד מצבים |
| הצג הבנה של התפקידים של יחידת האריתמטיקה הלוגיקה (ALU), יחידת בקרה (CU), שעון המערכת ו-אחסון גישה מיידית (IAS) | |
| הצג הבנה כיצד נתונים מועברים בין רכיבים שונים במערכת המחשב באמצעות נתיב כתובות, נתיב נתונים ונתיב בקרה | |
| הצג הבנה כיצד גורמים תורמים לביצועי מערכת המחשב | כולל: • סוג מעבד ומספר ליבות • רוחב הנתיב • מהירות שעון • זיכרון קש |
| הבן כיצד פורטים שונים מספקים חיבור למכשירים חיצוניים | כולל חיבור ל: • BUS סדרתי אוניברסלי (USB) • ממשק הרמולטי HD (HDMI) • מערך גרפי וידאו (VGA) |
| תאר את שלבי מחזור משיכה-ביצוע (F-E) | תאר ושתמש בסימון העברת רישומיות כדי לתאר את מחזור F-E |
| הצג הבנה של התפקיד של הפרעות | כולל: • סיבות אפשריות להפרעות • יישומים של הפרעות • שימוש בשגרת שירות הפרעות (ISR) • מתי הפרעות מזוהות במהלך מחזור משיכה-ביצוע • כיצד הפרעות מטופלות |
יסודות מעבד
מדעי המחשב A-Level · נושא 4
21:32
ארכיטקטורת פון נוימן
ברוב ההיסטוריה, מכונה הייתה מבצעת משימה אחת. ארגז אריג רק בד. מחשבון חיבר. כדי להניע אותה לבצע דבר חדש, בנית אותה מחדש. אז הגיעה… פשוטה במראה אך מטעה
קריאת קול באנגלית · תרגום אנגלי + סינית שרוף בתוך הסרטון
4.1
ארכיטקטורת von Neumann
סיילבוס
מקור: הסיילבוס הבינלאומי של קמבריד'ג'
ה-ארכיטקטורת von Neumann היא הבסיס לכל מחשב רב-שימושי:
- זיכרון אחד — זיכרון הגישה המיידי (IAS) — מאחסן גם הוראות תוכנה וגם נתונים (עקרון התוכנית הארוזה).
- מעבד (CPU) מוצא הוראות מהזיכרון ומבצע אותן אחת אחת.
- ההוראות מתבצעות ברצף, אלא אם כן שינוי בענף (branch) משנה את זרימת התוכנית.
רעיון התוכנית הארוזה הוא מה שהופך את המחשב לגמיש: שינוי התוכנית משנה את פעולתו, מבלי צורך בחיווט מחדש.
לחץ על חלקי מחשב וון ניימן
חקור כל בלוק. ה-CPU (יחידת בקרה, ALU, רגיסטרים) מתקשר עם זיכרון ראשי אחד דרך השדרות — והזיכרון המשותף הזה להוראות AND לנתונים הוא הרעיון של וון ניימן.
4.1
חלקי המעבד הראשיים
כל החלקים הללו ממוקמים בתוך שבב קטן אחד. התרשים בהמשך הסרטון מראה כיצד הם מחוברים; התמונה למטה מציגה את המוצר בפועל.


יחידה אריתמטית ולוגית (ALU)
ה-ALU מבצעת פעולות אריתמטיות (חיבור, חיסור, …) ולוגיות (AND, OR, השוואות). היא לוקחת אופרנדים מ-רישומים ומחזירה תוצאות אל רישום.
יחידת בקרה (CU)
ה-יחידת הבקרה פענחת כל הוראה ושולחת את ** אותות הבקרה** כדי לבצע אותה — פתיחת מסלולי נתונים, הנחיה ל-ALU לגבי ביצוע הפעולה, ובקרה לקריאות וכתובות בזיכרון.
שעון המערכת
השעון שולח זרם מתמשך של פעימות שמסדרות את קצב העבודה של המעבד. כל הוראה לוקחת מספר קבוע של מחזוריים, וה-מהירות השעון (למשל 3.8 GHz) היא גורם אחד בביצועים.
"הסבר כיצד יחידת הבקרה והשעון המערכת עובדים יחד": השעון משדר פעימות בתדר קבוע; יחידת הבקרה משתמשת בכל פעימה כדי להזיז את מחזור ההוראה-ביצוע צעד אחד קדימה, ושולחת את אותות הבקרה שלה בזמן עם הפעימות, כך שכל חלק במעבד משנה מצב בו-זמנית. שעון מהיר יותר מאפשר יותר צעדים בשנייה, עד לנקודה שבה המעגלים אינם מספיקים להתייצב בין הפעימות.
רישומים
רישומים הם אחסונות קטנים ומהירים מאוד בתוך המעבד. ל-רישומים בעלי שימוש ספציפי יש משימה קבועה במחזור:
- ונהל תוכנית (PC) — הכתובת של ההוראה הבאה.
- נהל כתובות זיכרון (MAR) — הכתובת שנקראת או נכתבת.
- נהל נתוני זיכרון (MDR) — הנתונים הנשלחים לזיכרון או מגיעים ממנו.
- נהל הוראה נוכחית (CIR) — ההוראה הנפענחת כרגע.
- צובר (ACC) — הערך שעליו עובדת כרגע ה-ALU.
- נהל מצבים — מחזיק דגלים (נשיאה, אפס, שלילי, גלישה) המשמשים לערמוזיות. כל דגל הוא ביט אחד, המוגדר או מבוטל על ידי ה-ALU לאחר פעולה: דגל האפס לאחר השוואה שהתאימה, דגל הנשיאה כאשר חיבור גרם לגלישה מהרישום, דגל השליליות כאשר התוצאה שלילית. ערמוזיה מותנית קוראת את הדגלים כדי להחליט אם לערום, ודגל הגלישה יכול לגרום להפרעה (interrupt).
- נהל אינדקס — הסטייה המוספת לכתובת באמצעות כתובת אינדקס; העלאת הערך שלו מאפשרת מעבר דרך מערך אלמנט אחד באחד.
השאלה "השלם את הטבלה המתארת את תפקודם של כל הרישומים" דורשת משפט מדויק אחד לכל רישום במונחים אלו: ה-PC מחזיק את כתובת ההוראה הבאה שיישאף; ה-MAR מחזיק את כתובת המקום שנקרא ממנו או נכתב אליו; ה-MDR מחזיק את הנתון או ההוראה שנשאופו מהמקום או עומדים להיכתב אליו; ה-CIR מחזיק את ההוראה הנפענחת והמבוצעת כרגע; ה-ACC מחזיק את תוצאת הפעולה האריתמטית או הלוגית האחרונה.
רישומים כלליים משמשים את המפתח עבור ערכים זמניים במהלך חישוב. הזזות נתונים בין רישומים לזיכרון נכתבות בסימון העברת רישומים — למשל MAR ← [PC] ("העתק תוכן ה-PC לתוך ה-MAR").

| English | עברית |
|---|---|
| Von Neumann architecture/vɒn ˈnɔɪmən ˈɑːkɪtektʃə/ | ארכיטקטורת וון ניימן |
| Immediate Access Store/ɪˈmiːdɪət ˈækses stɔː/ | זיכרון גישה מיידית |
| stored program/stɔːd ˈprəʊɡræm/ | תוכנית מאוחסת |
| processor/ˈprəʊsesə/ | מעבד |
| arithmetic and logic unit/ˌærɪθˈmetɪk ənd ˈlɒdʒɪk ˈjuːnɪt/ | יחידת אריתמטיקה ולוגיקה |
| ALU/ˌeɪ el ˈjuː/ | יחידת אריתמטיקה ולוגיקה (ALU) |
| interrupt/ˈɪntərʌpt/ | הפרעה |
4.1
בוסים
שלושה בוסים פנימיים (סדרות של חוטים מקבילים) מחברים את החלקים:
- בוס כתובות — מעביר את כתובת הזיכרון. חד-כיווני (CPU → זיכרון).
- בוס נתונים — מעביר את הנתונים. דו-כיווני.
- בוס בקרה — מעביר אותות בקרה (קריאה, כתיבה, הפסקה). דו-כיווני.
בוס כתובות בעל $n$ ביט יכול לגשת ל-$2^{n}$ מיקומי זיכרון. רוחב בוס הנתונים קובע כמה ביטים עוברים בכל גישה (לרוב זהו גודל המילה).


| English | עברית |
|---|---|
| buses/ˈbʌsɪz/ | אוטובוסים |
| address bus/əˈdres bʌs/ | נתיב כתובות |
| data bus/ˈdeɪtə bʌs/ | נתיב נתונים |
| word size/wɜːd saɪz/ | גודל מילה |
| number of cores/ˈnʌmbə ɒv kɔːz/ | מספר ליבות |
| cores/kɔːz/ | ליבות |
| amount of RAM/əˈmaʊnt ɒv ræm/ | כמות זיכרון RAM |
4.1
מה משפיע על הביצועים
- מהירות שעון — יותר מחזוריים לשנייה.
- מספר ליבות — מעבד רב-ליבה מבצע מספר תהליכים בו-זמנית.
- גודל מילה — מעבד 64-ביט מטפל בבלוקים בגודל 64 ביט לכל מחזור ומסוגל לגשת לכמות זיכרון גדולה בהרבה מאשר מעבד 32-ביט.
- כמות RAM — יותר RAM מאפשר אחסון של יותר מתוך ערכת העבודה; כמות קטנה מדי מחייבת למערכת ההפעלה להשתמש ב-pageing (חילוף דף) לדיסק.
- גודל זיכרון Cache — יותר Cache מקצרת את זמן הגישה הממוצע לזיכרון.
- סוג אחסון משני — SSD טוען תוכניות הרבה מהר יותר מאשר HDD.
- רוחב ומהירות בוס — בוסים רחבים/מהירים מעבירים נתונים מהר יותר.
התאמת המפרטים לעומס עבודה: מעבד ארבע-ליבה עולה על מעבד דו-ליבה במשימות מקבילות, אך מהירות גבוהה יותר לליבה בודדת מנצחת במשימות חד-תהליך.
כל גורם הוא תשובה בעלת שני נקודות עם סיבה מצורפת:
- ליבות יותר: כל ליבה יכולה למשוך ולבצע את ההוראה שלה בו-זמנית, כך שמספר תוכניות או חוטים של תוכנית אחת פועלים במקביל. אולם על התוכנית להיות מופרדת לשימוש ביותר מליבה אחת, ולכן הכפלת הליבות אינה מכפילה את המהירות.
- מהירות שעון גבוהה: מספר רב יותר של מחזורי משיכה-ביצוע בשנייה, ולכן הוראות רבות יותר לשנייה; הגבול נקבע על ידי החום הנפלט.
- נתיב נתונים רחב: נתיב נתונים רחב מעביר יותר ביטים בכל העברה, ולכן נדרשות פחות העברות לאותו כמות נתונים; נתיב כתובות רחב יכול לתת כתובות ליותר מקומות זיכרון.
- זיכרון קש (Cache): זיכרון קטן ומהיר בתוך המעבד או לצידו, המשמר את ההוראות והנתונים שנשתמשו בהם לאחרונה או ביותר תדירות. קריאתם מהקש היא הרבה מהירה יותר מאשר מהRAM, ולכן המעבד מבזבז פחות זמן בחכויות.
"הסבר מדוע המחשב החדש ביצועיו טובים יותר" עונה על ידי השוואת שתי המפרטים שורה מול שורה: מהירות שעון גבוהה מבצעת הוראות רבות יותר לשנייה, ליבות יותר מבצעות משימות רבות יותר בו-זמנית, קש גדול יותר מפחית גישות איטיות ל-RAM, ו-RAM גדול יותר מפחית העברות לכונן.
| English | עברית |
|---|---|
| RAM/ræm/ | RAM |
| page/peɪdʒ/ | דף |
| cache memory/kæʃ ˈmeməri/ | זיכרון cache |
| cache/kæʃ/ | מטמון |
| secondary storage/ˈsekəndəri ˈstɔːrɪdʒ/ | אחסון משני |
| port/pɔːt/ | יציאה |
| peripheral/pəˈrɪfərəl/ | התקן סביבתי |
| register transfer notation/ˈredʒɪstə ˈtrænsfɜː nəʊˈteɪʃn/ | סימוני העברת רשמים |
| interrupt service routine/ˈɪntərʌpt ˈsɜːvɪs ruːˈtiːn/ | שגרת שירות הפסקה |
| interrupt register/ˈɪntərʌpt ˈredʒɪstə/ | רישום הפסקה |
4.1
יציאות
יציאה היא שקע פיזיקלי לחיבור מכשיר היקפי:
- USB (Universal Serial Bus) — רב-שימושי (מקלדי קלדים, כוננים, טלפונים).
- HDMI (High Definition Multimedia Interface) — וידאו ואודיו דיגיטליים למסך.
- VGA (Video Graphics Array) — יציאת וידאו אנלוגית ישנה למסך.
- Ethernet (RJ-45) — LAN חוטי. שקעי אודיו — אוזניות/מיקרופון.
יציאות שונות משתמשות באותות שונים, ולכן כבל HDMI לא יתאים לשקע USB. USB-C יוצא דופן בכך שהוא מעביר וידאו, נתונים וחשמל.
"הסבר כיצד המחשב מתחבר למסך דרך HDMI": יציאת HDMI שולחת וידאו ואודיו כאות דיגיטלי אחד דרך כבל יחיד, ולכן אין צורך בהמרה לאנלוגי והתמונה אינה מתדרדרת; הכבל נושא רזולוציות HD והיציאה במסך עצמה פוענחת את האות. מכשיר USB הוא חיבור והפעלה (Plug-and-play): כאשר הוא מחובר, המחשב מזהה אותו, מזיהה אותו, מטעין או מתקין את הדרייבר הנדרש לו, ומספק לו חשמל, הכל ללא הצרכה מחדש.
4.1
מחזור משיכה-ביצוע
מעבד הביצועים (CPU) חוזר על מחזור המשיכה-ביצוע, פעם אחת לכל הוראת מכונה.
משיכה
- כתובת ה-PC מועתקת ל-MAR.
- ה-PC מוגדל כדי להצביע על ההוראה הבאה.
- אות קריאה עובר על נתיב הבקרה.
- הזיכרון מניח את ההוראה על בוס הנתונים.
- היא מועתקת ל-MDR, ולאחר מכן ל-CIR.
המבחן דורש שלבים אלו בסימוך העברת רשמים, כאשר [X] מייצג תוכן של רשם X ו-stereofon [[MAR]] מייצג תוכן של מיקום בזיכרון שכתובתו נמצאת ב-MAR:
MAR ← [PC] the address of the next instruction goes to the MAR
PC ← [PC] + 1 the PC now points to the following instruction
MDR ← [[MAR]] the instruction at that address is read into the MDR
CIR ← [MDR] the instruction is copied into the CIR for decoding
הסדר חשוב: ה-PC מתגבר מיד לאחר שהכתובת שלו הועתקה, כך שקפיצה שתתבצע מאוחר יותר עדיין תוכל לכתוב עליה. במהלך הביצוע אותו סימון מתאר כל הוראה; לדוגמה עבור LDD 200, יש MAR ← 200, MDR ← [[MAR]], ACC ← [MDR].

פיענוח
ה-CU מפענחת את ההוראה ב-CIR — איזה פעולה, ואילו ארגומנטים או כתובות.
ביצוע
ה-CU מבצעת אותה: פעולות אריתמטיות/לוגיות הולכות ל-ALU (התוצאה ל-ACC); טעינה/אחסון ממשיכים נתונים בין זיכרון לרשם; קפיצה משנה את ה-PC. לאחר מכן המחזור חוזר על עצמו.

מחזור ציוד-ביצוע
הקלד סביב לולאת ה-CPU החוזרת מיליארדי פעמים בשנייה. צפה כיצד השלב fetch משתמש ברישומי PC/MAR/MDR/CIR, ולאחר מכן decode ו-execute פועלים על מה שנלקח.
מחזור קריאה-ביצוע
עבור על תהליך ביצוע הוראה אחת על ידי המעבד: קרא אותה מהזיכרון, פענח אותה, ואז בצע אותה, שוב ושוב.
| English | עברית |
|---|---|
| fetch-execute cycle/fetʃ ˈeksɪkjuːt ˈsaɪkl/ | מחזור משיכה-ביצוע |
| special purpose registers/ˈspeʃl ˈpɜːpəs ˈredʒɪstəz/ | רשומות ייעוד ספציפי |
| Program Counter/ˈprəʊɡræm ˈkaʊntə/ | ספירת תוכנית |
| Memory Address Register/ˈmeməri əˈdres ˈredʒɪstə/ | רשם כתובת זיכרון |
| Memory Data Register/ˈmeməri ˈdeɪtə ˈredʒɪstə/ | רשם נתוני זיכרון |
| Current Instruction Register/ˈkʌrənt ɪnˈstrʌkʃn ˈredʒɪstə/ | רשם ההוראה הנוכחית |
4.1
אירועי הפרעה
אירוע הפרעה הוא אות שמשבת את המחזור הרגיל כדי שה-CPU יוכל להתמודד באירוע דחוף (לחיצת מקשי, הגעת חבילה, תקלה בחומרה, חלוקה באפס, טיימר של מערכת ההפעלה).
טיפול באחד:
- סיום ההוראה הנוכחת.
- שמירת המצב (ה-PC והרשמים).
- טעינת כתובת תוכנית שירות ההפרעות (ISR) לתוך ה-PC והרצתה.
- ה-ISR מטפל באירוע.
- שחזור המצב השמור והמשכה.
הפרעות מאפשרות למערכת להגיב בזמן אמת ללא צורך ב-CPU לבדוק באופן מתמיד את המכשירים, והן הן הדרך שבה מערכת ההפעלה מבצעת ריבוי משימות.
"הסבר כיצד הפרעה ממכשיר כניסה מזוהה ומטופלת במחזור F-E" היא תשובה בעלת 4 נקודות הנכללות בפריטים הבאים: המכשיר שולח אות הפרעה שמגדיר את דגל ההפרעה ב-רשומת ההפרעות; המעבד בודק את הרשומה זו בסוף כל מחזור fetch-execute, לאחר שההוראה הנוכחית סיימה ביצוע; אם הדגל מוגדר וההפרעה בעלת עדיפות גבוהה מהמשימה הנוכחית, התוכן של PC ושאר הרשומות נשמרים בשורה (stack); כתובת פרוגרמת השירות להפרעה נטענת ל-PC והפרוגרמה נערכת; כאשר היא מסתיימת, הערכים שנשמרו משוחזרים מהשורה והתוכנית המקוטעת ממשיכה מהנקודה בה עצרה.
סיבות ששווה לציין: הפרעה חומרת ממכשיר (מקשי לחיצה, בופר מדפסת ריק, חבילת רשת נכנסת), הפרעה תוכנתית מכשל (חילוק באפס, הוראה לא חוקית, גלישה אריתמטית), הפרעת טיימר ממערכת ההפעלה המסמנת את סוף קטיעת הזמן, ואזהרת תקלה בחשמל.

| English | עברית |
|---|---|
| stack/stæk/ | סטק |
| assembly language/əˈsemblɪ ˈlæŋɡwɪdʒ/ | שפת אסמבלר |
| machine code/məˈʃiːn kəʊd/ | קוד מכונה |
| mnemonics/nɪˈmɒnɪks/ | מונומיקה (סימני קיצור) |
| assembler/əˈsemblə/ | אסמבלר |
| symbol table/ˈsɪmbl ˈteɪbl/ | טבלת סמלים |
| label/ˈleɪbl/ | תווית |
| forward references/ˈfɔːwəd ˈrefrənsɪz/ | הפניות קדימות |
| opcode/ˈɒpkəʊd/ | אוקוד (OPCODE) |
4.2
לשון אסמבלר וכידור מכונה
סיילבוס
| המועמדים צריכים להיות מסוגלים: | הערות והנחיות |
|---|---|
| הצג הבנה של הקשר בין שפת אסמבלר לבין קוד מכונה | |
| תאר את השלבים השונים בתהליך האסמבל עבור אסמבלר דו-מעברי | יישם את תהליך האסמבלר הדו-מעברי על תוכנת אסמבלר פשוטה נתונה |
| עקוב אחר תוכנת אסמבלר פשוטה נתונה | |
| הצג הבנה כי קבוצות הוראות מקוננות | כולל את הקבוצות הבאות: • הזזת נתונים • הזנת ויציאת נתונים • פעולות אריתמטיות • הוראות לא תנאי ותנאי • הוראות השוואה |
| הצג הבנה ויכולת לשתמש במצבי כתוב שונים | כולל מיידית, ישירה, עקיפה, אינדקסית, יחסית |
מקור: הסיילבוס הבינלאומי של קמבריד'ג'
ה-CPU בפועל רץ כידור מכונה — דפוסי ביטים, ייחודיים לארכיטקטורה מסוימת. לשון אסמבלר היא צורה קריאה, עם הוראה אחת לכל הוראת מכונה, הכתובה באמצעות מונונימיקים כמו LDD, ADD, JMP. אסמבלר תרגם אותו לכידור מכונה.

אסמבלר דו-מעברי
אסמבלר דו-מעברי קורא את המקור פעמיים:
- מעבר 1 בונה טבלת סימנים: בכל פעם שתווית (כמו
LOOP:) מופיעה, נרשום את כתובתה; אין עוד קוד. - מעבר 2 מייצר קוד: תרגם כל הוראה, וכשאחת מתייחסת לתווית (כמו
JMP LOOP), חפש את כתובתה בטבלת הסימנים.
שני מעברים מטפלים בהפניות קדימיות (קפיצה לתווית המוגדרת מאוחר יותר).
דוגמה פותרת. יישם את תהליך הדו-מעברי על תוכנית זו, שבה ההוראה הראשונה מאוחסנת בכתובת 100.
LDD COUNT
LOOP: DEC ACC
CMP #0
JPN LOOP
END
COUNT: 5
מעבר 1 קורא כל שורה, סופר את הכתובת שת occupies, ומרשם כל תווית בטבלת הסימנים: LOOP = 101 (שורת הDEC) וCOUNT = 105 (שורת הנתונים). אין קוד המיוצר. מעבר 2 קורא את התוכנית שוב ותרגם כל שורה לכידור מכונה, תוך החלפת כל מונונימיק ב-אופקוד וחלפת כל כתובת סמלית במספר מטבלת הסימנים: LDD COUNT הופך לאופקוד עבור LDD עם אופרנד 105, וJPN LOOP הופך לאופקוד עבור JPN עם אופרנד 101. הקפיצה חזרה לLOOP יכלה להיות פותרת במעבר אחד, אך קפיצה קדימית לתווית שלא נראתה עד כן לא הייתה אפשרית, ולכן האסמבלר מבצע שניים.
דוגמה לערכת הוראות
Cambridge משתמש בערכת הוראות קטנה וגנרית, מודפסת בטבלת ההפניה בדף הבחן, עם רשמה אחת רב-שימושית, האקumulátor (ACC), ורשמת אינדקס (IX). אופרנד הכתוב #n הוא מספר עשרוני, Bn מספר בינארי ו&n מספר הלודקסימלי; <address> הוא מספר מיקום או תווית.
| קבוצה | הוראה | מה she עושה |
|---|---|---|
| העברת נתונים | LDM #n |
טען את המספר n ל-ACC (אידיאטיבי) |
LDD <address> |
טען את תכולת הכתובת ל-ACC (עקיף) | |
LDI <address> |
הכתובת מכילה כתובת נוספת; טעון את תוכנה ל-ACC (אינדירקטי) | |
LDX <address> |
הוסף IX לכתובן וטעון את תוכנו של התוצאה ל-ACC (אינדקסי) | |
LDR #n |
טעון את המספר n ל-IX | |
MOV <register> |
העתק את ACC לריגסטר הנקוב (IX) | |
STO <address> |
שמור את תוכן ACC בכתובת | |
| קלט ותפוקה | IN |
קרא לחיצת מקש והנח את קוד ה-ASCII שלו ב-ACC |
OUT |
הפך את האות שקוד ה-ASCII שלה נמצא ב-ACC | |
| חשבונאות | ADD <address> / ADD #n |
הוסף לתוכן הכתובת, או למספר, ל-ACC |
SUB <address> / SUB #n |
חסר מ-ACC | |
INC <register> / DEC <register> |
הוסף 1 ל-ACC או ל-IX, או חסר 1 מהם | |
| השוואה | CMP <address> / CMP #n |
השוו בין ACC לבין תוכן הכתובת, או עם n, והגדר את הדגל |
CMI <address> |
השוו בין ACC לבין תוכן הכתובת הנמצאת בכתובת (אינדירקטי) | |
| קפיצה | JMP <address> |
קפוץ לכתובת ללא תנאים |
JPE <address> / JPN <address> |
קפוץ אם ההשוואה האחרונה הייתה שווה / לא שווה | |
| עיבוד ביטים | AND, OR, XOR עם #n, Bn, &n או <address> |
פעולה לוגית על ACC |
LSL #n / LSR #n |
הזז את ACC לוגיתית n מקומות שמאלה או ימינה | |
END |
סיים את התוכנית |
השאלה "הוראות לשפת אסמבלי מחולקות לקבוצות" דורשת את שמות הקבוצות והוראה אחת מכל אחת: העברת נתונים, קלט ותפוקה, חשבונאות, קפיצות ללא תנאים וקפיצות מותנות, השוואה ועיבוד ביטים.
כיצה פונקציונליות של אסמבלר דו-מעברי
עבור עליו. המאסמבלר קורא את הקוד שלך פעמיים: מעבר 1 מזהה רק היכן נמצא כל תווית, כך שמעבר 2 יכול למלא את הכתובות — וכך מתקיים קפיצה לתווית שהוגדרה אוחר יותר.
| English | עברית |
|---|---|
| register/ˈredʒɪstə/ | רשמה |
| control unit/kənˈtrəʊl ˈjuːnɪt/ | יחידת בקרה |
| clock speed/klɒk spiːd/ | מהירות שעון |
4.2
מצבי כתובות
המצב הכתובתי (או מצבי הכתובות) מסביר כיצד מעבד ה-CPU מזהה את הארגומנט:
- היפוע מיידי — האופרנד הוא הערך בתוך ההוראה.
LDM #10מטעין 10. - היפוע ישיר — ההוראה מכילה כתובת; האופרנד הוא הערך ששם.
LDD 200. - היפוע עקיף — ההוראה מכילה כתובת שמכילה כתובת אחרת, שהיא הנתון.
LDI 200. - היפוע אינדקסי — הכתובת האפקטיבית היא
address + index register; משמש למטריצות.LDX 100עם רשמת IR = 5 קורא את הכתובת 105.
(היפוע יחסי מספק את הכתובת כסטייה מה-PC — משמש לקפיצות.)

דוגמה מפורטת. הזיכרון מכיל: מיקום 200 = 250, מיקום 250 = 99, מיקום 105 = 7. רישום האינדקס מכיל 5. מה יש במצבור האקumulat after each of LDM #200, LDD 200, LDI 200 and LDX 100? Follow how far each mode has to look. LDM #200 is immediate - the operand is the number written in the instruction, so the accumulator holds 200. LDD 200 is direct - go to location 200 and take what is there: 250. LDI 200 is indirect - location 200 holds 250, which is another address, so go on to location 250: 99. LDX 100 is indexed - add the index register to the address, $100 + 5 = 105$, and read location 105: 7. Count the hops to keep them apart: immediate 0, direct 1, indirect 2, indexed 1 (once the index has been added).
| English | עברית |
|---|---|
| operand/ˈɒpərænd/ | אופראנד |
| accumulator/əˈkjuːmjʊleɪtə/ | מצטבר |
| Status Register/ˈsteɪtəs ˈredʒɪstə/ | רשם מצב |
| flags/flæɡz/ | דגלים |
| Index Register/ˈɪndeks ˈredʒɪstə/ | רשם אינדקס |
| indexed addressing/ˈɪndekst əˈdresɪŋ/ | כתובת מאונדסת |
| general-purpose registers/ˈdʒenərəl ˈpɜːpəs ˈredʒɪstəz/ | רשומות שימוש כללי |
| register transfer/ˈredʒɪstə ˈtrænsfɜː/ | העברת רשמים |
| control bus/kənˈtrəʊl bʌs/ | נתיב בקרה |
| addressing mode/əˈdresɪŋ məʊd/ | מצב כתובת |
| immediate addressing/ɪˈmiːdɪət əˈdresɪŋ/ | כתובת מידית |
| direct addressing/daɪˈrekt əˈdresɪŋ/ | כתובת ישירה |
| indirect addressing/ɪndaɪˈrekt əˈdresɪŋ/ | כתובת עקיפה |
| relative addressing/ˈrelətɪv əˈdresɪŋ/ | כתובת יחסית |
| logical shift/ˈlɒdʒɪkl ʃɪft/ | הזזה לוגית |
| cyclic shift/ˈsaɪklɪk ʃɪft/ | הזזה מחזורית |
4.2
מעקב אחר תוכנית אסמבל
כדי לבצע מעקב: בנה טבלה עם עמודות עבור PC, ACC, רשמת אינדקס, כל משתנה וכל סימן. עבור על ההוראות עדכנות את הטבלה לאחר כל אחת; עקוב אחר ветки כאשר הן משנות את ה-PC; עצור בEND. דפוס נפוץ הוא לולאה על מטריצה באמצעות היפוע אינדקסי.
דוגמה פותרת. עקוב אחר התוכנית הבאה. הכתובת 200 מכילה 5 והכתובת 201 מכילה 0.
100 LDD 200
101 CMP #0
102 JPE 108
103 OUT
104 DEC ACC
105 STO 200
106 LDD 201
107 JMP 100
108 END
כתוב שורה אחת לכל הוראה שבוצעה, ומלא רק את העמודות ששתנו:
| הוראה | ACC | 200 | 201 | תפוקה |
|---|---|---|---|---|
| התחלה | 5 | 0 | ||
LDD 200 |
5 | |||
CMP #0 |
||||
JPE 108 |
לא נלקח | |||
OUT |
אות עם קוד 5 | |||
DEC ACC |
4 | |||
STO 200 |
4 | |||
LDD 201 |
0 | |||
JMP 100 |
||||
LDD 200 |
4 |
וכך הלאה, עד שLDD 200 מטעין 0, ההשוואה מגדירה את סימן השוויון, JPE 108 נלקח והתוכנית נגמרת. שלושה דברים שהבוחן בודק: CMP אינו משנה רשמה, אלא רק סימן; קפיצה שלא נלקחה עדיין נחשבת כבוצעה; וOUT מציג אות, ולכן הוא מופיע בעמודת התפוקה, לא בעמודת ה-ACC. "צין את ההשפעה של שינוי LDD 10 לLDM #10": ה-ACC היה מכיל את המספר 10 במקום תכולת הכתובת 10.
4.3
הזזות בינאריות
סיילבוס
| המועמדים צריכים להיות מסוגלים: | הערות והנחיות |
|---|---|
| הצג הבנה וביצוע הזזות בינארי | לוגיקי, אריתמטי וציקלי הזזה שמאל, הזזה ימין |
| הצג הבנה כיצד עיבוד ביט יכול לשמש לניטור/בקרה על התקן | בצע פעולות עיבוד ביט בדוק והגדר ביט (באמצעות מסיכת ביט) |
| תווית הוראה | אופקוד | ארגומנט | הסבר |
| AND #n / Bn / &n | פעולת AND ביטית של תוכן ACC עם הארגומנט |
| AND | פעולת AND ביטית של תוכן ACC עם תוכן |
| XOR #n / Bn / &n | פעולת XOR ביטית של תוכן ACC עם הארגומנט |
| XOR | פעולת XOR ביטית של תוכן ACC עם תוכן |
| OR #n / Bn / &n | פעולת OR ביטית של תוכן ACC עם הארגומנט |
| OR | פעולת OR ביטית של תוכן ACC עם תוכן |
| LSL #n | בסיסים ב-ACC מוזזים לוגית n מקומות שמאלה. אפסים מוחדרים בקצה הימני |
| LSR #n | בסיסים ב-ACC מוזזים לוגית n מקומות ימינה. אפסים מוחדרים בקצה השמאלי |
| מסמן הוראה | |
| נותן כתובת סמלית | |
| כל השאלות יניחו שקיים רק רשם שימוש כללי אחד (מצטבר) ACC מציינים מצטבר IX מציינים רשם אינדקס יכול להיות כתובת או סמלית # מציינת מס עשרוני, לדוגמה #123 B מציינת מס בינארי, לדוגמה B01001010 & מציינת מס הלקסידמי, לדוגמה &4A |
מקור: הסיילבוס הבינלאומי של קמבריד'ג'
הזזה לוגית מזיזה את כל הביטים שמאלה או ימינה למספר מקומות, וממלאת את המיקומים החדשים ב-0.
- הזזה שמאלה ב-1 (
LSL #1) — הביטים זזים שמאלה, 0 נכנס מימין; עבור מספר ללא סימן זה × 2. - הזזה ימינה ב-1 (
LSR #1) — הביתים נעים ימינה, 0 נכנס משמאל; עבור מספר ללא סימן זהו מספר שלם ÷ 2.
הזזה ב-$n$ מקומות כופלת או מחלקת ב-$2^{n}$. דוגמה: 00001011 (11) LSL #1 → 00010110 (22).
ביתים שנזזו החוצה מהקצה אובדים, ולכן הכפל נכון רק כל עוד הם היו אפסים. הוספת LSL #2 למספר שלם בשנייה-משלים 11001010 נותנת 00101000: שני ה-1s שנפלו משמאל אבדו, ביט הסימן השתנה, והתוצאה אינה ארבע פעמים המקורית יותר.
הזזה אריתמטית ימינה שומרת על ביט הסימן כך שמספר שלילי ממוין נשאר שלילי. הזזה מעגלית (סיבוב) מחזירה את הביט שיצא מהקצה האחד חזרה לתוך הקצה השני, כך שאף בית לא אבוד.
"הראה את תוצאת ההזזה האריתמטית הימינה ב-3 מקומות על 10011110": העתק ביט הסימן לכל מקום ריק, 11110011. אותה הזזה על 01011100 נותנת 00001011. הזזה מעגלית שמאלית ב-1 על 10000110 נותנת 00001101: ה-1 המוביל מופיע שוב מימין.

ההפרש בין שתי ההזזות הימניות הוא ביט אחד. לקחת 11110000, שהוא 240 קריאה ללא סימן ו-$-16$ קריאה עם סימן. LSR #1 מכניס 0 ונותן 01111000 $= 120$, שהוא המחצית הנכונה של 240. ASR #1 מעתיק את ביט הסימן במקום זאת ונותן 11111000 $= -8$, שהוא המחצית הנכונה של $-16$. אף אחד מהם אינו שגוי — כל אחד מחלק בערך תחת קריאה אחת.

עיבוד ביטים לניטור/בקרה
התקנים embedded משתמשים לעיתים קרובות ב-ביט אחד של רגיסטר לכל אות (למשל bit $n$ = LED $n$). השימוש ב-מסכה — עיבוד ביטי במסכה — מאפשר לך:
- להגדיר bit $n$:
R = R ORמסכה עם bit $n$ מוגדר. - לנטרל bit $n$:
R = R ANDמסכה עם bit $n$ נטרל ושאר הגדרות. - להפוך bit $n$:
R = R XORמסכה עם bit $n$ מוגדר. - לבדוק bit $n$:
R ANDהמסכה, ולאחר מכן לבדוק אם התוצאה אינה אפס.

עיבוד ביטים מהיר, משתמש בזיכרון מעט, ומאפשר לבייט אחד להחזיק עד 8 מצבי ON/OFF.
בסט ההוראות במבחן אלו הם AND, OR ו-XOR עם מסכה כתובה כארגומנט עשרוני, בינארי או הדקסিমלי. עם ACC שמחזיק 10101100:
| הוראה | מסכה | תוצאה ב-ACC | השפעה |
|---|---|---|---|
AND B00001111 |
00001111 |
00001100 |
שומר רק את ארבעת הביטים הנמוכים (מאפס את שאר הביטים) |
OR #1 |
00000001 |
10101101 |
מגדיר את הביט המינימלי, ומשאיר את שאר הביטים ללא שינוי |
XOR &FF |
11111111 |
01010011 |
הפוך כל ביט |
AND B00001000 ולאחר מכן CMP #0 |
00001000 |
00001000 |
בודק ביט 3: ההשוואה אינה שווה, ולכן הביט 3 היה מוגדר |
LSL #2 |
10110000 |
מזז שמאלה בשתי מקומות, מאבד את שני הביטים העליונים | |
LSR #3 |
00010101 |
הזז ימינה בשלושה מקומות, אפסים נכנסים משמאל |
"כתוב את ההוראה שמגדירה את הביט המינימלי ל-1 ומשאירה את שאר הביטים ללא שינוי": OR #1 או OR B00000001. כדי לאפס ביט השתמש בAND עם מסכה שיש בה 0 במיקום זה ו-1s במקומות האחרים; לבדיקת ביט, השתמש בAND עם מסכה שיש בה 1 רק במיקום זה, ולאחר מכן השווא את התוצאה לאפס. במכשיר ניטור, ביט אחד של רגיסטר לכל חיישן מאפשר לרגיסטר אחד AND לבדוק האם חיישן מסוים דולק, ורגיסטר אחד OR מדליק את ביט הבקרה של מערך ללא פגיעה באחרים.
הזזה ומסיכת ביטים של ביט
בחר אופרטור וצפה בכל ביט תוצאה. הזזה שמאלית (<<) moves every bit up one place (×2); a right shift (>>) מזיזה אותם כלפי מטה (÷2); AND עם מסכה מבטל את הביטים שאינם רצויים.
| English | עברית |
|---|---|
| bit/bɪt/ | ביט |
| mask/mæsk/ | מסכה |
4.3
הגדרות מקובלות בקורס
שאלת הגדרה מוקדמת לפי טקסט קבוע. לימודן במדויק, ותן תשובה אחת בלבד.
| מונח | הגדרה |
|---|---|
| קונספט תוכנית מאוחזת | הוראות התוכנית והנתונים אחוזים כולם בזיכרון הראשי, והוראות נלקחות ומבוצעות אחת אחת |
| רגיסטר | מקום אחסון קטן ומהיר מאוד בתוך המעבד בעל מטרה ספציפית |
| מונה תוכנית | הרגיסטר המחזיק את הכתובת של ההוראה הבאה לקחת |
| רגיסטר כתובת זיכרון | הרגיסטר המחזיק את הכתובת של מיקום הזיכרון שנמצא בקריאה או כתיבה |
| רגיסטר נתוני זיכרון | הרגיסטר המחזיק את הנתונים או ההוראה שנלקחו מהזיכרון או עומדים להיכתב אליו |
| רגיסטר הוראה נוכחית | הרגיסטר המחזיק את ההוראה שהפעולה הפעילה מתפרשת ומבוצעת |
| מצובר | הרגיסטר רב-תכליתי המחזיק את התוצאה של הפעולה החישובית או הלוגית האחרונה |
| זיכרון מערך (cache) | זיכרון קטן ומהקרוב למעבד המחזיק הוראות ונתונים המשמשים לעיתים קרובות |
| הפסקה (interrupt) | אות ממכשיר או תוכנית הגורם למעבד לעצור את המשימה הנוכחית ולהריץ שגרת טיפול בהפסקה |
| לשון אסימבל | שפה ברמה נמוכה שבה כל הוראת מנומון (mnemonic) תואמת להוראת קוד מכונה אחת |
| כתובת מיידית | האופרנד הוא הערך הכתוב בהוראה |
| כתובת ישירה | האופרנד הוא תוכן הכתובת הכתובה בהוראה |
| כתובת לא ישירה | הכתובת בהוראה מכילה את כתובת האופרנד |
| כתובת אינדקסית | כתובת האופרנד היא הסכום בין הכתובת בהוראה לבין תוכן רשם האינדקס |
| כתובת יחסית | כתובת האופרנד מוגדרת כהפרש מהכתובת של ההוראה הנוכחית |
| הזזה לוגית | כל ביט זז את מספר המקומות הנדרש ואפסים ממלאים את המיקומים הרוקנים |
4.3
טיפים לבחינות
- להבין את מחזור המשיכה והביצוע במונחי העברת רשמים (PC, MAR, MDR, CIR, ACC) ולזהות מה מעלה את PC.
- לציין את תפקידו של כל רשם; ערוץ הכתובות הוא חד-כיווני, ערוץ הנתונים הוא דו-כיווני.
- להבחין בין מצבי הכתובת (מיידית, ישירה, לא ישירה, אינדקסית) — שאלה נפוצה.
- להסביר כיצד מהירות שעון, מספר ליבות, גודל קאש ואורך מילה משפיעים על ביצועים.
- עבור הזזה בינארית, לציין אם מדובר בהזזה לוגית או אריתמטית; הזזה שמאלה כופלת ב-2, הזזה ימינה מחלקת ב-2.
טעויות נפוצות
- לומר שה-PC מכיל את ההוראה הנוכחית, או שה-MDR מכיל כתובת. ה-PC מכיל את כתובת ההוראה הבאה; ה-MDR מכיל נתונים או הוראה, לעולם לא כתובת.
- להשאיר את ההגבהה של PC מחוץ למשיכה, או לשים אותה לאחר הביצוע. זה קורה ברגע שהכתובת הועברה ל-MAR.
- לקרוא
LDD 10כ"טעינה 10".LDD 10טוען את תוכן הכתובת 10;LDM #10טוען את המספר 10. - לשים ערך בעמודת ה-ACC עבור
CMPאוOUT. השוואה מגדירה סימן בלבד; פלט יוצא לעמודת הפלט. - לומר שהפרעת טיפול "מיידי". המעבד מסתיים את ההוראה הנוכחית ובוחן הפרעות בסוף המחזור.
- שימוש בהזזה ימנית לוגית על מספר שלילי בשלימה לשניים. רק הזזה אריתמטית שומרת על סימן המספר.
שיעורים אינטראקטיביים בנושא זה
לעבור על הדברים צעד אחר צעד, עם תרגילים לבדיקה מיידית.