אסמבלי x86/זיכרון/הצהרת משתנים
אסמבלי x86 |
---|
|
הצהרה על משתנים תיעשה בתוך מקטע הנתונים. דהיינו בין השורות הבאות:
DSEG SEGMENT 'DATA' ; כאן יש להצהיר על המשתנים DSEG ENDS
הצהרה על משתנים באסמבלי מתבצעת לפי התבנית הבאה:
Name Type Value
או עבור מערך:
ArrayName Type Count DUP(Value)
שם משתנה יכול להכיל אות אנגלית גדולה או קטנה (שפת אסמבלי אינה רגישה לגודל אות), מספר, קו תחתון והתווים: (לא זוכר - לבדוק). שם המשתנה לא יכול להתחיל במספר.
סוג המשתנה יכול להיות:
- DB - בית (8 ביט)
- DW - מילה (16 ביט)
- DD - מילה כפולה (32 ביט)
- DQ - מילה מרובעת (64 ביט)
- DT - עשרה בתים (80 ביט)
ערך המשתנה חייב להיות מתאים לגודל שהוקצה לו:
- DB - מ 0 עד 255 (28) או מ 127- עד 128
- DW - מ 0 עד 65535 (216) או מ 32767- עד 32768
- DD - מ 0 עד 4294967295 (232) או מ 2147483647- עד 2147483648
- DQ - מ 0 עד 18446744073709551615 (264) או מ 9223372036854775807- עד 9223372036854775808
- DT - מ 0 עד 1208925819614629174706175 (280) או מ 604462909807314587353087- עד 604462909807314587353088
כמו כן ערך המשתנה יכול להכיל תו ASCII אחד או יותר בתוך גרשיים. לדוג': 'Temp DB 'Hello. במקרה כזה יוקצו למשתנה Temp חמישה בתים. חשוב לדעת שמלבד ב DB (שבו אין הגבלה לאורך המחרוזת), בשאר סוגי המשתנים - אין לאתחל את המשתנה במחרוזת שאורכה עולה על שני תווים.
ע"מ ליצור משתנה לא מאותחל, יש לכתוב את התו ?.
ההוראה DUP
[עריכה]הוספת DUP להצהרת המשתנה, תיצור מערך, כלומר תיצור שכפול של הערך או הערכים שבתוך הסוגריים שלאחר המילה DUP.
למשל, מפת הזכרון של הפקודה: (Array DB 3 DUP(1,2 תראה כך: [1|2|1|2|1|2] (מימין לשמאל)
ניתן לקנן את ההוראה DUP עד 32 פעמים (מערך של מערכים). לדוג', ההוראה:
A DB 3 DUP(B DB 2 DUP(C DB 4 DUP(?)))
תקצה לתוכנית 24 בתים לא מאותחלים.
שיטות תצוגת מספרים
[עריכה]כברירת מחדל המספרים מוצגים בתצוגה עשרונית (בסיס 10) ע"מ להציג את המשתנים בצורת תצוגה אחרת יש להוסיף אות אחרי המילה לפי הכללים הבאים.
- B - תצוגה בינארית (בסיס 2). לדוג': 11110011B
- O - תצוגה אוקטאלית (בסיס 8). לדוג': 363O
- D - תצוגה דצימלית (בסיס 10). לדוג': 243D או 243
- H - תצוגה הקסהדצימלית (בסיס 16). אם מופיע אות ראשונה, יש להוסיף 0 לפני המספר. לדוג': 0F3H