📘 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 | טען ערך מיידי לאוגר A | A ← 5 | # אומר שהערך מיידי |
STA $80 | שמור את A בזיכרון | [$80] ← A | |
ADC #$01 | חבר 1 ל־A | A ← A + 1 | |
JMP Loop | קפוץ ל־Loop | PC ← 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
🧮 מבנה המעבד והפינים (בהקשר לקוד)

- 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?