שפת Assembly היא שפת תכנות ברמה נמוכה המאפשרת שליטה מדויקת על החומרה.
ב-x86, ישנן פקודות בסיסיות רבות שמשמשות לביצוע פעולות חשבון, לוגיקה ושליטה על זרימת התוכנית.
במדריך זה נלמד את הפקודות MOV, ADD, SUB, AND, OR, ו-XOR.
במבחן מחשבון הקרב בסדנא המעשית של גאמא סייבר חלק גדול מהפקודות הללו יופיעו, אומנם בצורה קצת שונה כי המבחן יהיה על מעבד אחר.
אבל העקרונות הם זהים והתרגול הזה יעזור לכם בהכנה למבחן.
פקודת MOV משמשת להעברת נתונים מאוגר (Register) אחד לאחר, או בין אוגר לזיכרון ולהפך.
דוגמאות:
MOV EAX, EBX - מעביר את הערך של
EBX
לתוך האוגר
EAX
MOV [EBX], EAX -מעביר את הערך של
EAX
לכתובת בזכרון ששמורה באוגר
EBX
MOV ECX, 10 - מעביר את הערך 10 לאוגר
ECX
MOV [1000], EDX - מעביר את הערך של האוגר
EDX
לכתובת 1000 בזגרון
פקודת ADD משמשת להוספת שני ערכים ושמירת התוצאה באוגר היעד.
דוגמאות:
ADD EAX, EBX - מחבר מתמטית את הערכים שנמצאים בשני האוגרים ושומר את התוצאה באוגר
EAX
ADD EAX, 5
פקודת SUB משמשת לחיסור ערך אחד מערך אחר ושמירת התוצאה באוגר היעד.
דוגמאות:
SUB EAX, EBX
SUB EAX, 3
פקודת AND מבצעת פעולת AND ביטוית בין שני ערכים ושומרת את התוצאה באוגר היעד. פעולת AND מחזירה 1 רק כאשר שני הביטים הם 1, אחרת מחזירה 0.
שימו לב שהפעולה בתבצעת על כל אחד מהביטים באוגר.
דוגמאות:
AND EAX, EBX
AND EAX, 0Fh
פקודת OR מבצעת פעולת OR ביטוית בין שני ערכים ושומרת את התוצאה באוגר היעד. פעולת OR מחזירה 1 אם לפחות אחד מהביטים הוא 1.
שימו לב שהפעולה בתבצעת על כל אחד מהביטים באוגר.
דוגמאות:
OR EAX, EBX
OR EAX, 01h
פקודת XOR מבצעת פעולת XOR ביטוית בין שני ערכים ושומרת את התוצאה באוגר היעד. פעולת XOR מחזירה 1 כאשר הביטים שונים (אחד מהם 1 והשני 0), ו-0 כאשר הם זהים.
שימו לב שהפעולה בתבצעת על כל אחד מהביטים באוגר.
דוגמאות:
XOR EAX, EBX
XOR EAX, EAX
פקודות אלה הן מהפקודות הבסיסיות והנפוצות ביותר ב-Assembly x86. הן משמשות לשליטה ישירה באוגרים, לבצע פעולות אריתמטיות ולוגיות, ולשלוט בזרימת התוכנית.
היכולת להבין וליישם את הפקודות הללו היא קריטית לכתיבת קוד Assembly יעיל ומדויק.