בלולאות ב-Assembly x86, נעשה שימוש בתוויות יחד עם פקודות קפיצה מותנות כדי לחזור על קטעי קוד שוב ושוב.
הלולאות משמשות לביצוע פעולות חוזרות עד שמתקיים תנאי מסוים או עד שתנאי אחר מתקיים.
זיהוי וכתיבת לולאות בקוד של אסמבלי הן יכולות חשובות.
במבחן מחשבון קרב של הסדנא המעשית תצטרכו לכתוב קוד עם לולאות.
בשלב המבחנים הראשון של גאמא סייבר תצטרכו לזהות לולאות, לספור כמה פעמים הן מתבצעות ולדעת מה יהיה פלט התוכנית.
פקודת LOOP שמפחיתה את הערך באוגר CX ב-1 בכל איטרציה, ולאחר מכן מבצעת קפיצה לתווית מוגדרת אם הערך של CX אינו 0. זו היא דרך פשוטה לחזור על קטעי קוד מספר קבוע של פעמים.
section .data
counter dw 5 - קובע את מספר החזרות ללולאה
section .text
global _start
_start:
MOV CX, [counter] - טוען את הערך של
CX
לתוך
counter
loop_start:
; כאן תבצע את הפעולה החוזרת
DEC CX - מקטין את
CX
ב 1
JNZ loop_start - אם
CX
אינו שווה ל 0 קופץ ל
loop_start
end:
MOV AX, 0x4C00 - סיום התוכנית עם קוד יציאה 0
INT 0x21 - קריאה למערכת לסיום התוכנית
לולאה אינסופית היא לולאה ללא תנאי עצירה, והיא מתבצעת ללא הגבלה עד שהמשתמש מפסיק את התוכנית או שמתקיימת פעולה כלשהי שתפסיק את התוכנית מבפנים.
section .text
global _start
_start:
infinite_loop:
; כאן תבצע את הפעולה החוזרת
JMP infinite_loop
במקרים בהם נדרש לצאת מהלולאה כאשר תנאי מסוים מתקיים, ניתן להשתמש בתוויות ובפקודות קפיצה מותנות כדי לשלוט על יציאה מהלולאה.
assembly
Copy code
section .data
num dw 10 - ערך ההתחלה
limit dw 0 - גבול התוצאה
section .text
global _start
_start:
MOV CX, [num] - טוען את הערך של num ל-CX
loop_start:
CMP CX, [limit] - משווה את CX ל-limit
JLE end_loop - אם CX קטן או שווה ל-limit, קופץ לסיום הלולאה
DEC CX - מקטין את CX ב-1
JMP loop_start - קופץ חזרה לתווית loop_start
end_loop:
MOV AX, 0x4C00 - סיום התוכנית עם קוד יציאה 0
INT 0x21 - קריאה למערכת לסיום התוכנית
ניתן לשלב לולאת LOOP עם תנאי נוסף כדי ליצור לולאה שמתבצעת עד שמתקיים גם תנאי על מספר האיטרציות וגם תנאי על ערכים מסוימים.
section .data
num dw 10 - ערך ההתחלה
limit dw 0 - גבול התוצאה
section .text
global _start
_start:
MOV CX, [num]
loop_start:
CMP CX, [limit]
JLE end_loop
DEC CX
JMP loop_start
end_loop:
MOV AX, 0x4C00 - סיום התוכנית עם קוד יציאה 0
INT 0x21 - קריאה למערכת לסיום התוכנית
לולאות בתכנות Assembly x86 נבנות באמצעות תוויות ופקודות קפיצה מותנות, ומאפשרות חזרה על קטעי קוד עד שמתקיימים תנאים מסוימים.
הבנת אופן השימוש בלולאות באמצעות תוויות מאפשרת כתיבת קוד יעיל וחסכוני, עם שליטה מדויקת בזרימת התוכנית.