לדלג לתוכן

0.2 המחשב פתרון

✅ פתרונות – תרגול כתיבת קוד למעבד הפשוט שלנו


שאלה 1 – חיבור והצגה בפלט

mov 8 -> אוגר 1  
mov 6 -> אוגר 2  
add                 ; מחבר אוגר 1 ואוגר 2, שומר באוגר 3  
out אוגר 3         ; מציג 14

תוצאה בפלט: 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 – העתקה בין אוגרים

mov 4 -> אוגר 1  
mov אוגר 1 -> אוגר 3  
out אוגר 3

תוצאה בפלט: 4


שאלה 5 – תוכנה שמשכפלת קלט

in -> אוגר 1  
out אוגר 1

תוצאה בפלט: הערך שהמשתמש הזין.


שאלה 6 – הבנת מהלך ההרצה

mov 6 -> אוגר 1  
mov 9 -> אוגר 2  
add  
mov אוגר 3 -> אוגר 1  
out

ניתוח של כל שלב:

שלב פעולה תוצאה בכל אוגר
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 – חיבור, שמירה בזיכרון וקריאה

in -> אוגר 1  
in -> אוגר 2  
add  
wrt אוגר 3 -> RAM[15]  
ldr RAM[15] -> אוגר 3  
out אוגר 3

תוצאה בפלט: סכום שני המספרים שהמשתמש הזין.

לדוגמה: אם המשתמש הקיש 3 ואז 7 → תוצאת הפלט תהיה 10.


שאלה 8 – שאלה פתוחה: מתי המעבד מפסיק לרוץ?

תשובה:
המעבד מריץ הוראות לפי מה שמצביע עליו אוגר ה־IP (Instruction Pointer).
ברגע שה־IP מגיע לכתובת ששווה לאוגר הסגמנט של המשתנים (DATA) – המעבד מבין שזה סוף סגמנט הקוד ומפסיק להריץ פקודות.

לדוגמה:

  • אם אוגר הקוד (code segment) = 1

  • ואם DATA = 6
    → אז המעבד יריץ רק את הכתובות 1–5 ב־RAM.

למה זה חשוב? כי ככה המעבד לא מנסה להריץ "קוד" שנמצא בתוך משתנים בטעות.