אסמבלי x86/פקודות: הבדלים בין גרסאות בדף

תוכן שנמחק תוכן שנוסף
Crazy Ivan (שיחה | תרומות)
מ אסמבלי/פקודות הועבר לאסמבלי x86/פקודות: הספר עוסק באסמבלי x86
Crazy Ivan (שיחה | תרומות)
מ תיקון קישורים
שורה 1:
{{אסמבלי x86}}
הגם שתכנית האסמבלי שלך תרוץ גם ללא פקודות כלל, אין שום משמעות לתוכנית ללא פקודה. מכיוון שזו תצא מבלי לעשות דבר.<br />
תחביר כל הפקודות בשפת אסמבלי הוא כדלהלן:
<div style="text-align:left; direction:ltr;"><pre> COMMAND OpDestination, OpSource</pre></div>
כשבחלק מהפקודות (יפורט בהמשך) אין אופרנד מקור אלא רק יעד. (כגון פקודת [[אסמבלי/פקודות/פקודות חיבור וחיסור#פקודת INC|INC]]).
<br />נהוג לכתוב את הפקודת באותיות גדולות. ולהוסיף רווח קשיח (Tab) לפניה ולאחריה.<br />
'''חשוב לדעת:''' בכל הפקודות בעלי שני אופרנדים - אופרנד המקור חייב להיות זהה בגודלו לאופרנד היעד. אם אחד מהאופרנדים הינו יעד של כתובת זכרון, יש להורות למהדר במפורש למה הכוונה באמצעות האופרטור [[אסמבלי x86/אופרטורים#PTR|PTR]]. אחרת התוכנית לא תעבור את שלב הקומפילציה.<br /><br />
להלן רשימת כל הפקודות:
{| id=toc cellpadding=2 align="right" style="margin: 4px"
|-
|
*# [[אסמבלי/פקודות/פקודות בסיסיות|פקודות בסיסיות]]
*## [[אסמבלי/פקודות/פקודות בסיסיות#פקודת MOV|MOV (העתקה)]]
*## [[אסמבלי/פקודות/פקודות בסיסיות#פקודת XCHG|XCHG (החלפת ערכים)]]
*# [[אסמבלי/פקודות/פקודות חיבור וחיסור|פקודות חיבור וחיסור]]
*## [[אסמבלי/פקודות/פקודות חיבור וחיסור#פקודת ADD|ADD (חיבור)]]
*## [[אסמבלי/פקודות/פקודות חיבור וחיסור#פקודת SUB|SUB (חיסור)]]
*## [[אסמבלי/פקודות/פקודות חיבור וחיסור#פקודת CMP|CMP (השוואה)]]
*## [[אסמבלי/פקודות/פקודות חיבור וחיסור#פקודת INC|INC (הוספת 1)]]
*## [[אסמבלי/פקודות/פקודות חיבור וחיסור#פקודת DEC|DEC (הפחתת 1)]]
*## [[אסמבלי/פקודות/פקודות חיבור וחיסור#פקודת NEG|NEG (הפיכת סימן)]]
*## [[אסמבלי/פקודות/פקודות חיבור וחיסור#פקודת ADC|ADC (חיבור עם היעד והנשא)]]
*# [[אסמבלי/פקודות/פקודות כפל וחילוק|פקודות כפל וחילוק]]
*## [[אסמבלי/פקודות/פקודות כפל וחילוק#פקודת MUL|MUL (הכפלה)]]
*## [[אסמבלי/פקודות/פקודות כפל וחילוק#פקודת DIV|DIV (חילוק)]]
*## [[אסמבלי/פקודות/פקודות כפל וחילוק#פקודת IMUL|IMUL (הכפלת מס' מסומן)]]
*## [[אסמבלי/פקודות/פקודות כפל וחילוק#פקודת IDIV|IDIV (חילוק מס' מסומן)]]
*# [[אסמבלי/פקודות/פקודות על ביטים|פקודות על ביטים]]
*## [[אסמבלי/פקודות/פקודות על ביטים#פקודת AND|AND]]
*## [[אסמבלי/פקודות/פקודות על ביטים#פקודת TEST|TEST (פעולת AND ללא שינוי היעד)]]
*## [[אסמבלי/פקודות/פקודות על ביטים#פקודת OR|OR]]
*## [[אסמבלי/פקודות/פקודות על ביטים#פקודת XOR|XOR]]
*## [[אסמבלי/פקודות/פקודות על ביטים#פקודת NOT|NOT (הפיכת ביטים)]]
*## [[אסמבלי/פקודות/פקודות על ביטים#פקודת SHR|SHR (הזזה ימינה)]]
*## [[אסמבלי/פקודות/פקודות על ביטים#פקודת SHL|SHL (הזזה שמאלה)]]
*## [[אסמבלי/פקודות/פקודות על ביטים#פקודת ROR|ROR (גלילה ימינה)]]
*## [[אסמבלי/פקודות/פקודות על ביטים#פקודת ROL|ROL (גלילה שמאלה)]]
*## [[אסמבלי/פקודות/פקודות על ביטים#פקודת RCR|RCR (גלילה ימינה עם נשא)]]
*## [[אסמבלי/פקודות/פקודות על ביטים#פקודת RCL|RCL (גלילה שמאלה עם נשא)]]
*# [[אסמבלי/פקודות/פקודות קפיצה|פקודות קפיצה]]
*## [[אסמבלי/פקודות/פקודות קפיצה#פקודת JMP|JMP (קפיצה לא מותנית)]]
*## [[אסמבלי/פקודות/פקודות קפיצה#פקודת JNC|JNC (קפיצה אם אין נשא)]]
*## [[אסמבלי/פקודות/פקודות קפיצה#פקודת JE/JZ|JE/JZ (קפיצה אם שווה)]]
*## [[אסמבלי/פקודות/פקודות קפיצה#פקודת JNE/JNZ|JNE/JNZ (קפיצה אם שונה)]]
*## [[אסמבלי/פקודות/פקודות קפיצה#פקודת JA/JNBE|JA/JNBE (קפיצה אם מעל)]]
*## [[אסמבלי/פקודות/פקודות קפיצה#פקודת JAE/JNB|JAE/JNB (קפיצה אם מעל או שווה)]]
*## [[אסמבלי/פקודות/פקודות קפיצה#פקודת JB/JNAE/JC|JB/JNAE/JC (קפיצה אם מתחת)]]
*## [[אסמבלי/פקודות/פקודות קפיצה#פקודת JBE/JNA|JBE/JNA (קפיצה אם מתחת או שווה)]]
*## [[אסמבלי/פקודות/פקודות קפיצה#פקודת JG/JNLE|JG/JNLE (קפיצה אם גדול)]]
*## [[אסמבלי/פקודות/פקודות קפיצה#פקודת JGE/JNL|JGE/JNL (קפיצה אם גדול או שווה)]]
*## [[אסמבלי/פקודות/פקודות קפיצה#פקודת JL/JNGE|JL/JNGE (קפיצה אם קטן)]]
*## [[אסמבלי/פקודות/פקודות קפיצה#פקודת JLE/JNG|JLE/JNG (קפיצה אם קטן או שווה)]]
*## [[אסמבלי/פקודות/פקודות קפיצה#פקודת JO|JO (קפיצה אם יש גלישה)]]
*## [[אסמבלי/פקודות/פקודות קפיצה#פקודת JNO|JNO (קפיצה אם אין גלישה)]]
*## [[אסמבלי/פקודות/פקודות קפיצה#פקודת JS|JS (קפיצה אם המספר מסומן)]]
*## [[אסמבלי/פקודות/פקודות קפיצה#פקודת JNS|JNS (קפיצה אם המספר אינו מסומן)]]
*## [[אסמבלי/פקודות/פקודות קפיצה#פקודת JP/JPE|JP/JPE (קפיצה אם מס' הביטים הדלוקים זוגי)]]
*## [[אסמבלי/פקודות/פקודות קפיצה#פקודת JPO|JPO (קפיצה אם מס' הביטים הדלוקים ב-Low זוגי)]]
*## [[אסמבלי/פקודות/פקודות קפיצה#פקודת JNP|JNP (קפיצה אם מס' הביטים הדלוקים אי-זוגי)]]
*## [[אסמבלי/פקודות/פקודות קפיצה#פקודת JCXZ|JCXZ (קפיצה אם CX שווה 0)]]
*## [[אסמבלי/פקודות/פקודות קפיצה#פקודת LOOP|LOOP (הפחתת CX וקפיצה אם שונה מ 0)]]
*## [[אסמבלי/פקודות/פקודות קפיצה#פקודת LOOPE/LOOPZ|LOOPE/LOOPZ (הפחתת CX וקפיצה אם שונה מ 0 וגם ZF=1)]]
*## [[אסמבלי/פקודות/פקודות קפיצה#פקודת LOOPNE/LOOPNZ|LOOPNE/LOOPNZ (הפחתת CX וקפיצה אם שונה מ 0 וגם ZF=0)]]
*# [[אסמבלי/פקודות/פקודות מחרוזת|פקודות מחרוזת]]
*## [[אסמבלי/פקודות/פקודות מחרוזת#MOVSB/MOVSW|MOVSB/MOVSW (העתקה)]]
*## [[אסמבלי/פקודות/פקודות מחרוזת#STOSB/STOSW|STOSB/STOSW (אתחול)]]
*## [[אסמבלי/פקודות/פקודות מחרוזת#LODSB/LODSW|LODSB/LODSW (שליפה)]]
*## [[אסמבלי/פקודות/פקודות מחרוזת#CMPSB/CMPSW|CMPSB/CMPSW (השוואה למקור)]]
*## [[אסמבלי/פקודות/פקודות מחרוזת#SCASB/SCASW|SCASB/SCASW (השוואה לאוגר)]]
*## [[אסמבלי/פקודות/פקודות מחרוזת#REP|REP (חזרה על פקודת המחרוזת)]]
*## [[אסמבלי/פקודות/פקודות מחרוזת#REPE/REPZ|REPE/REPZ (חזרה על פקודת המחרוזת כל עוד שווים)]]
*## [[אסמבלי/פקודות/פקודות מחרוזת#REPNE/REPNZ|REPNE/REPNZ (חזרה על פקודת המחרוזת כל עוד אינם שווים)]]
*# [[אסמבלי/פקודות/פקודות שינוי דגלים|פקודות שינוי דגלים]]
*## [[אסמבלי/פקודות/פקודות שינוי דגלים#פקודת STC|STC (הדלקת דגל הנשא)]]
*## [[אסמבלי/פקודות/פקודות שינוי דגלים#פקודת CLC|CLC (כיבוי דגל הנשא)]]
*## [[אסמבלי/פקודות/פקודות שינוי דגלים#פקודת CF|CF (החזרת ערך דגל הנשא)]]
*## [[אסמבלי/פקודות/פקודות שינוי דגלים#פקודת STD|STD (הדלקת דגל הכיוון)]]
*## [[אסמבלי/פקודות/פקודות שינוי דגלים#פקודת CLD|CLD (כיבוי דגל הכיוון)]]
*## [[אסמבלי/פקודות/פקודות שינוי דגלים#פקודת STI|STI (הדלקת דגל הפסיקה)]]
*## [[אסמבלי/פקודות/פקודות שינוי דגלים#פקודת CLI|CLI (כיבוי דגל הפסיקה)]]
*# [[אסמבלי/פקודות/פקודות מחסנית|פקודות מחסנית]]
*## [[אסמבלי/פקודות/פקודות מחסנית#פקודת PUSH|PUSH (דחיפה)]]
*## [[אסמבלי/פקודות/פקודות מחסנית#פקודת POP|POP (שליפה)]]
*## [[אסמבלי/פקודות/פקודות מחסנית#פקודת PUSHA|PUSHA (דחיפת כל האוגרים)]]
*## [[אסמבלי/פקודות/פקודות מחסנית#פקודת POPA|POPA (שליפת כל האוגרים)]]
*## [[אסמבלי/פקודות/פקודות מחסנית#פקודת FPUSHF|PUSH (דחיפת כל הדגלים)]]
*## [[אסמבלי/פקודות/פקודות מחסנית#פקודת POPF|POPF (שליפת כל הדגלים)]]
*# [[אסמבלי/פקודות/פקודות שגרה|פקודות שגרה]]
*## [[אסמבלי/פקודות/פקודות שגרה#פקודת CALL|CALL (קריאה לפונקציה)]]
*## [[אסמבלי/פקודות/פקודות שגרה#פקודת RET|RET (צא מפונקציה קרובה)]]
*## [[אסמבלי/פקודות/פקודות שגרה#פקודת RETF|RETF (צא מפונקציה רחוקה)]]
*# [[אסמבלי/פקודות/פקודות נוספות|פקודות נוספות]]
*## [[אסמבלי/פקודות/פקודות נוספות#פקודת LEA|LEA (היסט משתנה)]]
*## [[אסמבלי/פקודות/פקודות נוספות#פקודת INT|INT (קיראה לפסיקה)]]
|}