אסמבלי x86/פקודות/פקודות קפיצה

מתוך ויקיספר, אוסף הספרים והמדריכים החופשי
אסמבלי x86











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

פקודת JMP

קפיצה בלתי מותנית לתווית label.
פרמטרים: תוית
תחביר: JMP label
לדוגמה: JMP label1 ; קופץ לשורה המסומנת ב label1
אלגוריתם: IP=השורה אליה משוייכת התווית label1



פקודת JNC

קפיצה לתוווית label בתנאי שדגל הנשא כבוי.
פרמטרים: תוית
תחביר: JNC label
לדוגמה: JNC label1 ; קופץ לשורה המסומנת ב label1 בתנאי שדגל הנשא כבוי
אלגוריתם: IP=השורה אליה משוייכת התווית label1 אם CF=0



פקודת JE/JZ

קפיצה לתוווית label בתנאי שדגל האפס דלוק (תוצאת שווה בפקודה CMP).
פרמטרים: תוית
תחביר: JE label או JZ label1
לדוגמה: JZ label1 ; קופץ לשורה המסומנת ב label1 בתנאי שדגל אפס דלוק
אלגוריתם: IP=השורה אליה משוייכת התווית label1 אם ZF=1



פקודת JNE/JNZ

קפיצה לתוווית label בתנאי שדגל האפס כבוי (תוצאת לא שווה בפקודת CMP).
פרמטרים: תוית
תחביר: JNE label או JNZ label1
לדוגמה: JNZ label1 ; קופץ לשורה המסומנת ב label1 בתנאי שדגל אפס כבוי
אלגוריתם: IP=השורה אליה משוייכת התווית label1 אם ZF=0



פקודת JA/JNBE

קפיצה לתוווית label בתנאי שדגל האפס כבוי וגם דגל הנשא כבוי (תוצאת גדול מ בפקודת CMP).
פרמטרים: תוית
תחביר: JA label או JNBE label1
לדוגמה: JA label1 ; קופץ לשורה המסומנת ב label1 בתנאי שדגל אפס כבוי וגם דגל הנשא גבוי
אלגוריתם: IP=השורה אליה משוייכת התווית label1 אם ZF=0 AND CF=0



פקודת JAE/JNB

קפיצה לתוווית label בתנאי שדגל הנשא כבוי (תוצאת גדול או שווה בפקודת CMP).
פרמטרים: תוית
תחביר: JAE label או JNB label1
לדוגמה: JNB label1 ; קופץ לשורה המסומנת ב label1 בתנאי שדגל הנשא כבוי
אלגוריתם: IP=השורה אליה משוייכת התווית label1 אם CF=0



פקודת JB/JNAE/JC

קפיצה לתוווית label בתנאי שדגל הנשא דלוק (תוצאת קטן מ בפקודת CMP).
פרמטרים: תוית
תחביר: JNAE label או JB label1 או JC label1
לדוגמה: JB label1 ; קופץ לשורה המסומנת ב label1 בתנאי שדגל הנשא דלוק
אלגוריתם: IP=השורה אליה משוייכת התווית label1 אם CF=1



פקודת JBE/JNA

קפיצה לתוווית label בתנאי שדגל האפס דלוק וגם דגל הנשא דלוק (תוצאת קטן או שווה בפקודת CMP).
פרמטרים: תוית
תחביר: JNA label או JBE label1
לדוגמה: JBE label1 ; קופץ לשורה המסומנת ב label1 בתנאי שדגל האפס דלוק וגם דגל הנשא דלוק
אלגוריתם: IP=השורה אליה משוייכת התווית label1 אם ZF=1 AND CF=1



פקודת JG/JNLE

קפיצה לתוווית label בתנאי שדגל האפס כבוי וגם דגל הסימן כבוי (תוצאת גדול מ בפקודת CMP).
פרמטרים: תוית
תחביר: JNLE label או JG label1
לדוגמה: JG label1 ; קופץ לשורה המסומנת ב label1 בתנאי שדגל האפס כבוי וגם דגל הסימן כבוי
אלגוריתם: IP=השורה אליה משוייכת התווית label1 אם ZF=0 AND SF=0



פקודת JGE/JNL

