Download as pdf or txt
Download as pdf or txt
You are on page 1of 17

‫© דניאל פונכץ ‪0202‬‬

‫‪medium.com/@danielfonkaz‬‬

‫פעולות על ביטים (‪ )Bitwise Instructions‬והזזות (‪)Shifts‬‬


‫פעולות על ביטים (‪)Bitwise Instructions‬‬

‫כל הפעולות על ביטים למעט ‪ not‬מקבלות ‪ 0‬אופרנדים (פרמטרים) כאשר השילובים‬


‫האפשריים הם‪:‬‬
‫רגיסטר מול רגיסטר אחר באותו הגודל‪.‬‬ ‫‪.I‬‬
‫לדוגמה‪and ax, bx :‬‬
‫רגיסטר מול משתנה באותו הגודל‪.‬‬ ‫‪.II‬‬
‫לדוגמה‪ or al, [x] :‬או ‪or [x], al‬‬
‫רגיסטר מול ערך בזכרון באותו הגודל‪.‬‬ ‫‪.III‬‬
‫‪ .IV‬לדוגמה‪ and al, [bx] :‬או ‪and [bx], al‬‬
‫רגיסטר מול ערך קבוע‪.‬‬ ‫‪.V‬‬
‫לדוגמה‪( and al, 5 :‬אך לא ‪)and 5, al‬‬
‫‪ .VI‬משתנה מול ערך קבוע‪.‬‬
‫לדוגמה‪( xor [x], 7 :‬אך לא ]‪)xor 7, [x‬‬
‫‪ .VII‬ערך בזכרון מול ערך קבוע‪.‬‬
‫לדוגמה‪( xor [byte ptr bx], 7 :‬אך לא ]‪)xor 7, [byte ptr bx‬‬
‫‪ .VIII‬שימו לב‪ :‬קבוע מול קבוע אינו חוקי‪.‬‬
‫‪and 5, 7‬‬

‫‪and‬‬
‫מבצעת פעולת "וגם" על כל ביט בנפרד באופרנד המקור מול הביט המתאים לו באופרנד‬
‫היעד‪ .‬התוצאה נשמרת באוגר היעד (השמאלי)‪ .‬פעולת "וגם" מוגדרת כך שהביט בתוצאה‬
‫יהיה ‪ 1‬רק אם שני הביטים המתאימים באופרנד המקור והאופרנד היעד היו ‪.1‬‬
‫לדוגמה‪:‬‬
‫‪mov al, 01010011b‬‬
‫‪mov bl, 11110101b‬‬
‫‪and al, bl‬‬
‫© דניאל פונכץ ‪0202‬‬
‫‪medium.com/@danielfonkaz‬‬

‫התוצאה‪ bl( al = 01010001b :‬נותר ללא שינוי)‪.‬‬

‫הסבר‪:‬‬
‫‪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‬‬

‫השפעה על דגלים‬

‫‪OF‬‬ ‫‪SF‬‬ ‫‪ZF‬‬ ‫‪CF‬‬ ‫שם מקוצר‬


‫‪Overflow‬‬ ‫‪Sign Flag‬‬ ‫‪Zero Flag‬‬ ‫‪Carry‬‬ ‫שם מלא‬
‫‪Flag‬‬ ‫‪Flag‬‬

‫דגל הגלישה‬ ‫דגל הסימן‬ ‫דגל האפס‬ ‫שם בעברית דגל‬


‫הנשא‬
‫‪0‬‬ ‫‪ 1‬אם הסיבית הגבוהה‬ ‫‪ 1‬אם התוצאה‬ ‫‪0‬‬ ‫ערך לאחר‬
‫בתוצאה דלוקה‪ ,‬אחרת‬ ‫היא ‪ ,0‬אחרת ‪0‬‬ ‫הפעולה‬
‫‪0‬‬
‫© דניאל פונכץ ‪0202‬‬
‫‪medium.com/@danielfonkaz‬‬

‫‪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‬‬

‫השפעה על דגלים‬

‫‪OF‬‬ ‫‪SF‬‬ ‫‪ZF‬‬ ‫‪CF‬‬ ‫שם מקוצר‬


‫‪Overflow‬‬ ‫‪Sign Flag‬‬ ‫‪Zero Flag‬‬ ‫‪Carry‬‬ ‫שם מלא‬
‫‪Flag‬‬ ‫‪Flag‬‬
‫© דניאל פונכץ ‪0202‬‬
‫‪medium.com/@danielfonkaz‬‬

‫דגל הגלישה‬ ‫דגל הסימן‬ ‫דגל האפס‬ ‫שם בעברית דגל‬


‫הנשא‬
‫‪0‬‬ ‫‪ 1‬אם הסיבית הגבוהה‬ ‫‪ 1‬אם התוצאה‬ ‫‪0‬‬ ‫ערך לאחר‬
‫בתוצאה דלוקה‪ ,‬אחרת‬ ‫היא ‪ ,0‬אחרת ‪0‬‬ ‫הפעולה‬
‫‪0‬‬

‫‪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‬‬

‫‪OF‬‬ ‫‪SF‬‬ ‫‪ZF‬‬ ‫‪CF‬‬ ‫שם מקוצר‬


‫‪Overflow‬‬ ‫‪Sign Flag‬‬ ‫‪Zero Flag‬‬ ‫‪Carry‬‬ ‫שם מלא‬
‫‪Flag‬‬ ‫‪Flag‬‬

‫דגל הגלישה‬ ‫דגל הסימן‬ ‫דגל האפס‬ ‫דגל‬ ‫שם בעברית‬


‫הנשא‬
‫‪0‬‬ ‫‪ 1‬אם הסיבית הגבוהה‬ ‫‪ 1‬אם התוצאה‬ ‫‪0‬‬ ‫ערך לאחר‬
‫בתוצאה דלוקה‪ ,‬אחרת‬ ‫היא ‪ ,0‬אחרת ‪0‬‬ ‫הפעולה‬
‫‪0‬‬

‫‪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‬‬ ‫תוצאה‬

‫השפעה על דגלים‬

‫‪OF‬‬ ‫‪SF‬‬ ‫‪ZF‬‬ ‫‪CF‬‬ ‫שם מקוצר‬


‫‪Overflow Flag Sign Flag Zero Flag Carry Flag‬‬ ‫שם מלא‬

‫דגל הגלישה‬ ‫דגל הסימן‬ ‫דגל האפס‬ ‫דגל הנשא‬ ‫שם בעברית‬

‫אין השפעה‬ ‫ערך לאחר הפעולה אין השפעה אין השפעה אין השפעה‬

‫הזזות (‪)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‬‬

‫‪shr al, bl‬‬

‫‪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‬‬

‫השפעה על דגלים‬

‫‪OF‬‬ ‫‪SF‬‬ ‫‪ZF‬‬ ‫‪CF‬‬ ‫שם‬


‫מקוצר‬
‫‪Overflow Flag‬‬ ‫‪Sign Flag‬‬ ‫‪Zero Flag‬‬ ‫‪Carry‬‬ ‫שם מלא‬
‫‪Flag‬‬

‫דגל הגלישה‬ ‫דגל הסימן‬ ‫דגל האפס‬ ‫דגל הנשא‬ ‫שם‬


‫בעברית‬
‫אם מספר ההזזות הוא ‪,1‬‬ ‫‪ 1‬אם הסיבית‬ ‫‪ 1‬אם‬ ‫ערך הביט‬ ‫ערך‬
‫ערך הדגל הוא תוצאת‬ ‫הגבוהה‬ ‫התוצאה‬ ‫הכי גבוה‬ ‫לאחר‬
‫‪ XOR‬בין הסיבית הגבוהה‬ ‫בתוצאה‬ ‫היא ‪,0‬‬ ‫לפני‬ ‫הפעולה‬
‫דלוקה‪ ,‬אחרת בתוצאה ודגל הנשא (לאחר‬ ‫אחרת ‪0‬‬ ‫ההזזה‬
‫הפעולה); אחרת‪ ,‬ערך‬ ‫‪0‬‬ ‫האחרונה‬
‫הדגל אינו מוגדר‬
‫הדגלים אינם מושפעים אם מספר ההזזות הוא ‪0‬‬

‫‪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‬‬ ‫יעד‬
‫לאחר‬
‫שתי‬
‫הזזות‬
‫(תוצאה‬
‫סופית)‬

‫השפעה על דגלים‬

‫‪OF‬‬ ‫‪SF‬‬ ‫‪ZF‬‬ ‫‪CF‬‬ ‫שם‬


‫מקוצר‬
‫‪Overflow Flag‬‬ ‫‪Sign Flag‬‬ ‫‪Zero Flag‬‬ ‫‪Carry Flag‬‬ ‫שם מלא‬

‫דגל הגלישה‬ ‫דגל הסימן‬ ‫דגל האפס‬ ‫דגל הנשא‬ ‫שם‬


‫בעברית‬
‫‪ 1‬אם הסיבית אם מספר ההזזות הוא‬ ‫‪ 1‬אם‬ ‫ערך הביט‬ ‫ערך‬
‫‪ ,1‬ערך הדגל הוא כערכה‬ ‫הגבוהה‬ ‫התוצאה‬ ‫הכי נמוך‬ ‫לאחר‬
‫של הסיבית הגבוהה‬ ‫בתוצאה‬ ‫היא ‪,0‬‬ ‫לפני ההזזה‬ ‫הפעולה‬
‫בערך אופרנד היעד‬ ‫דלוקה‪ ,‬אחרת‬ ‫אחרת ‪0‬‬ ‫האחרונה‬
‫המקורי; אחרת‪ ,‬ערך‬ ‫‪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‬‬ ‫שם מלא‬

‫דגל הגלישה‬ ‫דגל הסימן‬ ‫דגל האפס‬ ‫דגל הנשא‬ ‫שם‬


‫בעברית‬
‫© דניאל פונכץ ‪0202‬‬
‫‪medium.com/@danielfonkaz‬‬

‫‪ 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‬‬

‫(תוצאה‬
‫סופית)‬

‫השפעה על דגלים‬

‫‪OF‬‬ ‫‪SF‬‬ ‫‪ZF‬‬ ‫‪CF‬‬ ‫שם מקוצר‬


‫‪Overflow‬‬ ‫‪Sign Flag‬‬ ‫‪Zero Flag‬‬ ‫‪Carry Flag‬‬ ‫שם מלא‬
‫‪Flag‬‬

‫דגל‬ ‫דגל הסימן‬ ‫דגל האפס‬ ‫דגל הנשא‬ ‫שם‬


‫הגלישה‬ ‫בעברית‬
‫‪0‬‬ ‫‪ 1‬אם הסיבית‬ ‫‪ 1‬אם התוצאה‬ ‫ערך הביט הכי‬ ‫ערך לאחר‬
‫נמוך לפני ההזזה היא ‪ ,0‬אחרת הגבוהה בתוצאה‬ ‫הפעולה‬
‫דלוקה‪ ,‬אחרת ‪0‬‬ ‫‪0‬‬ ‫האחרונה‬
‫הדגלים אינם מושפעים אם מספר ההזזות הוא ‪0‬‬

‫‪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‬‬ ‫יעד‬
‫לאחר‬
‫שתי‬
‫הזזות‬
‫(תוצאה‬
‫סופית)‬

‫השפעה על דגלים‬

‫‪OF‬‬ ‫‪SF‬‬ ‫‪ZF‬‬ ‫‪CF‬‬ ‫שם‬


‫מקוצר‬
‫‪Overflow Flag‬‬ ‫‪Sign‬‬ ‫‪Zero‬‬ ‫‪Carry Flag‬‬ ‫שם מלא‬
‫‪Flag‬‬ ‫‪Flag‬‬

‫דגל הגלישה‬ ‫דגל‬ ‫דגל‬ ‫דגל הנשא‬ ‫שם‬


‫הסימן‬ ‫האפס‬ ‫בעברית‬
‫אם מספר ההזזות הוא ‪ ,1‬ערך‬ ‫אינו‬ ‫אינו‬ ‫ערך הביט הכי‬ ‫ערך‬
‫הדגל הוא תוצאת ‪ XOR‬בין‬ ‫מושפע‬ ‫מושפע‬ ‫גבוה לפני‬ ‫לאחר‬
‫הסיבית הגבוהה בתוצאה ודגל‬ ‫ההזזה‬ ‫הפעולה‬
‫הנשא (לאחר הפעולה); אחרת‪,‬‬ ‫האחרונה‬
‫ערך הדגל אינו מוגדר‬

‫‪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‬‬ ‫יעד‬
‫לאחר‬
‫שתי‬
‫הזזות‬
‫(תוצאה‬
‫סופית)‬

‫השפעה על דגלים‬

‫‪OF‬‬ ‫‪SF‬‬ ‫‪ZF‬‬ ‫‪CF‬‬ ‫שם‬


‫מקוצר‬
‫‪Overflow Flag‬‬ ‫‪Sign‬‬ ‫‪Zero‬‬ ‫‪Carry Flag‬‬ ‫שם מלא‬
‫‪Flag‬‬ ‫‪Flag‬‬

‫דגל הגלישה‬ ‫דגל‬ ‫דגל‬ ‫דגל הנשא‬ ‫שם‬


‫הסימן‬ ‫האפס‬ ‫בעברית‬
‫© דניאל פונכץ ‪0202‬‬
‫‪medium.com/@danielfonkaz‬‬

‫אם מספר ההזזות הוא ‪ ,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‬‬

‫(תוצאה‬
‫סופית)‬

‫השפעה על דגלים‬

‫‪OF‬‬ ‫‪SF‬‬ ‫‪ZF‬‬ ‫‪CF‬‬ ‫שם‬


‫מקוצר‬
‫‪Overflow Flag‬‬ ‫‪Sign‬‬ ‫‪Zero‬‬ ‫‪Carry Flag‬‬ ‫שם מלא‬
‫‪Flag‬‬ ‫‪Flag‬‬

‫דגל הגלישה‬ ‫דגל‬ ‫דגל‬ ‫דגל הנשא‬ ‫שם‬


‫הסימן‬ ‫האפס‬ ‫בעברית‬
‫אם מספר ההזזות הוא ‪ ,1‬ערך‬ ‫אינו‬ ‫אינו‬ ‫ערך הביט הכי‬ ‫ערך‬
‫הדגל הוא תוצאת ‪ XOR‬בין‬ ‫מושפע‬ ‫מושפע‬ ‫גבוה לפני‬ ‫לאחר‬
‫הסיבית הגבוהה בתוצאה ודגל‬ ‫ההזזה‬ ‫הפעולה‬
‫הנשא (לאחר ההזזה); אחרת‪,‬‬ ‫האחרונה‬
‫ערך הדגל אינו מוגדר‬

‫‪rcr‬‬
‫מבצעת הזזה מעגלית ימינה של אופרנד היעד (השמאלי) כמספר הפעמים שצוין‬
‫באופרנד המקור (הימני)‪.‬‬
‫כל הזזה מסיטה את כל הביטים באופרנד היעד צעד אחד ימינה‪ ,‬כאשר ערך דגל הנשא‬
‫המקורי (‪ )CF‬נכנס למקום הביט הכי גבוה (השמאלי) וערך הביט הכי נמוך (הימני) לפני‬
‫ההזזה נכנס לתוך דגל הנשא (‪.)CF‬‬
‫חשוב לדעת מה ערך דגל הנשא (‪ )CF‬לפני ההזזה‪ ,‬מאחר והוא משפיע עליה‪.‬‬
‫התהליך לעיל מתבצע כמספר הפעמים שצוין באופרנד המקור‪.‬‬
‫לדוגמה‪:‬‬
‫הוראה זו מדליקה את דגל הנשא (משנה את ערכו ל‪stc ; )1-‬‬
‫© דניאל פונכץ ‪0202‬‬
‫‪medium.com/@danielfonkaz‬‬

‫‪mov al, 01010001b‬‬


‫‪rcr al, 2‬‬
‫התוצאה‪ ,al = 11010100b :‬ודגל הנשא (‪ )CF‬יהיה כבוי (‪.)2‬‬
‫הסבר‪:‬‬
‫‪CF - 1‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫יעד‬
‫(‪)al‬‬
‫‪CF - 1‬‬ ‫‪1‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫יעד‬
‫לאחר‬
‫הזזה‬
‫אחת‬
‫‪CF - 0‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫יעד‬
‫לאחר‬
‫שתי‬
‫הזזות‬
‫(תוצאה‬
‫סופית)‬

‫השפעה על דגלים‬

‫‪OF‬‬ ‫‪SF‬‬ ‫‪ZF‬‬ ‫‪CF‬‬ ‫שם‬


‫מקוצר‬
‫‪Overflow Flag‬‬ ‫‪Sign‬‬ ‫‪Zero‬‬ ‫‪Carry Flag‬‬ ‫שם מלא‬
‫‪Flag‬‬ ‫‪Flag‬‬

‫דגל הגלישה‬ ‫דגל‬ ‫דגל‬ ‫דגל הנשא‬ ‫שם‬


‫הסימן‬ ‫האפס‬ ‫בעברית‬
‫אם מספר ההזזות הוא ‪ ,1‬ערך‬ ‫אינו‬ ‫אינו‬ ‫ערך הביט הכי‬ ‫ערך‬
‫הדגל הוא תוצאת ‪ XOR‬בין‬ ‫מושפע‬ ‫מושפע‬ ‫נמוך לפני‬ ‫לאחר‬
‫הסיבית הגבוהה באופרנד היעד‬ ‫ההזזה‬ ‫הפעולה‬
‫המקורי ודגל הנשא (לפני ההזזה);‬ ‫האחרונה‬
‫אחרת‪ ,‬ערך הדגל אינו מוגדר‬

You might also like