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