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