📘 Instruction Set ו־Addressing Modes

🔰 כניסה לעולם של 6502

עכשיו נכנס לעולם של מעבד ה־6502 (ועל הדרך, גם של 6507), וזה בסיס מצוין להבין איך מחשבים עובדים ברמה הכי נמוכה – ממש על מתגי חומרה וחשמל.

💡 מה זה Instruction Set?

  • כל מעבד מבין רק קבוצת פקודות מסוימת – זהו סט ההוראות שלו.
  • לדוגמה, למעבד 6502 יש פקודות כמו:
    • LDA – Load Accumulator (טען ערך לאוגר)
    • STA – Store Accumulator (שמור ערך מהאוגר לזיכרון)
    • ADC – Add with Carry (חיבור ערך עם נשא)
    • JMP – Jump (קפוץ לכתובת)
    • BEQ / BNE – קפיצה מותנית לפי תוצאה

🧠 כל פקודה = אופקוד + כתובת/מידע

פקודהפעולהדוגמההסבר
LDA #$05טען ערך מיידי לאוגר AA ← 5# אומר שהערך מיידי
STA $80שמור את A בזיכרון[$80] ← A
ADC #$01חבר 1 ל־AA ← A + 1
JMP Loopקפוץ ל־LoopPC ← Loop
BNE Labelקפוץ אם A ≠ 0

🧱 רמות קוד: דוגמה מלאה

LDA #$05      ; טען את הערך 5
ADC #$01      ; חבר אליו 1 => A = 6
STA $80       ; שמור בזיכרון בכתובת $80
JMP Start     ; קפוץ חזרה להתחלה

המחשב לא רואה את זה כטקסט, אלא כקוד בינארי – למשל:

A9 05 69 01 85 80 4C 00 F0

🧮 מבנה המעבד והפינים (בהקשר לקוד)

תרשים פיני מעבד 6507
תרשים פיני המעבד 6507 – ניתן לראות את הפינים A0–A12 לכתובת, D0–D7 לנתונים, R/W לקביעת כיוון (קריאה/כתיבה), RESET לאתחול, ו־Φ2 לקצב שעון. הפינים הללו פועלים בהתאם לפקודות אסמבלי כמו STA, LDA ו־JMP.
  • 13 פיני כתובת (A0–A12) – בוחרים לאן לגשת בזיכרון (מכסים עד 8KB)
  • 8 פיני נתונים (D0–D7) – משמשים להעברת הערכים עצמם
  • R/W – האם לקרוא (1) או לכתוב (0)
  • Φ2 – קצב השעון (Clock)
  • RES – פין Reset שמאתחל את המעבד ל־$FFFC

📘 אתר מעולה לתרגול

סימולטור חי של 6502 – אתה כותב קוד בצד שמאל ורואה את הביצוע בצד ימין, כולל זיכרון, אוגרים ועוד:

🔗 https://skilldrick.github.io/easy6502/

🧩 תרגול קצר – כתוב קוד שמחשב סכום של שני מספרים:

LDA #10     ; טען את הערך 10
ADC #20     ; חבר אליו 20
STA $00     ; שמור את התוצאה בכתובת 0
BRK         ; עצור את התוכנית

כמה יצא בזיכרון ב־$00?