labels - אסמבלי (מחשבון קרב)

שימוש בתוויות (Labels) ב-Assembly x86 עם אוגרים

תוויות (Labels) ב-Assembly הן נקודות ייחוס בקוד שאליהן ניתן לקפוץ (Jump) או להפנות. התוויות משמשות בעיקר לשליטה בזרימת התוכנית, כמו בביצוע לולאות, קריאות לפונקציות, או קפיצות מותנות.


דוגמה בסיסית לשימוש בתוויות

הקוד הבא מדגים שימוש בתוויות יחד עם אוגרים AX, BX, CX, ו-DX:

				
					section .data
    num1 dw 10
    num2 dw 20

section .text
    global _start

_start:
    MOV AX, [num1]    - טוען את הערך של num1 ל-AX
    MOV BX, [num2]    - טוען את הערך של num2 ל-BX

    CALL calculate_sum    - קורא לפונקציה calculate_sum

    JMP end_program       - קופץ לתווית end_program לסיום התוכנית

calculate_sum:
    ADD AX, BX            - מחבר את BX לערך של AX
    MOV DX, AX            - מעתיק את התוצאה ל-DX
    RET                   - חוזר מהפונקציה

end_program:
    MOV AX, 1             - מסיים את התוכנית
    INT 0x80              - קריאה למערכת ההפעלה לסיום התוכנית

				
			


הסבר על התוויות

  • _start: התווית הזו מציינת את נקודת ההתחלה של התוכנית. כאן מתחילה ביצוע התוכנית.
  • calculate_sum: התווית הזו מסמנת את תחילת הפונקציה שמבצעת חיבור בין שני ערכים. לאחר קריאה לפונקציה זו באמצעות CALL, התוכנית תמשיך את הביצוע מהתווית הזו.
  • end_program: תווית זו מסמנת את סוף התוכנית. הפקודה JMP מפנה את זרימת התוכנית לתווית הזו כדי לסיים את הביצוע

 

תודה! בזכותכם נוכל להשתפר