מהו אוגר (Register)?
📘 פקודות אסמבלי בסיסיות
אוגר הוא רכיב בזיכרון הפנימי של המעבד שמשמש לאחסון זמני של נתונים. האוגרים מאפשרים למעבד לבצע חישובים, פעולות והשוואות במהירות רבה. לדוגמה, אוגר Accumulator (הנקרא גם A) הוא האוגר המרכזי לביצוע פעולות חישוב.
🔹 טעינה לאוגרים
- LDA – טען ערך לתוך האוגר A (Accumulator).
- LDX – טען ערך לאוגר X.
- LDY – טען ערך לאוגר Y.
הוראות אלו מאפשרות לנו להכניס ערך מסוים לתוך אוגר, כדי שנוכל לבצע עליו פעולות.
🔸 כתיבה מהאוגרים לזיכרון
- STA – אחסן את ערך האוגר A בזיכרון.
- STX – אחסן את ערך האוגר X בזיכרון.
- STY – אחסן את ערך האוגר Y בזיכרון.
באמצעות פקודות אלו, ניתן להעביר מידע מהאוגרים חזרה למיקום מסוים בזיכרון.
➕🔢 פעולות אריתמטיות
המעבד תומך בפעולות חיבור וחיסור עם ניהול של ביט ה-carry:
- ADC – חיבור לערך שבאוגר A, כולל carry.
- SBC – חיסור מהערך שבאוגר A, כולל carry.
CLC מנקה את דגל ה-carry (לפני חיבור), SEC מציב את הדגל (לפני חיסור).
📈 הגדלה והקטנה
- INC – הגדלת ערך בזיכרון ב-1.
- INX – הגדלת האוגר X ב-1.
- INY – הגדלת האוגר Y ב-1.
- DEC – הקטנת ערך בזיכרון ב-1.
- DEX – הקטנת האוגר X ב-1.
- DEY – הקטנת האוגר Y ב-1.
🔀 פקודות קפיצה והתניות
- JMP – קפיצה למיקום אחר בתוכנית.
- BCC / BCS – קפיצה אם דגל ה-carry נקי/מוגדר.
- BEQ / BNE – קפיצה אם התוצאה היא אפס / לא אפס.
- BMI / BPL – קפיצה אם המספר שלילי / חיובי.
- BVC / BVS – קפיצה אם לא הייתה גלישה / הייתה גלישה.
🔁 דוגמה ללולאה
לולאה בסיסית שמתחילה מ־Y=100 ויורדת עד 0:
LDY #100 ; טען את 100 לאוגר Y Loop: DEY ; הפחת את Y BNE Loop ; חזור ללולאה אם Y עדיין לא אפס
🧠 אתחול מעבד 6502 – הסבר על קוד אסמבלי
הקוד הבא מייצג את שלב האתחול הראשוני של המעבד. כאשר המחשב נדלק, המעבד צריך לדעת מה לעשות קודם – ולכן הקוד הזה מבצע שלוש פעולות עיקריות:
- מכבה פסיקות ומצבים מיוחדים (כמו מצב עשרוני).
- מאתחל את מחסנית (Stack Pointer).
- מנקה את כל אזור הזיכרון בדף האפס ($00–$FF) – כולל RAM ורשומות חומרה.
לבסוף, הקוד קובע את וקטור האתחול בכתובת $FFFC – כך שהמעבד יתחיל תמיד בכתובת Start כשנדלק.
