1.1 פתיחה תרגול
בתרגול זה נסביר לכם על הקובץ אסמבלי הבסיסי שהעובר אליכם (base.asm) כדי שבהמשך תוכלו לכתוב קוד אסמבלי בעצמכם.
IDEAL
MODEL small
STACK 100h
DATASEG
; --------------------------
; Your variables here
; --------------------------
CODESEG
start:
mov ax, @data
mov ds, ax
; --------------------------
; Your code here
; --------------------------
exit:
mov ax, 4c00h
int 21h
END start
זהו קובץ אסמבלי בסיסי מאוד.
הוא הבסיס שעליו כותבים תוכניות בשפת אסמבלי (assembly) בסביבת DOS (למשל עם DOSBox).
אפשר לחשוב עליו כמו "שלד" של תוכנית — אתה רק צריך למלא את הגוף.
הסבר שורה־שורה:¶
💡 זו הנחיה לאסמבלר (TASM) להשתמש במצב IDEAL — מצב כתיבה קל יותר לקריאה ונוח יותר ללימוד.
במילים פשוטות: "תשתמש בגרסה הפשוטה של השפה".
💡 מודל זיכרון = איך מחלקים את הזיכרון לקוד ונתונים.
הsmall אומר: כל הקוד והנתונים נמצאים בסגמנט אחד כל אחד (Segment אחד ל־CODE ואחד ל־DATA).
מתאים לתוכניות פשוטות כמו שלנו.
💡 מגדיר מחסנית (Stack) בגודל 100h בתים = 256 בתים.
המחסנית משמשת את המעבד לקרוא לפונקציות, לשמור ערכים זמניים וכו'.
לא חייבים להבין את זה עכשיו — אבל חייב להגדיר מחסנית.
💡 DATASEG פותח את אזור המשתנים שלך — המקום בו תוכל להגדיר טקסטים, מספרים, מערכים ועוד.
הCODESEG פותח את הקוד האמיתי — איפה שהתוכנית באמת רצה.
הstart: הוא תווית (label), נקודת התחלה. (נדבר בהמשך על המשמעות של label-ים)
כשתוכנית תתחיל לרוץ, היא תתחיל מהשורה הזו.
שורה מאוד חשובה — היא מכינה את הסגמנט של הנתונים (DATA).
- ה
@dataהיא הכתובת של אזור המשתנים שלך (הDATA segment). - ה
dsזה רגיסטר מיוחד שאחראי על ה־Data Segment.
אז בעצם אתה אומר: "שים את הכתובת של המשתנים בתוך הרגיסטר שאחראי על גישה למשתנים".
בלי זה, כל משתנה שתנסה לקרוא – יגרום לבלאגן. (נדבר בהמשך על למה צריך את הds בהרחבה)
זהו הקוד שיוצא מהתוכנית.
הקוד הזה אומר למערכת ההפעלה DOS שהוא רוצה לסיים את התוכנית, (נדבר בהמשך כיצד הפקודה int עובדת)
זה שווה ל:
בשפות תכנות מתקדמות יותר
אומר לאסמבלר: “סיימתי לכתוב. כשהתוכנית תתחיל — תתחיל מ־start:”.