קפיצה לתוווית label בתנאי שדגל הסימן כבוי (תוצאת גדול או שווה בפקודת CMP).
פרמטרים: תוית
תחביר: JNL label או JGE label1
לדוגמה: JGE label1 ; קופץ לשורה המסומנת ב label1 בתנאי שדגל הסימן כבוי
אלגוריתם: IP=השורה אליה משוייכת התווית label1 אם SF=0



פקודת JL/JNGE

קפיצה לתוווית label בתנאי שדגל הסימן שונה מדגל הגלישה (תוצאת קטן מ בפקודת CMP).
פרמטרים: תוית
תחביר: JL label או JNGE label1
לדוגמה: JNGE label1 ; קופץ לשורה המסומנת ב label1 בתנאי שדגל הסימן שונה מדגל הגלישה
אלגוריתם: IP=השורה אליה משוייכת התווית label1 אם SF<>OF



פקודת LE/JNG

קפיצה לתוווית label בתנאי שדגל האפס דלוק (תוצאת קטן או שווה בפקודת CMP).
פרמטרים: תוית
תחביר: JE label או JNG label1
לדוגמה: JNG label1 ; קופץ לשורה המסומנת ב label1 בתנאי שדגל האפס דלוק
אלגוריתם: IP=השורה אליה משוייכת התווית label1 אם ZF=1



פקודת JO

קפיצה לתוווית label בתנאי שדגל הגלישה דלוק.
פרמטרים: תוית
תחביר: JO label
לדוגמה: JO label1 ; קופץ לשורה המסומנת ב label1 בתנאי שדגל הגלישה דלוק
אלגוריתם: IP=השורה אליה משוייכת התווית label1 אם OF=1



פקודת JNO

קפיצה לתוווית label בתנאי שדגל הגלישה כבוי.
פרמטרים: תוית
תחביר: JNO label
לדוגמה: JNO label1 ; קופץ לשורה המסומנת ב label1 בתנאי שדגל הגלישה כבוי
אלגוריתם: IP=השורה אליה משוייכת התווית label1 אם OF=0



פקודת JS

קפיצה לתוווית label בתנאי שדגל הסימן דלוק.
פרמטרים: תוית
תחביר: JS label
לדוגמה: JS label1 ; קופץ לשורה המסומנת ב label1 בתנאי שדגל הסימן דלוק
אלגוריתם: IP=השורה אליה משוייכת התווית label1 אם SF=1



פקודת JNS

קפיצה לתוווית label בתנאי שדגל הסימן כבוי.
פרמטרים: תוית
תחביר: JNS label
לדוגמה: JNS label1 ; קופץ לשורה המסומנת ב label1 בתנאי שדגל הסימן כבוי
אלגוריתם: IP=השורה אליה משוייכת התווית label1 אם SF=0



פקודת JP/JPE

קפיצה לתוווית label בתנאי שדגל הזוגי דלוק.
פרמטרים: תוית
תחביר: JP label או JPE label
לדוגמה: JP label1 ; קופץ לשורה המסומנת ב label1 בתנאי שדגל הזוגי כבוי
אלגוריתם: IP=השורה אליה משוייכת התווית label1 אם PF=1



פקודת JP/JPE[עריכה]

(קפיצה אם מס' הביטים הדלוקים זוגי)

פקודת JPO[עריכה]

(קפיצה אם מס' הביטים הדלוקים ב-Low זוגי)

פקודת JNP[עריכה]

(קפיצה אם מס' הביטים הדלוקים אי-זוגי)

פקודת JCXZ[עריכה]

(קפיצה אם CX שווה 0)

פקודת LOOP[עריכה]

(הפחתת CX וקפיצה אם CX כעת שונה מ 0) דוגמא:

MyLabel

{...}

loop MyLabel

פקודת LOOPE/LOOPZ[עריכה]

(הפחתת CX וקפיצה ללולאה אם CX כעת שונה מ 0 וגם ZF=1, כמובן שמדובר על הZF לפני הפחתת הCX).

פקודת LOOPNE/LOOPNZ[עריכה]

(הפחתת CX וקפיצה ללולאה אם CX כעת שונה מ 0 וגם ZF=0, כמובן שמדובר על הZF לפני הפחתת הCX).