אסמבלי (מחשבון קרב) - פעולות בסיסיות

שפת Assembly היא שפת תכנות ברמה נמוכה המאפשרת שליטה מדויקת על החומרה.
ב-x86, ישנן פקודות בסיסיות רבות שמשמשות לביצוע פעולות חשבון, לוגיקה ושליטה על זרימת התוכנית.

במדריך זה נלמד את הפקודות MOV, ADD, SUB, AND, OR, ו-XOR.

במבחן מחשבון הקרב בסדנא המעשית של גאמא סייבר חלק גדול מהפקודות הללו יופיעו, אומנם בצורה קצת שונה כי המבחן יהיה על מעבד אחר.
אבל העקרונות הם זהים והתרגול הזה יעזור לכם בהכנה למבחן.


פקודת MOV

פקודת MOV משמשת להעברת נתונים מאוגר (Register) אחד לאחר, או בין אוגר לזיכרון ולהפך.

דוגמאות:

				
					MOV EAX, EBX   - מעביר את הערך של 
                            EBX
                       לתוך האוגר 
                            EAX
MOV [EBX], EAX -מעביר את הערך של 
                           EAX
         לכתובת בזכרון ששמורה באוגר
                           EBX
MOV ECX, 10    - מעביר את הערך 10 לאוגר
                                 ECX
MOV [1000], EDX - מעביר את הערך של האוגר
                                 EDX
                      לכתובת 1000 בזגרון

				
			

 

פקודת ADD

פקודת ADD משמשת להוספת שני ערכים ושמירת התוצאה באוגר היעד.

דוגמאות:

				
					ADD EAX, EBX - מחבר מתמטית את הערכים שנמצאים בשני האוגרים ושומר את התוצאה באוגר
                                                                 EAX
ADD EAX, 5   

				
			

 

פקודת SUB

פקודת SUB משמשת לחיסור ערך אחד מערך אחר ושמירת התוצאה באוגר היעד.

דוגמאות:

				
					
SUB EAX, EBX   
SUB EAX, 3  

				
			


פקודת AND

פקודת AND מבצעת פעולת AND ביטוית בין שני ערכים ושומרת את התוצאה באוגר היעד. פעולת AND מחזירה 1 רק כאשר שני הביטים הם 1, אחרת מחזירה 0.
שימו לב שהפעולה בתבצעת על כל אחד מהביטים באוגר.

דוגמאות:

				
					AND EAX, EBX
AND EAX, 0Fh

				
			


פקודת OR

פקודת OR מבצעת פעולת OR ביטוית בין שני ערכים ושומרת את התוצאה באוגר היעד. פעולת OR מחזירה 1 אם לפחות אחד מהביטים הוא 1.
שימו לב שהפעולה בתבצעת על כל אחד מהביטים באוגר.

דוגמאות:

				
					OR EAX, EBX
OR EAX, 01h
				
			


פקודת XOR

פקודת XOR מבצעת פעולת XOR ביטוית בין שני ערכים ושומרת את התוצאה באוגר היעד. פעולת XOR מחזירה 1 כאשר הביטים שונים (אחד מהם 1 והשני 0), ו-0 כאשר הם זהים.
שימו לב שהפעולה בתבצעת על כל אחד מהביטים באוגר.

 

דוגמאות:

				
					XOR EAX, EBX
XOR EAX, EAX
				
			


סיכום

פקודות אלה הן מהפקודות הבסיסיות והנפוצות ביותר ב-Assembly x86. הן משמשות לשליטה ישירה באוגרים, לבצע פעולות אריתמטיות ולוגיות, ולשלוט בזרימת התוכנית.
היכולת להבין וליישם את הפקודות הללו היא קריטית לכתיבת קוד Assembly יעיל ומדויק.

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