אסמבלי 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