0.2 המחשב פתרון
✅ פתרונות – תרגול כתיבת קוד למעבד הפשוט שלנו¶
שאלה 1 – חיבור והצגה בפלט¶
תוצאה בפלט: 14
שאלה 2 – שמירה בזיכרון¶
in -> אוגר 1 ; קלט מהמשתמש
wrt אוגר 1 -> RAM[20] ; כתיבה לזיכרון
ldr RAM[20] -> אוגר 2 ; קריאה מהזיכרון
out אוגר 2 ; פלט של הערך
תוצאה בפלט: תלוי בקלט מהמשתמש (למשל, אם המשתמש הקיש 7 – יודפס 7)
שאלה 3 – חיסור ושמירה¶
mov 25 -> אוגר 1
mov 10 -> אוגר 2
sub ; 25 - 10 = 15, נשמר באוגר 3
wrt אוגר 3 -> RAM[5]
ldr RAM[5] -> אוגר 1
out אוגר 1
תוצאה בפלט: 15
שאלה 4 – העתקה בין אוגרים¶
תוצאה בפלט: 4
שאלה 5 – תוכנה שמשכפלת קלט¶
תוצאה בפלט: הערך שהמשתמש הזין.
שאלה 6 – הבנת מהלך ההרצה¶
ניתוח של כל שלב:
| שלב | פעולה | תוצאה בכל אוגר |
|---|---|---|
| 1 | mov 6 -> אוגר 1 |
א1=6 |
| 2 | mov 9 -> אוגר 2 |
א2=9 |
| 3 | add |
א3=6+9=15 |
| 4 | mov אוגר 3 -> אוגר 1 |
א1=15 |
| 5 | out |
מוציא את א1: 15 |
תוצאה בפלט: 15
שאלה 7 – חיבור, שמירה בזיכרון וקריאה¶
תוצאה בפלט: סכום שני המספרים שהמשתמש הזין.
לדוגמה: אם המשתמש הקיש 3 ואז 7 → תוצאת הפלט תהיה 10.
שאלה 8 – שאלה פתוחה: מתי המעבד מפסיק לרוץ?¶
תשובה:
המעבד מריץ הוראות לפי מה שמצביע עליו אוגר ה־IP (Instruction Pointer).
ברגע שה־IP מגיע לכתובת ששווה לאוגר הסגמנט של המשתנים (DATA) – המעבד מבין שזה סוף סגמנט הקוד ומפסיק להריץ פקודות.
לדוגמה:
-
אם אוגר הקוד (code segment) = 1
-
ואם DATA = 6
→ אז המעבד יריץ רק את הכתובות 1–5 ב־RAM.
למה זה חשוב? כי ככה המעבד לא מנסה להריץ "קוד" שנמצא בתוך משתנים בטעות.