Professional Documents
Culture Documents
Bitwise Instructions Shifts
Bitwise Instructions Shifts
medium.com/@danielfonkaz
and
מבצעת פעולת "וגם" על כל ביט בנפרד באופרנד המקור מול הביט המתאים לו באופרנד
היעד .התוצאה נשמרת באוגר היעד (השמאלי) .פעולת "וגם" מוגדרת כך שהביט בתוצאה
יהיה 1רק אם שני הביטים המתאימים באופרנד המקור והאופרנד היעד היו .1
לדוגמה:
mov al, 01010011b
mov bl, 11110101b
and al, bl
© דניאל פונכץ 0202
medium.com/@danielfonkaz
הסבר:
0 1 0 1 0 0 1 1 מקור
()bl
1 1 1 1 0 1 0 1 יעד
()al
לא כן לא כן לא לא לא כן שני
הביטים
?1
0 1 0 1 0 0 0 1 תוצאה
()al
השפעה על דגלים
or
מבצעת פעולת "או" על כל ביט בנפרד באופרנד המקור מול הביט המתאים לו באופרנד
היעד .התוצאה נשמרת באוגר היעד (השמאלי) .פעולת "או" מוגדרת כך שהביט בתוצאה
יהיה 1רק אם אחד או יותר משני הביטים המתאימים באופרנד המקור והאופרנד היעד
היו .1
לדוגמה:
mov al, 01010011b
mov bl, 11110101b
or bl, al
התוצאה al( bl = 11110111b :נותר ללא שינוי).
הסבר:
0 1 0 1 0 0 1 1 מקור
()al
1 1 1 1 0 1 0 1 יעד
()bl
כן כן כן כן לא כן כן כן לפחות
אחד
משני
הביטים
?1
1 1 1 1 2 1 1 1 תוצאה
()bl
השפעה על דגלים
xor
מבצעת פעולת "או אקסקלוסיבי" על כל ביט בנפרד באופרנד המקור מול הביט המתאים
לו באופרנד היעד .התוצאה נשמרת באוגר היעד (השמאלי) .פעולת "או אקסקלוסיבי"
מוגדרת כך שהביט בתוצאה יהיה 1רק אם בדיוק אחד משני הביטים המתאימים
באופרנד המקור והאופרנד היעד היו .1
לדוגמה:
mov al, 01010011b
mov bl, 11110101b
xor bl, al
התוצאה al( bl = 10100110b :נותר ללא שינוי).
הסבר:
0 1 0 1 0 0 1 1 מקור
()al
1 1 1 1 0 1 0 1 יעד
()bl
כן לא כן לא לא כן כן לא בדיוק
אחד
משני
הביטים
?1
1 2 1 2 2 1 1 2 תוצאה
()bl
השפעה על דגלים
© דניאל פונכץ 0202
medium.com/@danielfonkaz
not
הפעולה מקבלת אופרנד (פרמטר) אחד כאשר האפשרויות הן:
רגיסטר. .I
לדוגמהnot ax :
משתנה. .II
לדוגמהnot [x] :
ערך בזכרון. .III
לדוגמהnot [byte ptr bx] :
שימו לב :שימוש בקבוע אינו חוקי. .IV
not 5
הפעולה מבצת פעולת "שלילה" על כל הביטים של אופרנד היעד ושומרת את התוצאה
באופרנד .פעולת "שלילה" מוגדרת כך שהביט בתוצאה יהיה הפוך לביט המתאים
באופרנד היעד.
לדוגמה:
mov al, 01010011b
not al
התוצאה.al = 10101100b :
© דניאל פונכץ 0202
medium.com/@danielfonkaz
הסבר:
0 1 0 1 0 0 1 1 יעד
()al
1 2 1 2 1 1 0 2 תוצאה
השפעה על דגלים
דגל הגלישה דגל הסימן דגל האפס דגל הנשא שם בעברית
אין השפעה ערך לאחר הפעולה אין השפעה אין השפעה אין השפעה
הזזות ()Shifts
כל הוראות ההזזה מקבלות 0אופרנדים (פרמטרים) .האופרנד השמאלי (היעד) יעבור
את ההזזה והאופרנד הימני (המקור) מציין את מספר ההזזות שיבוצעו .השילובים
האפשריים הם:
רגיסטר מול ערך קבוע בתחום ( 1-11כולל) או מול הריגסטר ( clבלבד) . .I
לדוגמה shl al, 2 :או rcr al, cl
משתנה מול ערך קבוע בתחום ( 1-11כולל) או מול הריגסטר ( clבלבד) . .II
לדוגמה shr [x], 2 :או sar [x], cl
ערך בזכרון מול ערך קבוע בתחום ( 1-11כולל) או מול הריגסטר ( clבלבד). .III
לדוגמה ror [byte ptr bx], 3 :או sal [word ptr bx], cl
שימו לב :אם אופרנד המקור (הימני) שמציין את מספר ההזות הוא רגיסטר, .IV
עליו להיות clבלבד (הערך ב cl-יכול להיות בתחום 2-011כרגיל) .כל רגיסטר
אחר כאופרנד מקור אינו חוקי.
© דניאל פונכץ 0202
medium.com/@danielfonkaz
shl
מבצעת הזזה שמאלה של אופרנד היעד (השמאלי) כמספר הפעמים שצוין באופרנד
המקור (הימני).
כל הזזה מסיטה את כל הביטים באופרנד היעד צעד אחד שמאלה ,כאשר הביט הכי גבוה
(שמאלי) נכנס לתוך דגל הנשא ( )CFובמקום הביט הכי נמוך (הימני) נכנס .2
התהליך לעיל מתבצע כמספר הפעמים שצוין באופרנד המקור.
לדוגמה:
mov al, 01010011b
shl al, 2
התוצאה ,al = 01001100b :ודגל הנשא ( )CFיהיה דלוק (.)1
הסבר:
? CF - 0 1 0 1 0 0 1 1 יעד
()al
CF - 0 1 0 1 0 0 1 1 0 יעד
לאחר
הזזה
אחת
CF - 1 0 1 0 0 1 1 0 0 יעד
לאחר
שתי
הזזות
(תוצאה
סופית)
© דניאל פונכץ 0202
medium.com/@danielfonkaz
השפעה על דגלים
shr
מבצעת הזזה ימינה של אופרנד היעד (השמאלי) כמספר הפעמים שצוין באופרנד המקור
(הימני).
כל הזזה מסיטה את כל הביטים באופרנד היעד צעד אחד ימינה ,כאשר הביט הכי נמוך
(ימני) נכנס לתוך דגל הנשא ( )CFובמקום הביט הכי גבוה (השמאלי) נכנס .2
התהליך לעיל מתבצע כמספר הפעמים שצוין באופרנד המקור.
לדוגמה:
mov bl, 01010011b
shr bl, 2
התוצאה ,bl = 00010100b :ודגל הנשא ( )CFיהיה דלוק (.)1
הסבר:
© דניאל פונכץ 0202
medium.com/@danielfonkaz
? CF - 0 1 0 1 0 0 1 1 יעד
()bl
CF - 1 0 0 1 0 1 0 0 1 יעד
לאחר
הזזה
אחת
CF - 1 0 0 0 1 0 1 0 0 יעד
לאחר
שתי
הזזות
(תוצאה
סופית)
השפעה על דגלים
sal
מבצעת הזזה שמאלה של אופרנד היעד (השמאלי) כמספר הפעמים שצוין באופרנד
המקור (הימני).
© דניאל פונכץ 0202
medium.com/@danielfonkaz
כל הזזה מסיטה את כל הביטים באופרנד היעד צעד אחד שמאלה ,כאשר הביט הכי גבוה
(שמאלי) נכנס לתוך דגל הנשא ( )CFובמקום הביט הכי נמוך (הימני) נכנס .2
התהליך לעיל מתבצע כמספר הפעמים שצוין באופרנד המקור.
ההוראה salשקולה לחלוטין להוראה .shl
לדוגמה:
mov al, 01010011b
sal al, 2
התוצאה ,al = 01001100b :ודגל הנשא ( )CFיהיה דלוק (.)1
הסבר:
? CF - 0 1 0 1 0 0 1 1 יעד
()al
CF - 0 1 0 1 0 0 1 1 0 יעד
לאחר
הזזה
אחת
CF - 1 0 1 0 0 1 1 0 0 יעד
לאחר
שתי
הזזות
(תוצאה
סופית)
השפעה על דגלים
OF SF ZF CF שם
מקוצר
Overflow Flag Sign Flag Zero Flag Carry Flag שם מלא
1אם הסיבית אם מספר ההזזות הוא ,1 1אם ערך הביט ערך
ערך הדגל הוא תוצאת הגבוהה התוצאה הכי גבוה לאחר
XORבין הסיבית הגבוהה בתוצאה היא ,0 לפני ההזזה הפעולה
בתוצאה ודגל הנשא אחרת 0דלוקה ,אחרת האחרונה
(לאחר הפעולה); אחרת, 0
ערך הדגל אינו מוגדר
הדגלים אינם מושפעים אם מספר ההזזות הוא 0
sar
מבצעת הזזה ימינה של אופרנד היעד (השמאלי) כמספר הפעמים שצוין באופרנד המקור
(הימני).
כל הזזה מסיטה את כל הביטים באופרנד היעד צעד אחד ימינה ,כאשר הביט הכי נמוך
(ימני) נכנס לתוך דגל הנשא ( )CFובמקום הביט הכי גבוה (השמאלי) נכנס הערך של
הביט שהיה הכי גבוה קודם להזזה (הביט הכי גבוה "נמרח").
התהליך לעיל מתבצע כמספר הפעמים שצוין באופרנד המקור.
לדוגמה:
mov bl, 11010010b
sar bl, 2
התוצאה ,bl = 11110100b :ודגל הנשא ( )CFיהיה דלוק (.)1
הסבר:
? CF - 1 1 0 1 0 0 1 0 יעד
()bl
CF - 0 1 1 1 0 1 0 0 1 יעד
לאחר
הזזה
אחת
CF - 1 1 1 1 1 0 1 0 0 יעד
לאחר
שתי
הזזות
© דניאל פונכץ 0202
medium.com/@danielfonkaz
(תוצאה
סופית)
השפעה על דגלים
rol
מבצעת הזזה מעגלית שמאלה של אופרנד היעד (השמאלי) כמספר הפעמים שצוין
באופרנד המקור (הימני).
כל הזזה מסיטה את כל הביטים באופרנד היעד צעד אחד שמאלה ,כאשר ערך הביט הכי
גבוה (שמאלי) נכנס הן לתוך דגל הנשא ( )CFוהן למקום הביט הכי נמוך (הימני).
התהליך לעיל מתבצע כמספר הפעמים שצוין באופרנד המקור.
לדוגמה:
mov al, 01010001b
rol al, 2
התוצאה ,al = 01000101b :ודגל הנשא ( )CFיהיה דלוק (.)1
הסבר:
? CF - 0 1 0 1 0 0 0 1 יעד
()al
© דניאל פונכץ 0202
medium.com/@danielfonkaz
CF - 0 1 0 1 0 0 0 1 0 יעד
לאחר
הזזה
אחת
CF - 1 0 1 0 0 0 1 0 1 יעד
לאחר
שתי
הזזות
(תוצאה
סופית)
השפעה על דגלים
ror
מבצעת הזזה מעגלית ימינה של אופרנד היעד (השמאלי) כמספר הפעמים שצוין
באופרנד המקור (הימני).
© דניאל פונכץ 0202
medium.com/@danielfonkaz
כל הזזה מסיטה את כל הביטים באופרנד היעד צעד אחד ימינה ,כאשר ערך הביט הכי
נמוך (ימני) נכנס הן לתוך דגל הנשא ( )CFוהן למקום הביט הכי גבוה (השמאלי).
התהליך לעיל מתבצע כמספר הפעמים שצוין באופרנד המקור.
לדוגמה:
mov al, 01010001b
ror al, 2
התוצאה ,al = 01010100b :ודגל הנשא ( )CFיהיה כבוי (.)0
הסבר:
? CF - 0 1 0 1 0 0 0 1 יעד
()al
CF - 1 1 0 1 0 1 0 0 0 יעד
לאחר
הזזה
אחת
CF - 0 0 1 0 1 0 1 0 0 יעד
לאחר
שתי
הזזות
(תוצאה
סופית)
השפעה על דגלים
אם מספר ההזזות הוא ,1ערך אינו אינו ערך הביט הכי ערך
הדגל הוא תוצאת XORבין מושפע מושפע נמוך לפני לאחר
הסיבית הגבוהה בתוצאה והסיבית ההזזה הפעולה
השניה הגבוהה בתוצאה (הסמוכה האחרונה
לה); אחרת ערך הדגל אינו מוגדר
rcl
מבצעת הזזה מעגלית שמאלה של אופרנד היעד (השמאלי) כמספר הפעמים שצוין
באופרנד המקור (הימני).
כל הזזה מסיטה את כל הביטים באופרנד היעד צעד אחד שמאלה ,כאשר ערך דגל
הנשא המקורי ( )CFנכנס למקום הביט הכי נמוך (הימני) וערך הביט הכי גבוה (השמאלי)
לפני ההזזה נכנס לתוך דגל הנשא (.)CF
חשוב לדעת מה ערך דגל הנשא ( )CFלפני ההזזה ,מאחר והוא משפיע עליה.
התהליך לעיל מתבצע כמספר הפעמים שצוין באופרנד המקור.
לדוגמה:
הוראה זו מדליקה את דגל הנשא (משנה את ערכו לstc ; )1-
mov al, 01010001b
rcl al, 2
התוצאה ,al = 01000110b :ודגל הנשא ( )CFיהיה דלוק (.)1
הסבר:
CF - 1 0 1 0 1 0 0 0 1 יעד
()al
CF - 0 1 0 1 0 0 0 1 1 יעד
לאחר
הזזה
אחת
CF - 1 0 1 0 0 0 1 1 0 יעד
לאחר
שתי
הזזות
© דניאל פונכץ 0202
medium.com/@danielfonkaz
(תוצאה
סופית)
השפעה על דגלים
rcr
מבצעת הזזה מעגלית ימינה של אופרנד היעד (השמאלי) כמספר הפעמים שצוין
באופרנד המקור (הימני).
כל הזזה מסיטה את כל הביטים באופרנד היעד צעד אחד ימינה ,כאשר ערך דגל הנשא
המקורי ( )CFנכנס למקום הביט הכי גבוה (השמאלי) וערך הביט הכי נמוך (הימני) לפני
ההזזה נכנס לתוך דגל הנשא (.)CF
חשוב לדעת מה ערך דגל הנשא ( )CFלפני ההזזה ,מאחר והוא משפיע עליה.
התהליך לעיל מתבצע כמספר הפעמים שצוין באופרנד המקור.
לדוגמה:
הוראה זו מדליקה את דגל הנשא (משנה את ערכו לstc ; )1-
© דניאל פונכץ 0202
medium.com/@danielfonkaz
השפעה על דגלים