You are on page 1of 86

‫‪1‬‬ ‫מיקרו מחשבים‬

‫מבוא כללי למחשב‬


‫המחשב כשמו הוא מכשיר שהמטרה שלו הינה לעזור לאד לבצע פעולות חשבוניות‪ ,‬זו‬
‫הייתה מטרתו העיקרית והראשונה של המחשב‪.‬‬
‫המחשבי הראשוני לא היו באותה צורה של המחשב שאנחנו מכירי‪ ,‬לפני יותר ממאה‬
‫שנה‪ ,‬היינו צריכי לבנות מכונה מיכנית בנפרד לכל פעולה חשבונית‪ ,‬ז"א מכונה אחת שמבצעת‬
‫פעולת חיבור‪ ,‬מכונה אחרת שמבצעת פעולת כפל‪ ,‬וכו' ‪ . ...‬ולכ‪ ,‬כדי לפתור משוואה מתמטית‬
‫שכוללת יותר מפעולה חשבונית אחת‪ ,‬היינו צריכי להשתמש במספר מכונות שכל אחת מבצעת‬
‫חלק קט של המשוואה‪ ,‬ולכ הדבר לא היה קל לשימוש‪ .‬הדבר נמש עד שבא אד בש פו‬
‫ניומ שחשב על מכשיר אלקטרוני שיכול לבצע סדרה של פעולות באופ אוטומטי‪.‬‬
‫הרעיו הזה היה פריצת הדר של המחשב שאנחנו מכירי‪ .‬מחשב ב ימינו בנוי לפי גישה‬
‫זו שנקראת ארכיטקטורת פו ניומ‪ .‬בארכיטקטורה זו שמורות הוראות התכנית בזיכרו בצורה‬
‫מקודדת כרצ של 'אחדי' ו 'אפסי' ‪ ,‬והפקודות מבוצעות באופ אוטומטי‪.‬‬

‫המחשב הראשו היה ענק‪ ,‬בגודל של חדר‪ ,‬והיישומי שלו היו יותר פשוטי ממה‬
‫שמחשב ב ימינו מסוגל לבצע‪ .‬בסו שנות ה – ‪ 40‬גילו שלושה מדעני בארצות הברית את‬
‫המולי למחצה שהוא חומר שיכול להולי בתנאי מסוימי ולהיות מבודד בתנאי אחרי‪,‬‬
‫טרנזיסטור‪ ,‬דיודה מעגל משולב ‪ ...‬כל הרכיבי האלקטרוני האלה בנויי מחומר זה‪ .‬הדבר‬
‫היה פריצת דר למזעור המכשירי האלקטרוני‪.‬‬

‫מחשב ב ימינו הינו מחשב שמייש את תפיסת פו ניומ‪ ,‬ולכ מחשב זה צרי להיות‬
‫מסוגל לבצע את הדברי הבאי ‪:‬‬

‫לבצע את הפעולות המתמטיות והלוגיות שעוזרות לנו בפתרו משוואות או משימות‬ ‫‪1‬‬
‫שונות ולבקר את הפעולות ) הסדר האוטומטי (‪ .‬לש כ‪ ,‬אנו צריכי רכיב מסוי או מעגל‬
‫אלקטרוני שיעשה זאת‪ ,‬וזה מה שנקרא המעבד‪ ,‬או יחידת העיבוד המרכזית )יע"מ( או באנגלית‬
‫)‪ Central Processing Unit (CPU‬או בערבית  
   ‪ .‬היע"מ הינה המרכיב‬
‫החשוב ביותר במחשב‪ ,‬היא משפיעה בצורה גדולה על מחיר המחשב‪ ,‬מהירותו‪ ,‬והביצועי שלו‪.‬‬

‫לקלוט נתוני כדי לעבד אות ולהיות מסוגל לפלוט את התוצאות‪ .‬לש כ‪ ,‬צריכי‬ ‫‪2‬‬
‫מה שנקרא יחידות או התקני קלט‪/‬פלט‪ .(Input/Output) ,  /    ,‬התקני אלה‬
‫מקשרי את המחשב ע העול החיצוני‪.‬‬

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

‫התקני פלט ה התקני שדרכ אפשר לקבל את התוצאות מהמחשב‪ ,‬התקני כמו‬
‫מס‪ ,‬רמקול‪ ,‬מדפסת‪ ,‬וכו'‪ ...‬ה התקני פלט ‪.‬‬

‫‪.  Memory‬‬ ‫לזכור את הפעולות שברצוננו לבצע‪ ,‬לש כ צריכי ג זיכרו‬ ‫‪3‬‬
‫הזיכרו משמש אותנו ג לשמירת תוצאות הביניי והנתוני הזמניי‪.‬‬

‫אלו ה שלושת המרכיבי העיקריי של המחשב‪ ,‬כדי שיוכלו לתפקד ביחד צרי להיות‬
‫ביניה קשר כדי להעביר אחד לשני את הנתוני‪ .‬ולכ‪ ,‬ה מחוברי ביניה דר שלושה‬
‫אפיקי או פסי‪ ,‬שלכל אחד יש תפקיד מסוי‪.‬‬

‫________________________________________________________________________________________________________________________‬
‫‪www.zaher.co.il‬‬ ‫‪-1-‬‬
‫‪2‬‬ ‫מיקרו מחשבים‬

‫פס ‪ – BUS‬הוא אוס של מוליכי חשמליי בעלי תפקיד משות‪ ,‬במחשב יש שלושה‬
‫פסי המחברי בי מרכיביו השוני‪ ,‬וה ‪:‬‬

‫פס הנתוני ‪ - DATA BUS‬הוא אפיק דו כיווני שתפקידו להעביר את המידע בי‬ ‫א‬
‫מרכיביו של המחשב‪ .‬לגודל של פס זה יש השפעה גדולה על ביצועי המעבד‪ ,‬ככל שהרוחב שלו‬
‫יותר גדול ) מכיל מספר גדול של קווי (‪ ,‬ביצועי המעבד יהיו יותר טובי‪ .‬הרוחב שלו יכול להיות‬
‫כפולה של ‪ 8‬ז"א ‪, 64, 32, 16, 8‬וכו'‪...‬‬

‫פס הכתובות ‪ – ADDRESS BUS‬הוא אפיק חד כיווני שתפקידו להעביר את הכתובת‬ ‫ב‬
‫של היעד בי מרכיבי המחשב ‪ ,‬למשל א המעבד רוצה לשלוח תוצאות למס‪ ,‬אז בפס זה הוא‬
‫מעביר את הכתובת של המס‪ ,‬כ שהמידע לא יל לזיכרו או למדפסת‪ .‬הרוחב של פס זה קובע‬
‫את כמות תאי הזיכרו המקסימאלית שאפשר לחבר למעבד‪ ,‬לפי הקשר ‪:‬‬

‫כמות תאי הזיכרו מקסימאלית = ‪2n‬‬

‫כאשר ‪ n‬הוא פרמטר המייצג את כמות הקווי בפס הכתובות‪ .‬למשל א מספר‬
‫קווי הכתובת בפס הכתובות הוא ‪ 20‬אז אפשר לפנות ל ‪ 220‬תאי זיכרו‪.‬‬

‫פס הבקרה ‪  CONTROL BUS‬הוא אפיק דו כיווני שתפקידו להעביר את אותות‬ ‫ג‬
‫הבקרה בי מרכיבי המחשב‪ ,‬למשל א המעבד רוצה לכתוב נתו מסוי בתו הזיכרו אז בפס זה‬
‫הוא מעביר אות לזיכרו שאומר לו כי המעבד רוצה לכתוב נתו ולא לקרוא‪ ,‬או רכיב מסוי יכול‬
‫להעביר למעבד אות מסוי שיגיד למעבד א הוא סיי את העבודה שלו‪ ,‬וכו' ‪...‬‬

‫תרשי עקרוני של מחשב‬

‫________________________________________________________________________________________________________________________‬
‫‪www.zaher.co.il‬‬ ‫‪-2-‬‬
‫‪3‬‬ ‫מיקרו מחשבים‬

‫זיכרו המחשב נחלק לשלושה סוגי עיקריי ‪:‬‬

‫או ‪Read Write Memory - RWM‬‬ ‫‪Random Access Memory - RAM‬‬ ‫‪1‬‬

‫הוא זיכרו לקריאה וכתיבה‪ ,‬נקרא ג זיכרו ראשי‪ ,‬זיכרו נדי‪ ,‬או זיכרו לגישה‬
‫אקראית‪ .‬משתמשי בו כדי לאחס נתוני זמניי שהתוכניות משתמשות בה בעת הפעלת‬
‫המחשב‪ .‬חלק ממנו ג מנוצל ע"י מערכת ההפעלה‪ ,‬בד"כ הוא מהיר אבל יקר יחסית לדיסק‬
‫הקשיח ‪.Hard Disk‬‬

‫המידע נשמר בו בצורה חשמלית ולכ אחרי שמנתקי אותו מהחשמל התוכ שלו הול‬
‫לאיבוד‪ .‬זהו חסרונו הגדול של זיכרו מסוג זה‪.‬‬

‫‪Read Only Memory - ROM‬‬ ‫‪2‬‬

‫הוא זיכרו לקריאה בלבד‪ ,‬ז"א אפשר לקרוא את התוכ שלו אבל לא לכתוב לתוכו או‬
‫לעדכ אותו‪ ,‬התוכ שלו נקבע בעת הייצור ולא נית לשינוי‪ .‬לזיכרו זה יש תכונה חשובה מאוד‪,‬‬
‫והיא שהמידע הנמצא בו נשמר ג כאשר מנתקי אותו מהחשמל‪ ,‬לכ שימושו העיקרי הוא‬
‫לאחסו ה ‪ ,( Basic Input Output System ) BIOS‬שהיא אוס של קבצי שתפקיד לבצע‬
‫את פעולת האתחול של המחשב‪.‬‬
‫התקני זיכרו משני‬ ‫‪3‬‬
‫ה התקני זיכרו שאפשר לאחס בה מידע‪ ,‬וג אפשר לקרוא מה נתוני‪ .‬יתרונ של‬
‫התקני אלה הוא בכ שהמידע נשמר בה בצורה מגנטית או אופטית‪ ,‬לכ ג כאשר מנתקי‬
‫אות מהחשמל המידע נשאר‪ .‬יתרו נוס הוא המחיר הזול יחסית לזיכרו ראשי‪ .‬דיסק קשיח‬
‫)‪ ,( HARD DISK‬דיסקט‪ ,CD-ROM ,‬וכו' ‪ ...‬כל אלה ה התקני זיכרו משני‪.‬‬

‫יחידות אחסון המידע בזיכרון ‪:‬‬

‫‪ .i‬סיבית או ביט‪ bit ,‬היא יחידת האחסו הקטנה ביותר שיכולה לשמור מידע בצורת '‪'0‬‬
‫או '‪ .'1‬ז"א סיבית יכולה להיות באחד משני המצבי‪ :‬אפס או אחד‪.‬‬
‫רמה ' ‪ ' 0‬מיוצגת בד"כ ע"י מתח ‪.0 v‬‬
‫ורמה ' ‪ ' 1‬מיוצגת בד"כ ע"י מתח ‪.5 v‬‬

‫‪ .ii‬בית ‪ – Byte‬היא יחידת אחסו המכילה ‪ 8‬סיביות‪ ,‬יחידה זו היא הנפוצה ביותר ‪.‬‬
‫‪ 1‬בית = ‪ 8‬סיביות ‪.1Byte = 8 Bit's .‬‬

‫‪ .iii‬מילה ‪ Word‬היא יחידת אחסו המכילה ‪ 16‬סיביות ‪.‬‬


‫‪.1 Word = 16 Bit's = 2 Bytes‬‬ ‫מילה = ‪ 16‬סיביות = ‪ 2‬בתי‬

‫‪ .iv‬מילה כפולה )‪ – Double Word (DW‬היא יחידה המכילה ‪ 32‬סיביות ‪.‬‬

‫מילה כפולה = ‪ 2‬מילי = ‪ 4‬בתי = ‪ 32‬סיביות‪.‬‬

‫________________________________________________________________________________________________________________________‬
‫‪www.zaher.co.il‬‬ ‫‪-3-‬‬
4 ‫מיקרו מחשבים‬

‫יחידות אלו‬
1 Kilo = 1KB = 210 = 1024 byte .v

1 Mega = 1MB = 220 = 1048576 byte .vi

1 Giga = 1GB = 230 = 1073741824 byte .vii

________________________________________________________________________________________________________________________
www.zaher.co.il -4-
‫‪5‬‬ ‫מיקרו מחשבים‬

‫דף עבודה בנושא מבוא כללי למחשב‬

‫מהי ארכיטקטורת פו ניומ ?‬ ‫‪1‬‬


‫מה ההבדל בי זיכרו משני לבי ‪? ROM‬‬ ‫‪2‬‬
‫מה ההבדל בי זיכרו משני לבי ‪? RAM‬‬ ‫‪3‬‬
‫מה המשות בי זיכרו משני לבי ‪? ROM‬‬ ‫‪4‬‬
‫מה המשות בי זיכרו משני לבי ‪? RAM‬‬ ‫‪5‬‬
‫מה ההבדל בי התקני זיכרו לבי התקני קלט ‪ /‬פלט ?‬ ‫‪6‬‬
‫כמה בתי יש בזיכרו שגודלו ‪:‬‬ ‫‪7‬‬
‫א‪ 98304 .‬סיביות‪.‬‬
‫ב‪.32KB .‬‬
‫ג‪ 65535 .‬מילי‪.‬‬
‫לכמה כתובות אפשר לפנות באמצעות פס כתובות ב ‪:‬‬ ‫‪8‬‬
‫א‪ 24 .‬קווי‪.‬‬
‫ב‪ 17 .‬קווי‪.‬‬
‫ג‪ 39 .‬קווי‪.‬‬
‫כמה סיביות יש בזיכרו שגודלו ‪:‬‬ ‫‪9‬‬
‫א‪.67 KB .‬‬
‫ב‪.64MB .‬‬
‫‪.5GB‬‬ ‫ג‪.‬‬
‫כמה קווי כתובת דרושי כדי לפנות לכל אחד מהבתי ‪ ,‬בזיכרו שגודלו‪:‬‬ ‫‪10‬‬
‫א‪.32 KB .‬‬
‫ב‪.45 MB .‬‬
‫ג‪.12 GB .‬‬

‫עבודה נעימה‬

‫________________________________________________________________________________________________________________________‬
‫‪www.zaher.co.il‬‬ ‫‪-1-‬‬
‫‪6‬‬ ‫מיקרו מחשבים‬

‫מבנה עקרוני של מעבד‬


‫הפרק הקוד‪ ,‬הוביל אותנו למסקנה שהמעבד הוא המוח של המחשב‪ .‬ושעוצמת המחשב‬
‫ויכולתו תלויה במידה רבה במעבד‪ .‬לכ‪ ,‬בפרק הזה ננסה להבי את עקרונות ההפעלה של‬
‫היע"מ‪.‬‬

‫להל מובא תיאור עקרוני של מעבד‪.‬‬

‫אוגר הוראה ) ‪( IR‬‬


‫מצביע ההוראה ) ‪( IP‬‬

‫מעגלי פענוח‬
‫ההוראה והבקרה‬ ‫מצביע מחסנית ) ‪( SP‬‬

‫אוגרי נתוני‬
‫יחידה אריתמטית‬
‫לוגית‬ ‫מעגלי הפקת הכתובת‬
‫) ‪( ALU‬‬

‫אוגר דגלי ) ‪( FLAGS‬‬

‫אוגר נתו הזיכרו ) ‪( MDR‬‬ ‫אוגר כתובת הזיכרו ) ‪( MAR‬‬

‫פס הנתוני ‬ ‫פס הבקרה‬ ‫פס הכתובות‬


‫מבנה עקרוני של יע"מ‬

‫כדי להבי את הסכמה הזו‪ ,‬נפרט את תפקידו של כל מלב במעבד ‪:‬‬

‫‪(Memory Address Register) MAR‬‬ ‫ אוגר כתובת הזיכרו‬


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

‫________________________________________________________________________________________________________________________‬
‫‪www.zaher.co.il‬‬ ‫‪-1-‬‬
‫‪7‬‬ ‫מיקרו מחשבים‬

‫‪(Memory Data Register) MDR‬‬ ‫ אוגר נתו הזיכרו‬


‫כל נתו הנכנס או יוצא מהמעבד עובר דר! אוגר זה‪ ,‬כאשר המעבד כותב נתו כלשהו‬
‫לזיכרו או לקלט ‪ /‬פלט‪ ,‬הנתו מועבר ל ‪ MDR‬שסיביותיו מחוברות לפס הנתוני‪ ,‬וה אלה‬
‫שקובעות את הרמה הלוגית בקווי של פס הנתוני‪ .‬ג כאשר המעבד קורא נתו מהזיכרו או‬
‫מהתק קלט ‪ /‬פלט‪ ,‬הנתו מועבר מפס הנתוני לתו! המעבד דר! ה ‪.MDR‬‬

‫ אוגר ההוראה ‪( Instruction Register ) IR‬‬

‫אוגר זה מכיל את הקוד או הצירו" הבינארי שמייצג את הפעולה הנוכחית שהמעבד מבצע‪.‬‬

‫ מעגלי פענוח ההוראה‬

‫מעגלי אלו מנתחי את הצירו" של הפקודה שנמצא ב ‪ IR‬ומפעילי דר! קווי בקרה את‬
‫חלקי המעבד המבצעי את הפעולה הדרושה‪.‬‬

‫ היחידה האריתמטית – לוגית ) ‪ALU ( Arithmetic Logic Unit‬‬

‫כוללת מעגלי אלקטרוני האחראי על ביצוע הפעולות הלוגיות ) ‪NOT, OR, AND‬‬
‫‪ ,(NAND, NOR , XOR, XNOR‬והחשבוניות ) חיבור‪ ,‬חיסור‪ ,‬כפל ‪ ,‬חילוק (‪ .‬ההוראה‬
‫הנוכחית שהמעבד מבצע היא הקובעת איזו פעולה צריכה ה ‪ ALU‬לבצע‪.‬‬

‫ אוגר הדגלי ) ‪( Flags Register‬‬

‫הוא אוגר מיוחד המכיל סיביות שלכל אחת מה תפקיד מסוי‪ ,‬וה נקראות דגלי‪ .‬דגלי‬
‫אלה מושפעי מתוצאת החישוב האחרונה שה ‪ ALU‬ביצעה‪ ,‬ומאפשרי למעבד לקבל החלטות‬
‫המסתמכות על תוצאות הפעולה האחרונה‪ .‬למשל‪ ,‬א התכנית שלנו צריכה לבצע פעולה ‪ X‬א‬
‫התוצאה אפס או פעולה ‪ Y‬א התוצאה שונה מאפס‪ ,‬במקרה זה המעבד בודק את דגל האפס‬
‫ולפי ערכו הוא מחליט איזה פעולה לבצע‪ .‬נסביר לדוגמה ‪ 3‬דגלי מתו! אוגר זה ‪:‬‬

‫דגל האפס ) ‪ $ ( Zero Flag‬מקבל '‪ '1‬א תוצאת החישוב שהייתה ב ‪ ALU‬היא אפס‪,‬‬ ‫‪.i‬‬
‫אחרת הוא מקבל ' ‪.' 0‬‬

‫דגל הסימ ) ‪- (Sign flag‬מקבל ' ‪ ' 1‬כאשר תוצאת החישוב היא שלילית‪ ,‬אחרת הוא‬ ‫‪.ii‬‬
‫מקבל ' ‪. ' 0‬‬

‫דגל הנשא ) ‪ – ( Carry Flag‬מקבל ' ‪ ' 1‬כאשר בחישוב הפעולה האחרונה היה נשא או‬ ‫‪.iii‬‬
‫לווה‪ ,‬אחרת מקבל ' ‪. ' 0‬‬

‫ אוגרי נתוני ) ‪( Data Registers‬‬

‫ה קבוצה של אוגרי שנועדו לאחסו זמני של נתוני‪ ,‬פעולות על נתוני הנמצאי בתו!‬
‫המעבד‪ ,‬הרבה יותר מהירות מפעולות המבוצעות על נתוני הנמצאי בזיכרו‪.‬‬

‫________________________________________________________________________________________________________________________‬
‫‪www.zaher.co.il‬‬ ‫‪-2-‬‬
‫‪8‬‬ ‫מיקרו מחשבים‬

‫ אוגר מצביע ההוראה ‪( Instruction Pointer ) IP‬‬


‫אוגר זה מכיל את הכתובת של המקו בזיכרו שבו נמצא הקוד של ההוראה הבאה‬
‫לביצוע‪ .‬במעבדי של חברת מוטורולה מכני אוגר זה בש מונה התכנית ‪Program ) PC‬‬
‫‪.( Counter‬‬

‫ אוגר מצביע המחסנית ‪( Stack Pointer ) SP‬‬


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

‫ מעגלי הפקת הכתובת‬

‫ה מעגלי אלקטרוניי שתפקיד הוא לבצע את החישובי הנדרשי כדי להפיק לפס‬
‫הכתובות את הכתובת הנדרשת‪.‬‬

‫המחשב הראשו שיצא לשוק בצורה המוכרת לנו היה בתחילת שנות השמוני ‪ ,‬ע"י חברת‬
‫‪ IBM‬ולאחר מכ התחילה חברת ‪ INTEL‬לייצר מחשבי תואמי ‪ .IBM‬המעבד הראשו‬
‫שייצרה אינטל ושולב במחשב אישי היה ‪ ,8086‬ולאחר מכ שיפרה אותו ויצאה ע מספר‬
‫מעבדי מתקדמי יותר בסדרה שקראה לה ‪ . X86‬הסדרה כללה ‪ .486 ,386 ,286‬ובתו! הסדרה‬
‫הזו היו ג גרסאות שונות‪ 386SX, 386DX, 486DX2, 486DX4 ,‬שה בעצ גרסאות שונות‬
‫של אותו מעבד‪ .‬ההבדל היה במהירות או הכללת מעבד מתמטי או הכללת זיכרו מטמו ‪CACH‬‬
‫‪.MEMORY‬‬

‫לאחר מכ יצאה אינטל ע סידרה אחרת של מעבדי‪ ,‬פנטיו ‪ ,I‬פנטיו ‪ ,II‬פנטיו ‪III‬‬
‫ופנטיו ‪ .4‬ובכל מעבד היו מספר גרסאות שעיקר ההבדל ביניה הייתה המהירות דוגמת‬
‫‪.PENTIUM II 350 MHZ , PENTIUM II 500 MHZ‬‬

‫עניי אחר הקשור למעבדי היה הזיכרו המטמו‪ ,‬זיכרו זה מהיר מאוד ויקר מאוד דבר‬
‫שגור להתייקרות כל מעבד שכולל כמות גדולה מזיכרו זה‪ ,‬מעבדי פנטיו של אינטל כללו‬
‫‪ 512KB‬ולכ היו מעבדי יקרי מאוד‪ .‬כדי שאינטל תוכל לעמוד בתחרות ע יצרניות‬
‫מעבדי אחרות כמו ‪ AMD‬או ‪ CYREX‬הייתה חייבת להוריד את המחירי שלה‪ ,‬ולכ יצאה‬
‫ע גרסה חדשה של מעבדי שנקראת סילירו ‪ CELERON‬שהוא מקביל לפנטיו ‪ II‬שלה רק‬
‫ע כמות זיכרו מטמו ‪.128KB‬‬

‫היו יש גרסאות יותר מתקדמות של מעבדי תוצרת חברת אינטל‪ ,‬כמו מעבד ליבה‬
‫כפולה‪ ,‬ומעבד ‪ ,CORE 2 DUO‬על תכונות מעבדי אלו נדבר בהמש!‪.‬‬

‫________________________________________________________________________________________________________________________‬
‫‪www.zaher.co.il‬‬ ‫‪-3-‬‬
‫‪9‬‬ ‫מיקרו מחשבים‬

‫דף עבודה במבנה המעבד‬

‫מה ההבדל בין האוגרים ‪ IP‬לבין ‪?IR‬‬ ‫‪-1‬‬


‫מה ההבדל בין האוגר ‪ MDR‬לבין האוגר ‪?MAR‬‬ ‫‪-2‬‬
‫מהו תפקידם של אוגרי הנתונים?‬ ‫‪-3‬‬
‫מדוע צריכים את הקשר בין אוגרי הנתונים לבין ה ‪?ALU‬‬ ‫‪-4‬‬
‫מה המיוחד בשני האוגרים ‪ MDR‬ו‪ MAR -‬לעומת שאר האוגרים?‪.‬‬ ‫‪-5‬‬
‫בצע את הפעולות הבאות וציין את מצבם של דגלי האפס והנשא אחרי כל פעולה‪:‬‬ ‫‪-6‬‬

‫‪11001101 + 10101001‬‬ ‫‪.i‬‬


‫‪01010101 + 10101010‬‬ ‫‪.ii‬‬
‫‪00000001 + 11111111‬‬ ‫‪.iii‬‬

‫עבודה נעימה‬

‫________________________________________________________________________________________________________________________‬
‫‪www.zaher.co.il‬‬ ‫‪-1-‬‬
‫‪10‬‬ ‫מיקרו מחשבים‬

‫מודל תכנותי של ‪8086/88‬‬

‫כאשר מציינים מעבד ‪ ,8086/88‬הכוונה היא לשני מעבדים תוצרת חברת אינטל העולמית‪,‬‬
‫הראשון הוא מעבד ‪ 8086‬והשני הוא מעבד ‪ .8088‬שני המעבדים זהים במבנה הפנימי שלהם‪,‬‬
‫מלבד ההבדל העקרוני ביניהם והוא שרוחב פס הנתונים שונה‪ ,‬ולכן כאשר מציינים ‪8086/88‬‬
‫הכוונה היא שכל מה שנאמר או כל מה שנרצה לציין נכון לשני המעבדים‪ ,‬אומנם כאשר‬
‫הדברים נכונים לגבי מעבד אחד‪ ,‬נציין את המעבד עצמו‪.‬‬

‫רוחב פס הנתונים כאמור הוא ההבדל העקרוני בין שני המעבדים‪ ,‬פס הנתונים של ה ‪8086‬‬
‫הוא ברוחב ‪ 16‬קווים‪ ,‬דבר שמאפשר טיפול ב ‪ 16‬סיביות בכל פעולה שהמעבד מבצע‪ ,‬ואילו פס‬
‫הנתונים של ה ‪ 8088‬הוא ברוחב ‪ 8‬קווים‪ ,‬דבר שמאפשר לטפל ב ‪ 8‬סיביות בכל פעולה שהוא‬
‫מבצע‪.‬‬

‫פס הכתובות של ה ‪ 8086/88‬הוא בן ‪ 20‬קווים דבר שמאפשר למעבד גישה ל ‪ 1MB‬זיכרון‬


‫לפי הקשר ‪ :‬מס' תאי זיכרון מקסימאלי = ‪ ,2n‬כאשר ‪ n‬הוא מס' הקווים בפס הכתובות‪ .‬הוא‬
‫יכול לפנות גם ל ‪ 216 = 65536 = 64k‬כתובות שונות של התקני קלט‪/‬פלט‪ ,‬מאחר ובפניה‬
‫להתקני קלט‪/‬פלט מציינים את הכתובת של ההתקן באוגר ‪ ,DX‬שהוא אוגר בן ‪ 16‬סיביות‪.‬‬
‫כל האוגרים ב ‪ 8086/88‬הם בני ‪ 16‬סיביות‪ ,‬והפנייה לזיכרון מתבצעת ע"י אוגרים‪ ,‬דבר‬
‫שמגביל את פניית המעבד ל ‪.64KB‬‬

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

‫‪ 8‬קווים‬ ‫פס נתונים‬ ‫‪ 16‬קווים‬ ‫פס נתונים‬

‫‪CPU‬‬ ‫‪CPU‬‬
‫‪8088‬‬ ‫‪8086‬‬
‫‪ 20‬קווים‬ ‫פס כתובות‬ ‫‪ 20‬קווים‬ ‫פס כתובות‬

‫ההבדל העקרוני בין שני המעבדים ‪8088/86‬‬

‫________________________________________________________________________________________________________________________‬
‫‪www.zaher.co.il‬‬ ‫‪-1-‬‬
‫‪11‬‬ ‫מיקרו מחשבים‬

‫מבנה פנימי של המעבד ‪8086/88‬‬


‫שני המעבדים ‪ 8088‬ו‪ ,8086 -‬הם מעבדים זהים שאפשר להתייחס לתכונות שלהם ביחד‪,‬‬
‫המעבד ‪ 8086/88‬בנוי משתי יחידות עיקריות‪ .‬הראשונה נקראת יחידת הביצוע ) ‪Execution‬‬
‫‪ ,( Unit - EU‬שתפקידה לבצע את הפעולות החשבוניות והלוגיות‪ ,‬להעביר נתונים בין אוגרי‬
‫המעבד‪ ,‬ולשמור את הנתונים באוגרים הזמניים או למסור אותם לזיכרון‪.‬‬

‫היחידה השניה נקראת ‪ ,‬יחידת המשק לפס ) ‪ ( Bus Interface Unit - BIU‬או יחידת‬
‫הבקרה ) ‪ ( Control Unit - CU‬שתפקידה לטפל בחיבור המעבד להתקנים ההיקפיים ולטפל‬
‫באותות הבקרה של המעבד בנוסף לחישוב הכתובת הלוגית והפיזית‪ ,‬והבאת הוראות מהזיכרון‬
‫לתוך המעבד‪.‬‬

‫‪EXECUTION UNIT – EU‬‬ ‫‪BUS INTERFACE UNIT - BIU‬‬


‫יחידת הביצוע‬ ‫יחידת המשק לפס‬

‫‪AH‬‬ ‫‪AL‬‬
‫‪CS‬‬
‫‪BH‬‬ ‫‪BL‬‬
‫‪DS‬‬
‫‪CH‬‬ ‫‪CL‬‬
‫‪SS‬‬
‫‪DH‬‬ ‫‪DL‬‬
‫‪ES‬‬
‫‪SI‬‬
‫‪IP‬‬
‫‪DI‬‬
‫‪BP‬‬
‫פס נתונים פנימי‬

‫פס נתונים‬
‫מעגלי הפקת‬
‫‪ALU‬‬ ‫הכתובת‬ ‫פס בקרה‬
‫והבקרה‬
‫פס כתובות‬

‫דגלים‬ ‫תור ההוראה‬

‫________________________________________________________________________________________________________________________‬
‫‪www.zaher.co.il‬‬ ‫‪-2-‬‬
‫‪12‬‬ ‫מיקרו מחשבים‬

‫האוגרים ב ‪REGISTERS 8086/88‬‬

‫אוגר ‪REGISTER‬‬

‫האוגר הוא מקום במעבד שבו אפשר לשמור נתון בינארי‪ ,‬רוחב האוגר מגביל את המספר‬
‫הגדול ביותר שאפשר לשמור בתוכו‪ .‬המספר הגדול ביותר שאפשר לשמור באוגר בן ‪ 8‬סיביות‪ ,‬הוא‬
‫‪ .( 11111111 )2 = (FF)16 = (255)10‬ואילו המספר הגדול ביותר שאפשר לשמור באוגר בן ‪16‬‬
‫סיביות‪. (1111111111111111)2 = (FFFF)16 = (65535)10 ,‬‬

‫‪D7 D6 D5 D4 D3 D2 D1 D0‬‬

‫אוגר בן ‪ 8‬סיביות‬

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

‫קבוצת אוגרי הנתונים‬

‫היא קבוצה שכוללת ‪ 4‬אוגרים ‪ . AX, BX, CX, DX‬נקראת גם קבוצת האוגרים לשימוש‬
‫כללי‪ .‬האוגרים משמשים לאחסון זמני של נתונים ‪ .‬קבוצה זו מיוחדת בכך שאפשר להשתמש בכל‬
‫הרוחב של כל אחד מהאוגרים כדי לאחסן נתון בן ‪ 16‬סיביות ) מלה שלמה (‪ .‬ואפשר להשתמש‬
‫בכל אוגר כאילו הוא מורכב משני אוגרים נפרדים בני ‪ 8‬סיביות ) בית בודד (‪.‬‬
‫‪High‬‬ ‫‪Low‬‬
‫‪D15‬‬ ‫‪D8 D7‬‬ ‫‪D0‬‬ ‫מס' הסיביות ‪:‬‬

‫‪Accumulator‬‬ ‫‪AH‬‬ ‫‪AL‬‬ ‫‪AX‬‬ ‫צובר‬

‫‪Base‬‬ ‫‪BH‬‬ ‫‪BL‬‬ ‫‪BX‬‬ ‫בסיס‬

‫‪Count‬‬ ‫‪CH‬‬ ‫‪CL‬‬ ‫‪CX‬‬ ‫מונה‬

‫‪Data‬‬ ‫‪DH‬‬ ‫‪DL‬‬ ‫‪DX‬‬ ‫נתון‬

‫במלים אחרות‪ ,‬האוגר ‪ AX‬מורכב משני אוגרים ‪ AL‬ו‪ ,AH -‬כאשר ‪ AL‬מכיל את שמונה‬
‫‪ AH‬מכיל את הסיביות הכי‬ ‫הסיביות הנמוכות או הפחות משמעותיות ב ‪ ,AX‬והאוגר‬
‫משמעותיות ב ‪ .AX‬וכך גם שאר האוגרים בקבוצה זו‪.‬‬
‫________________________________________________________________________________________________________________________‬
‫‪www.zaher.co.il‬‬ ‫‪-3-‬‬
‫‪13‬‬ ‫מיקרו מחשבים‬

‫קבוצת אוגרי ההצבעה והאינדקס‬


‫היא קבוצה של ‪ 5‬אוגרים בני ‪ 16‬סיביות כל אחד‪ ,‬שבד"כ מאחסנים בהם את הכתובות של‬
‫תאי זיכרון שמעבירים אליהם נתונים ‪.‬‬

‫‪Source Index‬‬ ‫‪SI‬‬ ‫מצביע המקור‬

‫‪Destination Index‬‬ ‫‪DI‬‬ ‫מצביע היעד‬

‫‪Base Pointer‬‬ ‫‪BP‬‬ ‫מצביע הבסיס‬

‫‪Stack Pointer‬‬ ‫‪SP‬‬ ‫מצביע המחסנית‬

‫‪Instruction Pointer‬‬ ‫‪IP‬‬ ‫מצביע הפקודה‬

‫‪ ‬אוגר ‪ SI‬הוא אוגר שבד"כ מכיל כתובת שמצביעה על תא זיכרון שממנו מביאים נתון‪.‬‬

‫‪ ‬אוגר ‪ DI‬הוא אוגר שבד"כ מכיל כתובת שמצביעה על תא זיכרון שאליו מעבירים נתון‪.‬‬

‫‪ ‬אוגר ‪ BP‬הוא אוגר שבד"כ מכיל כתובת שמצביעה על תאי זיכרון באזור המחסנית ‪.‬‬

‫‪ ‬אוגר ‪ SP‬הוא אוגר המכיל את כתובת ראש המחסנית ‪ ,‬הכוונה היא לתא הזיכרון בקצה‬
‫המחסנית ‪.‬‬

‫‪ ‬אוגר ‪ IP‬הוא אוגר שמכיל את כתובת תא הזיכרון המכיל את הפקודה הבאה לביצוע‪.‬‬

‫קבוצת אוגרי הסגמנט‬


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

‫‪Code Segment‬‬ ‫‪CS‬‬ ‫אוגר מקטע הקוד‬

‫‪Data Segment‬‬ ‫‪DS‬‬ ‫אוגר מקטע הנתונים‬

‫‪Stack Segment‬‬ ‫‪SS‬‬ ‫אוגר מקטע המחסנית‬

‫‪Extra Segment‬‬ ‫‪ES‬‬ ‫אוגר מקטע הנוסף‬

‫________________________________________________________________________________________________________________________‬
‫‪www.zaher.co.il‬‬ ‫‪-4-‬‬
‫‪14‬‬ ‫מיקרו מחשבים‬

‫‪ ‬אוגר ‪ - CS‬הוא אוגר שמכיל את הכתובת ההתחלתית של מקטע הקוד ‪.‬‬

‫‪ ‬אוגר ‪ - DS‬הוא אוגר שמכיל את הכתובת ההתחלתית של מקטע הנתונים ‪.‬‬

‫‪ ‬אוגר ‪ - SS‬הוא אוגר שמכיל את הכתובת ההתחלתית של מקטע המחסנית ‪.‬‬

‫‪ ‬אוגר ‪ - ES‬הוא אוגר שמכיל את הכתובת ההתחלתית של מקטע הנוסף ‪.‬‬

‫________________________________________________________________________________________________________________________‬
‫‪www.zaher.co.il‬‬ ‫‪-5-‬‬
‫‪15‬‬ ‫מיקרו מחשבים‬

‫דגלים ‪FLAGS‬‬
‫במעבד ‪ 8086/88‬קיים אוגר שנקרא אוגר דגלים‪ ,‬שהוא אוגר שמכיל ‪ 16‬סיביות‪ ,‬מתוכן ‪9‬‬
‫סיביות משמשות כדגלים‪ .‬לשאר הסיביות אין משמעות‪ .‬אוגר זה מיוחד בכך שאפשר לגשת‬
‫לכל סיבית בנפרד‪ .‬כאשר כל סיבית יכולה לקבל את הערך '‪ '1‬או '‪. '0‬‬

‫‪X X X X OF DF IF TF SF ZF X AF X PF X CF‬‬
‫‪D15 D14 D13 D12 D11 D10 D9 D8 D7 D6 D5 D4 D3 D2 D1 D0‬‬

‫‪ ‬הסימן ‪ X‬מציין כי הערך של הסיבית אינו משמעותי וכי הסיבית הזו באוגר אינה דגל‪.‬‬
‫הדגלים מתחלקים לשתי קבוצות ‪:‬‬

‫‪ ‬דגלי המצב ‪:‬‬


‫ערכם של דגלים אלה נקבע ע"י המעבד ‪,‬לפי תוצאת החישוב של הפעולה האחרונה‬
‫שהמעבד ביצע ‪.‬ערכו של דגל מצב נותן מידע לגבי התוצאה שהתקבלה ‪.‬‬

‫‪ .1‬דגל הנשא ‪Carry Flag - CF‬‬

‫הוא דגל שמקבל '‪ '1‬אם בתוצאת החישוב יש נשא בפעולת חיבור או לווה בפעולת חיסור‬
‫מהסיבית המשמעותית ביותר‪ ,‬אחרת הוא מקבל '‪. '0‬‬
‫למשל ‪:‬‬
‫‪CF=1‬‬ ‫‪CF=0‬‬ ‫‪CF=1‬‬
‫‪1 1‬‬ ‫‪0 10‬‬ ‫‪0 10‬‬ ‫‪1 1‬‬ ‫‪1 1 1 1 1‬‬
‫‪FE34‬‬ ‫‪11001110‬‬ ‫‪11001101‬‬
‫‪+‬‬ ‫‪-‬‬ ‫‪+‬‬
‫‪D563‬‬ ‫‪00101001‬‬ ‫‪01011011‬‬
‫_______‬ ‫___________‬ ‫___________‬
‫‪D397‬‬ ‫‪10100101‬‬ ‫‪00101000‬‬

‫‪ .2‬דגל הזוגיות ‪Parity Flag - PF‬‬

‫הוא דגל שמקבל '‪ '1‬אם ‪ 8‬הסיביות הפחות משמעותיות בתוצאה מכילות מספר זוגי של‬
‫'‪ ,'1‬אחרת הוא מקבל '‪. '0‬‬
‫למשל אם תוצאת החישוב שהתקבלה היתה ‪:‬‬
‫‪PF = 0‬‬ ‫‪PF=0‬‬ ‫‪PF=1‬‬

‫‪8FB3‬‬ ‫‪11111000‬‬ ‫‪1010000110001101‬‬

‫תוצאה ‪ 16‬סיביות‬ ‫תוצאה ‪ 8‬סיביות‬ ‫תוצאה ‪ 16‬סיביות‬

‫________________________________________________________________________________________________________________________‬
‫‪www.zaher.co.il‬‬ ‫‪-1-‬‬
‫‪16‬‬ ‫מיקרו מחשבים‬

‫‪ .3‬דגל נשא העזר ‪Auxiliary Flag - AF‬‬

‫אם מתקבל נשא בפעולת חיבור מהסיבית הרביעית לסיבית‬ ‫הוא דגל שמקבל '‪'1‬‬
‫החמישית )בהקסה מהספרה הראשונה לשנייה( או לווה בפעולת חיסור מהסיבית החמישית‬
‫לסיבית הרביעית )בהקסה מהספרה השנייה לראשונה(‪,‬אחרת הוא מקבל '‪.'0‬‬
‫למשל ‪:‬‬
‫‪AF=1‬‬ ‫‪AF=0‬‬ ‫‪AF=1‬‬
‫‪D 12 14‬‬ ‫‪0 10‬‬ ‫‪0 10‬‬ ‫‪1 1‬‬ ‫‪1 1 1 1 1‬‬
‫‪FE34‬‬ ‫‪11001110‬‬ ‫‪11001101‬‬
‫‪-‬‬ ‫‪-‬‬ ‫‪+‬‬
‫‪D567‬‬ ‫‪00101001‬‬ ‫‪01011011‬‬
‫_______‬ ‫___________‬ ‫___________‬
‫‪28CD‬‬ ‫‪10100101‬‬ ‫‪00101000‬‬

‫‪ .4‬דגל האפס ‪Zero Flag - ZF‬‬


‫הוא דגל שמקבל '‪ '1‬אם תוצאת החישוב שהתקבלה היא אפס‪ ,‬אחרת הוא מקבל '‪. '0‬‬
‫למשל ‪:‬‬
‫‪1 1 1 1‬‬ ‫‪0 10‬‬ ‫‪0 10‬‬ ‫‪1 1 1 1 1 1 1 1‬‬
‫‪2A9D‬‬ ‫‪11001110‬‬ ‫‪11111111‬‬
‫‪+‬‬ ‫‪-‬‬ ‫‪+‬‬
‫‪D563‬‬ ‫‪00101001‬‬ ‫‪00000001‬‬
‫_______‬ ‫___________‬ ‫___________‬
‫‪ZF=0‬‬ ‫‪0000‬‬ ‫‪ZF=0‬‬ ‫‪10100101‬‬ ‫‪ZF=1 0 0 0 0 0 0 0 0‬‬

‫‪Sign Flag - SF‬‬ ‫‪ .5‬דגל הסימן‬

‫הוא דגל שמקבל את ערכה של הסיבית המשמעותית ביותר בתוצאה ‪ ,‬כידוע במשלים ל‪,2 -‬‬
‫מספר חיובי מסתיים בסיבית '‪ , '0‬ומספר שלילי מסתיים ב '‪. '1‬ולכן אם תוצאת החישוב היא‬
‫שלילית ‪ ,‬הדגל מקבל את הערך '‪ , '1‬אחרת הוא '‪). '0‬בהקסה אם הספרה השמאלית בין ‪ 0‬ל‪7 -‬‬
‫אז ‪ ,SF=0‬ואם היא בין ‪ 8‬ל‪ F -‬אז ‪.(SF=1‬‬

‫למשל ‪:‬‬
‫‪SF=1‬‬ ‫‪SF=1‬‬ ‫‪SF = 0‬‬
‫‪1 1‬‬ ‫‪0 10‬‬ ‫‪0 10‬‬ ‫‪1 1‬‬ ‫‪1 1 1 1 1‬‬
‫‪FE34‬‬ ‫‪11001110‬‬ ‫‪11001101‬‬
‫‪+‬‬ ‫‪-‬‬ ‫‪+‬‬
‫‪D563‬‬ ‫‪00101001‬‬ ‫‪01011011‬‬
‫_______‬ ‫___________‬ ‫___________‬
‫‪D397‬‬ ‫‪10100101‬‬ ‫‪00101000‬‬

‫________________________________________________________________________________________________________________________‬
‫‪www.zaher.co.il‬‬ ‫‪-2-‬‬
‫‪17‬‬ ‫מיקרו מחשבים‬

‫‪ .6‬דגל הגלישה ‪Overflow Flag OF‬‬

‫הוא דגל שמקבל '‪ ,'1‬כאשר משתנה היעד אינו מספיק רחב כדי להכיל את תוצאת החישוב‪,‬‬
‫ז"א התוצאה שגויה מבחינת משלים ל‪ .2 -‬אחרת הוא מקבל '‪. '0‬‬
‫כלל‪ :‬אם הנשא שנכנס ל ‪ MSB‬שונה מהנשא היוצא מה ‪ , MSB‬אז ‪ , OF = 1‬אחרת ‪.OF = 0‬‬
‫למשל ‪:‬‬
‫‪OF=1‬‬ ‫‪OF=1‬‬ ‫‪OF=1‬‬
‫‪0 10 10‬‬ ‫‪0 10‬‬ ‫‪1‬‬ ‫‪1 1 1 1 1‬‬
‫‪7E34‬‬ ‫‪11001110‬‬ ‫‪11001101‬‬
‫‪+‬‬ ‫‪-‬‬ ‫‪+‬‬
‫‪11 63‬‬ ‫‪01101001‬‬ ‫‪10011011‬‬
‫_______‬ ‫___________‬ ‫___________‬
‫‪8F97‬‬ ‫‪01100101‬‬ ‫‪01101000‬‬

‫בדגמה הראשונה חיברנו שני מספרים שליליים וקיבלנו תוצאה חיובית ! ‪.‬‬
‫בדגמה השנייה חיסרנו מספר חיובי ממספר שלילי וקיבלנו מספר חיובי ! ‪.‬‬
‫בדגמה השלישית חיברנו שני מספרים חיוביים וקיבלנו מספר שלילי !‪.‬‬

‫‪ ‬דגלי הבקרה ‪:‬‬


‫הם דגלים שהערכים שלהם נקבעים ע"י המתכנת ‪,‬ובאמצעותם הוא יכול לשלוט באופן‬
‫הפעולה של ה‪ . 8086/88 -‬ולכן הם נקראים דגלי הבקרה ‪.‬‬

‫‪ .1‬דגל המלכודת ‪Trap Flag TF‬‬

‫ידוע גם בשם דגל צעד יחיד‪ ,‬כאשר הוא נקבע '‪ ,'1‬מתבצעת פסיקת צעד‪-‬יחיד‬
‫) ‪ , ( BRAKEPOINT‬לאחר ביצוע ההוראה הבאה ‪ .‬פסיקה זו תאפס את הדגל ‪. TF‬‬

‫‪Interrupt Enable Flag IF‬‬ ‫‪ .2‬דגל אפשור הפסיקות‬

‫כאשר הוא נקבע '‪ ,'1‬ה‪ 8086/88 -‬יענה לכל בקשת פסיקה שתתקבל במבוא הפסיקה שלו‬
‫מכל התקן היקפי אחר‪ .‬אחרת ה ‪ 8086/88‬לא נענה לבקשות פסיקה שיתקבלו אצלו‪ .‬קובעים דגל‬
‫זה כ '‪ '0‬כאשר חשוב לנו כי התכנית תתבצע במהירות וללא הפסקה‪.‬‬

‫‪Direction Flag DF‬‬ ‫‪ .3‬דגל הכיוון‬

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

‫________________________________________________________________________________________________________________________‬
‫‪www.zaher.co.il‬‬ ‫‪-3-‬‬
‫‪18‬‬ ‫מיקרו מחשבים‬

‫דף עבודה בדגלים‬

‫‪ .1‬מהי משמעותו של דגל‪ ,‬האם כל סיבית במחשב היא דגל‪ ,‬נמק‪.‬‬

‫‪ .2‬מה ההבדל בין שתי קבוצות הדגלים‪ ,‬נמק‪.‬‬

‫‪ .3‬נתון כי לאחר ביצוע פעולת חיבור במעבד‪ ,‬מצב הדגלים היה ‪PF = 1, OF = 0 , ZF =0, :‬‬
‫‪ SF = 1, CF = 0‬מהו המידע שנותן כל אחד מדגלים אלה לגבי התוצאה‪ ,‬נמק‪.‬‬

‫‪ .4‬בצע את הפעולת הבאות ותאר את מצבו של כל אחד מהדגלים ‪,SF,PF,CF,AF,OF,ZF‬‬


‫לאחר כל פעולה‪:‬‬

‫‪10110101‬‬ ‫‪11110000‬‬ ‫‪10110011‬‬


‫‪+‬‬ ‫‪-‬‬ ‫‪+‬‬
‫‪01001010‬‬ ‫‪00001111‬‬ ‫‪10010110‬‬
‫__________‬ ‫__________‬ ‫__________‬

‫= ‪CF‬‬ ‫= ‪CF‬‬ ‫= ‪CF‬‬

‫= ‪PF‬‬ ‫= ‪PF‬‬ ‫= ‪PF‬‬

‫= ‪SF‬‬ ‫= ‪SF‬‬ ‫= ‪SF‬‬

‫= ‪ZF‬‬ ‫= ‪ZF‬‬ ‫= ‪ZF‬‬

‫= ‪OF‬‬ ‫= ‪OF‬‬ ‫= ‪OF‬‬

‫= ‪AF‬‬ ‫= ‪AF‬‬ ‫= ‪AF‬‬

‫‪ .5‬בפעולת השוואה שהתבצעה במעבד בין האוגר ‪ AL‬לבין האוגר ‪) ,BL‬ההשואה מתבצעת‬
‫ע"י הפחתת ערך האוגר ‪ BL‬מהאוגר ‪ ,( AL‬תאר את מצב הדגלים ‪ CF‬ו‪ , ZF -‬כדי לזהות‬
‫כל אחד משלושת המקרים‪:‬‬

‫‪BL = AL‬‬ ‫‪-iii‬‬ ‫‪BL < AL‬‬ ‫‪-ii‬‬ ‫‪BL > AL‬‬ ‫‪-i‬‬

‫עבודה נעימה !‬

‫________________________________________________________________________________________________________________________‬
‫‪www.zaher.co.il‬‬ ‫‪-1-‬‬
‫‪19‬‬ ‫מבנה פקודה בשפת סף‬ ‫מיקרו מחשבים‬

‫הפקודות בשפת ס
מיוצגות בצורה הבאה ‪:‬‬

‫אופרנד_מקור ‪ ,‬אופרנד_יעד קוד_הפעולה‬


‫כעת נסביר את המשמעות של כל מרכיב ממרכיבי הפקודה ‪:‬‬

‫‪ Operand‬אופרנד‪ :‬נקרא ג השדה‪ ,‬הוא המקו בגו


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

‫‪ Operation Code‬קוד הפעולה‪ ,‬מייצג את הפקודה בשפת ס


‪ /‬אסמבלר‪.‬‬

‫‪ Destination‬אופרנד היעד‪ ,‬מייצג את המקו בזיכרו או האוגר שעליו מבוצעת‬


‫הפקודה‪ ,‬האופרנד הזה לא יכול להיות נתו בשו אופ‪ ,‬אלא רק אוגר או כתובת של‬
‫זיכרו‪.‬‬

‫‪ Source‬אופרנד המקור‪ ,‬מייצג את המקו בזיכרו‪ ,‬או האוגר שממנו מביאי נתו‪,‬‬
‫האופרנד הזה יכול להיות ג הנתו עצמו שעליו מבצעי את הפקודה‪.‬‬

‫חלק מהפקודות עובד ע אופרנד אחד‪ ,‬ואילו חלק מה עובד בלי אופרנד בכלל‪ .‬את הפקודות‬
‫האלה נציי מאוחר יותר‪.‬‬
‫כעת‪ ,‬נציי פקודה וננסה להבי בעזרתה את המבנה הזה‪:‬‬

‫‪MOV AX,501FH‬‬

‫בפקודה זו בחלק של קוד הפעולה‪ ,‬רואי את הפקודה ‪ ,MOV‬זוהי פקודה בשפת אסמבלר‬
‫שמבצעת העברת נתוני‪.‬‬

‫בחלק של אופרנד היעד‪ ,‬רואי ‪ ,AX‬שהוא אוגר ב ‪ 16‬סיביות במעבד‪ ,‬משמעות הדבר‬
‫שאחרי ביצוע הפקודה‪ ,‬הנתו יועבר לאוגר זה‪.‬‬
‫הפסיק ) ‪ ( ,‬הוא זה שמפריד בי שני האופרנדי‪.‬‬

‫בחלק של אופרנד המקור‪ ,‬רואי ‪ ,501FH‬זהו הנתו שצריכי להעביר אותו‪ .‬במקרה זה‬
‫רשמנו את הנתו עצמו באופרנד ולא את האוגר או כתובת תא הזיכרו שמכיל אותו‪.‬‬

‫לסיו פקודה זו מעבירה את המספר ‪ 501FH‬לאוגר ‪. AX‬‬

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

‫למשל ‪:‬‬

‫‪MOV AX , 40‬‬ ‫;‬ ‫‪AX‬‬ ‫הפקודה מעבירה את המספר ‪ 0040 10‬לאוגר‬

‫‪INC BL‬‬ ‫;‬ ‫הפקודה מוסיפה ‪ 1‬לערכו של ‪BL‬‬

‫________________________________________________________________________________________________________________________‬
‫‪www.zaher.co.il‬‬ ‫‪-1-‬‬
‫‪20‬‬ ‫פקודת ‪MOV‬‬ ‫מיקרו מחשבים‬

‫פקודת ‪ MOV‬היא פקודה בשפת אסמבלר שמעבירה נתוני לאוגרי המעבד או לתאי‬
‫הזיכרו או בי אוגרי המעבד ותאי הזיכרו‪.‬‬
‫תחביר הפקודה הוא ‪:‬‬
‫מקור‪,‬יעד ‪MOV‬‬

‫• דגלי מושפעי מהפקודה ‪ :‬אי‬


‫משמעותה של הפקודה‪ ,‬היא העתקת‪/‬העברת הנתו שנמצא במקור ליעד‪ ,‬כדי להשתמש‬
‫בפקודה הזו צריכי לשמור על מס' כללי‪:‬‬

‫‪ .1‬ביעד מותר שיהיה אוגר או כתובת זיכרו ואסור שיהיה מספר ‪.‬‬
‫הפקודה ‪ MOV AL,20‬משמעותה העברת המספר ‪ 2010‬לאוגר ‪ AL‬ז"א ‪AL= 14H‬‬

‫הפקודה ‪ MOV 40,DL‬אינה חוקית מאחר ופירוש הפקודה חסר טע כי אי משמעות‬
‫להעברת תוכ האוגר ‪ DL‬למספר ‪.! 40‬‬

‫‪ .2‬מקובל לייצג את תוכ האוגרי ותאי הזיכרו במחשב בשיטה הבינארית או‬
‫ההקסאדיצימאלית‪ .‬א רושמי את הנתו בפקודה ולא מצייני את הבסיס בו הוא מיוצג אז‬
‫ברירת המחדל שהוא מיוצג בעשרוני‪ ,‬א נרשו אחרי המספר ‪ H‬אז המחשב מתייחס למספר‬
‫כאל מספר הקסאדיצימאלי‪ ,‬וא נרשו אחרי המספר ‪ B‬אז המחשב מתייחס למספר כאל מספר‬
‫בינארי‪.‬‬

‫הפקודה ‪ MOV AX,56FBH‬משמעותה העברת המספר ‪ 56FBH‬לאוגר ‪.AX‬‬

‫הפקודה ‪ MOV AL,01101101B‬משמעותה העברת המספר המצוי בבסיס בינארי‬


‫לאוגר ‪. AL‬‬

‫‪ .3‬כאשר מעבירי נתו לאוגר במעבד‪ ,‬צרי& להיות התאמה בי גודל הנתו לבי גודל האוגר‪.‬‬
‫כלומר בפנייה לאוגר ב ‪ 8‬סיביות‪ ,‬המספר המכסימלי שאפשר להעביר הוא‪,‬‬
‫‪25510 = FFH = 111111112‬‬
‫כי זהו המספר הגדול ביותר שאוגר ב ‪ 8‬סיביות יכול לאחס ‪.‬‬
‫לעומת זאת‪ ,‬בפנייה לאוגר ב ‪ 16‬סיביות ‪ ,‬המספר המכסימלי שאפשר להעביר הוא ‪,‬‬
‫‪6553510= FFFFH= 11111111111111112‬‬

‫למשל הפקודה ‪ MOV CL,500H‬אינה חוקית כי המספר המצוי יותר גדול מהמספר‬
‫המותר להעביר לאוגר ‪ 8‬סיביות‪.‬‬

‫הפקודה ‪ MOV BL,DX‬אינה חוקית מפני שאי התאמה בגודל האופרנדי‪.‬‬

‫הפקודה ‪ MOV AX,BH‬אינה חוקית מפני שאי התאמה בגודל האופרנדי‪.‬‬

‫הפקודה ‪ MOV SI,20H‬משמעותה העברת המספר ‪ 0020H‬לאוגר ‪( 0020 = 20 ) , SI‬‬


‫כלומר ‪ .SI = 0020H‬מותר שהמספר יהיה קט מהאופרנד‪ ,‬במקרה זה המחשב משלי‬
‫________________________________________________________________________________________________________________________‬
‫‪www.zaher.co.il‬‬ ‫‪-1-‬‬
‫‪21‬‬ ‫פקודת ‪MOV‬‬ ‫מיקרו מחשבים‬
‫את שאר הסיביות השמאליות של האוגר באפסי ) כי אפס משמאל לא משנה את ער&‬
‫המספר (‪.‬‬

‫הפקודה ‪ MOV AL,BH‬משמעותה העברת עותק של תוכ האוגר ‪ BH‬לאוגר ‪,AL‬‬


‫) תוכ האוגר ‪ BH‬נשמר ולא משתנה (‪.‬‬

‫הפקודה ‪ MOV DX,CX‬משמעותה העברת עותק של תוכ האוגר ‪ CX‬לאוגר ‪,DX‬‬


‫) תוכ האוגר ‪ CX‬נשמר ולא משתנה (‪.‬‬

‫‪ .4‬א הספרה השמאלית בנתו שצריכי להעביר היא אות אז צריכי להוסי‪ +‬אפס משמאל‬
‫למספר‪.‬‬

‫הפקודה ‪ MOV AH,D4H‬אינה חוקית‪.‬‬

‫הפקודה ‪ MOV AH,0D4H‬משמעותה העברת המספר ‪ D4H‬לאוגר ‪.AH‬‬

‫‪ .5‬אפשר להעביר לאוגר מסויי קוד ‪ ASCII‬של תו כלשהו ע"י הצבת התו המבוקש בי גרשיי‪.‬‬

‫הפקודה ’‪ MOV AL,’a‬משמעותה העברת קוד ‪ ASCII‬שמייצג את האות ‪ a‬באנגלית‪.‬‬

‫‪ .6‬כאשר מעבירי נתו לאוגר סגמנט ‪ ,‬אסור לרשו את הנתו בפקודה‪ ,‬אלה שהנתו צרי&‬
‫להיות באוגר או בזיכרו‪.‬‬

‫הפקודה ‪ MOV DS,AX‬חוקית והיא מעבירה עותק של תוכ האוגר ‪ AX‬ל ‪.DS‬‬

‫הפקודה ‪ MOV DS,5000H‬אינה חוקית‪.‬‬

‫פנייה לזיכרון באמצעות הפקודה ‪MOV‬‬


‫כאשר נרצה לכתוב נתו לתא זיכרו או לקרוא נתו מתא זיכרו‪ ,‬המעבד בעצ פונה‬
‫לזיכרו‪ ,‬בפעולות אלה יש מספר חוקי שצריכי לשמור עליה‪:‬‬

‫‪ .1‬בפנייה לזיכרו צריכי לציי את כתובת תא הזיכרו באחד מהאוגרי ‪ ,SI,DI,BX‬או לרשו‬
‫את התווית ) ‪ ( LABEL‬שמצביעה על התא א הנתו נמצא בסגמנט הנתוני‪ ,‬או לציי את‬
‫הכתובת באוגר ‪ BP‬א הנתו נמצא בסגמנט המחסנית ‪ .‬האוגר שמכיל את הכתובת צרי& להיות‬
‫בי סוגריי מרובעי‪.‬‬

‫הפקודה ‪ MOV [DI],AL‬משמעותה העברת עותק מתוכ האוגר ‪ AL‬לתא‬


‫זיכרו שכתובתו נמצאת באוגר ‪. DI‬‬

‫הפקודה ‪ MOV [DI],AX‬משמעותה העברת עותק מתוכ האוגר ‪,AL‬לתא זיכרו‬


‫שכתובתו נמצאת באוגר ‪ ,DI‬והעברת עותק מתוכ האוגר ‪ AH‬לתא העוקב שכתובתו‬
‫נמצאת באוגר ‪. 1+ DI‬‬
‫‪A L‬‬ ‫‪[DI] , AH‬‬ ‫]‪[DI+1‬‬
‫________________________________________________________________________________________________________________________‬
‫‪www.zaher.co.il‬‬ ‫‪-2-‬‬
‫‪22‬‬ ‫פקודת ‪MOV‬‬ ‫מיקרו מחשבים‬
‫הפקודה ]‪ MOV BL,[SI‬משמעותה העברת עותק מתוכ תא הזיכרו שכתובתו נמצאת‬
‫באוגר ‪ SI‬לאוגר ‪.BL‬‬

‫הפקודה ]‪ MOV DX,[SI‬משמעותה העברת עותק מתוכ תא זיכרו שכתובתו נמצאת‬


‫באוגר ‪ SI‬לאוגר ‪ ,DL‬והעברת עותק של תוכ התא העוקב שכתובתו נמצאת באוגר ‪SI‬‬
‫‪ 1 +‬לאוגר ‪.DH‬‬
‫]‪[SI‬‬ ‫]‪DL , [SI+1‬‬ ‫‪DH‬‬

‫הפקודה ‪ MOV [AX],CL‬אינה חוקית כי אסור להשתמש באוגר ‪ AX‬כמצביע‬


‫על תא זיכרו ‪.‬‬

‫הפקודה ‪ MOV [2000H],BH‬אינה חוקית כי אסור לציי את הכתובת ישירות‬


‫בי סוגריי ‪.‬‬

‫‪ .2‬אסור להעביר נתו מתא זיכרו לתא זיכרו אחר ישירות ‪ ,‬כדי לבצע את הפעולה הזו צריכי‬
‫להשתמש באוגר עזר ‪.‬‬

‫הפקודה ]‪ MOV [DI],[SI‬אינה חוקית ‪.‬‬

‫הפקודות הבאות‬
‫]‪MOV AL,[SI‬‬
‫‪MOV [DI],AL‬‬
‫מעבירות עותק מתוכ תא הזיכרו שכתובתו נמצאת באוגר ‪ SI‬לתא אחר שכתובתו‬
‫נמצאת באוגר ‪ , DI‬השתמשנו כא באוגר עזר ‪. AL‬‬

‫‪ .3‬אסור להשתמש באותו אוגר כמצביע על תא זיכרו וכנתו באותה פקודה ‪.‬‬

‫הפקודה ‪ ,MOV [BX],BH‬אינה חוקית מפני שהאוגר ‪ BH‬הוא חלק מהאוגר ‪. BX‬‬

‫‪ .4‬אסור להשתמש בשני אוגרי אינדקס או שני אוגרי בסיס כדי להצביע על כתובת בפקודה אחת‪.‬‬

‫הפקודה ]‪ ,MOV AL,[SI+DI‬אינה חוקית כי שני האוגרי המצביעי על הכתובת ה‬


‫אוגרי אינדקס‪.‬‬

‫הפקודה ]‪ ,MOV AL,[BP-BX‬אינה חוקית כי שני האוגרי המצביעי על הכתובת ה‬


‫אוגרי בסיס ‪.‬‬

‫הפקודה ]‪ ,MOV AL,[SI+BX‬משמעותה העברת עותק מתוכ תא הזיכרו שכתובתו‬


‫היא סכו ערכי האוגרי ‪ SI‬ו‪ ,BX .‬לתו& האוגר ‪.AL‬‬

‫‪ .5‬דר& פקודת ‪ MOV‬אפשר ג להעביר את הכתובת הלוגית של משתנה מסוי לתו& אוגר‪ ,‬ע"י‬
‫שימוש באופרטור ‪.OFFSET‬‬

‫הפקודה ‪ , MOV DX,OFFSET MSG‬משמעותה העברת הכתובת הלוגית של המשתנה‬


‫‪ MSG‬לתו& האוגר ‪.DX‬‬
‫________________________________________________________________________________________________________________________‬
‫‪www.zaher.co.il‬‬ ‫‪-3-‬‬
‫‪23‬‬ ‫פקודת ‪MOV‬‬ ‫מיקרו מחשבים‬

‫הפקודה ‪ , MOV AL,OFFSET SUM‬אינה חוקית מפני שכתובת לוגית היא בגודל של‬
‫‪ 16‬סיביות ‪ ,‬לכ האוגר צרי& להיות בגודל של ‪ 16‬סיביות ‪.‬‬

‫אפשר ג לקבל את הכתובת הלוגית של משתנה מסוי ‪ ,‬ע"י שימוש בפקודת ‪. LEA‬‬

‫פקודת ‪Load Effective Address - LEA‬‬

‫פקודת ‪ LEA‬היא פקודה בשפת אסמבלר שמעבירה את הכתובת הלוגית של משתנה‬


‫מסוי לאוגר ב ‪ 16‬סיביות ‪.‬‬
‫תחביר הפקודה הוא ‪:‬‬
‫משתנה ‪ ,‬אוגר_‪_16‬סיביות ‪LEA‬‬
‫• דגלי מושפעי מהפקודה ‪ :‬אי‬

‫הפקודה ‪ , LEA DX,MSG‬משמעותה העברת הכתובת הלוגית של המשתנה ‪MSG‬‬


‫לתו& האוגר ‪. DX‬‬

‫הפקודה ‪ , LEA BL,SUM‬אינה חוקית מפני שכתובת לוגית היא בגודל של ‪ 16‬סיביות‪,‬‬
‫לכ האוגר צרי& להיות בגודל של ‪ 16‬סיביות ‪.‬‬

‫________________________________________________________________________________________________________________________‬
‫‪www.zaher.co.il‬‬ ‫‪-4-‬‬
24 MOV ‫דף עבודה בפקודת‬ ‫מיקרו מחשבים‬

‫ וא
היא לא חוקית‬,‫ א
הפקודה חוקית הסבר את משמעותה‬,‫השל
את הטבלה הבאה‬ .1
: ‫ציי את הסיבה‬

‫חוקית‬
‫ סיבה‬/‫משמעות‬ ‫לא‬/ ‫כ‬ ‫הפקודה‬ '‫מס‬
MOV AL,60 1

MOV AH,50H 2

MOV BX,AX 3

MOV CL,E3H 4

MOV DH,0D4H 5

MOV CH,0FB1H 6

MOV CH,DX 7

MOV AX,BL 8

MOV AH,AL 9

MOV DL,256 10

MOV DH,255 11

MOV SI,AX 12

MOV BX,DI 13

MOV DL,SI 14

MOV AX,70H 15

MOV BL,70H 16

MOV [CX],AL 17

MOV [BX],AL 18

MOV [BL],AL 19

MOV [DI],DX 20

MOV [DI],5FH 21

MOV[345D],AL 22

________________________________________________________________________________________________________________________
www.zaher.co.il -1-
25 MOV ‫דף עבודה בפקודת‬ ‫מיקרו מחשבים‬
MOV [678C],90H 23

MOV [BX],[SI] 24

MOV DL,[SI] 25

MOV CX,[SI] 26

MOV AX,65432H 27

MOV [SI+3],DL 28

MOV [DI+15],AX 29

MOV DX,67FH 30

MOV [BX],BL 31

MOV [BX+SI],AL 32

MOV [SI+DX],CL 33

MOV [SI+DI],DL 34

MOV [DI-23H],CL 35

MOV AX,DI 36

MOV AL,TOTAL 37

MOV SUM,BX 38

. ‫ התכנית‬%‫ ערו' טבלת מעקב של התכנית הבאה ורשו


את תוכ כל אחד מהאוגרי
בסו‬.2

AX BX CX DX
‫פקודות התכנית‬ CH CL DH DL
AH AL BH BL
MOV AX,67FEH
MOV BL,AH
MOV BH,AL
MOV CX,BX
MOV DX,78H
MOV AL,DH
MOV AH,DL
MOV BX,678H
‫ערך סופי‬

________________________________________________________________________________________________________________________
www.zaher.co.il -2-
‫‪26‬‬ ‫דף עבודה בפקודת ‪MOV‬‬ ‫מיקרו מחשבים‬

‫‪ .3‬ערו' טבלת מעקב של התכנית הבאה ורשו


את תוכ כל אחד מהאוגרי
בסו‪ %‬התכנית ‪.‬‬

‫‪BX‬‬ ‫‪CX‬‬ ‫‪DX‬‬


‫פקודות התכנית‬ ‫‪SI‬‬ ‫‪CH CL‬‬ ‫‪DH DL‬‬
‫‪BH BL‬‬
‫‪MOV BX,0FEH‬‬
‫‪MOV CL,BH‬‬
‫‪MOV CH,90H‬‬
‫‪MOV SI,CX‬‬
‫‪MOV DX,1A2BH‬‬
‫‪MOV DL,CH‬‬
‫‪MOV DH,BL‬‬
‫‪MOV SI,678H‬‬
‫ערך סופי‬

‫‪ .4‬ערו' טבלת מעקב של התכנית הבאה ורשו


את תוכ כל אחד מהאוגרי
ותאי הזיכרו‬
‫בסו‪ %‬התכנית ‪.‬‬

‫‪AX‬‬ ‫‪DX‬‬ ‫תוכ‬ ‫כתובת‬


‫פקודות התכנית‬ ‫‪SI‬‬ ‫‪DI‬‬ ‫‪DH DL‬‬
‫‪AH AL‬‬ ‫‪90‬‬ ‫‪200H‬‬
‫‪MOV SI,200H‬‬
‫‪MOV AX,405H‬‬ ‫‪77‬‬ ‫‪201H‬‬
‫‪MOV [SI],AH‬‬
‫]‪MOV DH,[SI‬‬ ‫‪00‬‬ ‫‪202H‬‬
‫‪MOV DI,203H‬‬ ‫‪6D‬‬ ‫‪203H‬‬
‫‪MOV [DI],AL‬‬
‫‪MOV DL,34H‬‬ ‫‪5B‬‬ ‫‪204H‬‬
‫‪MOV [SI],DX‬‬
‫]‪MOV AX,[DI+1‬‬ ‫‪86‬‬ ‫‪205H‬‬
‫ערך סופי‬ ‫‪3A‬‬ ‫‪206H‬‬

‫‪ .5‬כתוב קטע של תכנית אשר מציב את המספר ‪ , 6EH‬באוגרי


‪. AL , BH , CL , DH ,‬‬

‫‪ .6‬כתוב קטע של תכנית אשר מציב את המספר ‪ ,8FH‬בתאי הזיכרו שכתובת


‪321H ,320H‬‬
‫‪. ,399H , 400H‬‬

‫‪ .7‬כתוב קטע של תכנית אשר קורא נתו מתא זיכרו שכתובתו ‪ ,300H‬ומציב אותו באוגר‬
‫‪.BH‬‬

‫‪ .8‬כתוב קטע של תכנית אשר מחלי‪ %‬את תוכ שני האוגרי


‪. AL ,DH‬‬

‫________________________________________________________________________________________________________________________‬
‫‪www.zaher.co.il‬‬ ‫‪-3-‬‬
‫‪27‬‬ ‫דף עבודה בפקודת ‪MOV‬‬ ‫מיקרו מחשבים‬

‫‪ .9‬כתוב קטע של תכנית אשר מעתיק את הנתו שנמצא בכתובת ‪ 320H‬לתא אחר בזיכרו‬
‫שנמצא בכתובת ‪. 230H‬‬

‫‪ .10‬כתוב קטע של תכנית אשר מחלי‪ %‬את תוכ שני תאי הזיכרו שכתובת
‪. 400H , 410H‬‬

‫‪ .11‬כתוב קטע של תכנית אשר מאפס את תא הזיכרו בכתובת ‪. 350H‬‬

‫‪ .12‬כתוב שתי פקודות שמעבירות את הכתובת הלוגית של משתנה בש


‪ TOTAL‬לתו' האוגר‬
‫‪. DX‬‬

‫‪ .13‬נתו כי תוכ תאי הזיכרו לפני ביצוע התכנית הוא ‪:‬‬

‫‪350H‬‬ ‫‪351H‬‬ ‫‪352H‬‬ ‫‪353H‬‬ ‫‪354H‬‬ ‫‪355H‬‬ ‫‪356H‬‬ ‫כתובת‬


‫‪22H‬‬ ‫‪3FH‬‬ ‫‪47H‬‬ ‫‪00H‬‬ ‫‪A9H‬‬ ‫‪4BH‬‬ ‫‪9EH‬‬ ‫תוכ‬

‫תאר את מצבו של הזיכרו ‪ ,‬אחרי ביצוע הפעולות הבאות ‪:‬‬

‫‪MOV SI,352H‬‬
‫]‪MOV AX,[SI‬‬
‫‪MOV BL,AH‬‬
‫‪MOV BH,59H‬‬
‫]‪MOV DH,[SI+3‬‬
‫‪MOV [SI-1],BH‬‬
‫‪MOV DI,356H‬‬
‫]‪MOV AL,[DI‬‬
‫‪MOV [DI],AH‬‬

‫עבודה נעימה‬

‫________________________________________________________________________________________________________________________‬
‫‪www.zaher.co.il‬‬ ‫‪-4-‬‬
‫שיטות מעון ‪Addressing Modes‬‬
‫‪28‬‬ ‫מיקרו מחשבים‬
‫שיטות מעון ‪Addressing Modes‬‬

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

‫בשפת אסמבלר ‪ 8086/88‬יש מספר שיטות מעו שנתאר מייד‪:‬‬

‫‪ .1‬מעון אוגר ‪Register Addressing‬‬


‫בשיטת מעו זו‪ ,‬מצייני את האופרנדי באמצעות אוגרי המעבד‪ ,‬הוראות במעו אוגר ה‬
‫ההוראות המהירות ביותר מאחר והגישה לאוגרי המעבד מהירה יותר מהגישה לזיכרו‪.‬‬
‫דוגמאות לפקודות בשיטה זו‪:‬‬
‫‪MOV AX , BX‬‬
‫‪MOV CL , DH‬‬

‫‪ .2‬מעון מיידי ‪Immediate Addressing‬‬


‫בשיטת מעו זו‪ ,‬הנתו מופיע בתו הפקודה‪ ,‬אפשר להשתמש במעו מיידי רק א ערכו של‬
‫הנתו ידוע מראש‪.‬‬
‫דוגמאות לפקודות בשיטה זו‪:‬‬
‫‪MOV CX , 1F3H‬‬
‫‪MOV BL , 0B5H‬‬

‫‪ .3‬מעון ישיר ‪Direct Addressing‬‬


‫בשיטת מעו זו‪ ,‬משתמשי בתווית ) ש משתנה( כדי לציי בהוראה את כתובת האופרנד‬
‫הנמצא בזיכרו‪ .‬אופרנד המוגדר בשיטה זו יכול להיות אופרנד מקור או יעד‪ .‬הדבר דומה לשימוש‬
‫במשתני בשפות עיליות‪.‬‬
‫דוגמאות לפקודות בשיטה זו‪:‬‬
‫‪MOV DX , TOTAL‬‬
‫הפקודה מעבירה את תוכ משתנה בגודל מילה שנקרא ‪ TOTAL‬לאוגר ‪DX‬‬

‫‪MOV AH , SUM‬‬
‫הפקודה מעבירה את תוכ משתנה בגודל בית שנקרא ‪ SUM‬לאוגר ‪.AH‬‬

‫________________________________________________________________________________________________________________________‬
‫‪www.zaher.co.il‬‬ ‫‪-1-‬‬
‫שיטות מעון ‪Addressing Modes‬‬
‫‪29‬‬ ‫מיקרו מחשבים‬

‫‪Register Indirect Addressing‬‬ ‫‪ .4‬מעון עקיף באמצעות אוגר‬


‫בשיטת מעו זו הכתובת הלוגית של האופרנד שמורה בתו אוגר ב ‪ 16‬סיביות‪ ,‬המשמש‬
‫כמצביע על תא זיכרו‪ .‬האוגרי שיכולי לשמש כמצביע על תא זיכרו ה כזכור‪SI,DI,BX :‬‬
‫מצביעי על נתו בסגמנט הנתוני‪ .‬והאוגר ‪ BP‬שמשמש כמצביע על נתו במחסנית‪.‬‬
‫דוגמאות לפקודות בשיטה זו‪:‬‬
‫]‪MOV DH , [SI‬‬
‫‪MOV [DI] , AL‬‬

‫‪ .5‬מעון אינדקס‬
‫בשיטת מעו זו משתמשי באחד מאוגרי האינדקס ‪ ,DI,SI‬ועוד היסט כדי לציי את כתובת‬
‫תא הזיכרו‪.‬‬
‫דוגמאות לפקודות בשיטה זו‪:‬‬
‫]‪MOV DX , [SI+7‬‬
‫‪MOV [DI-50H] , AL‬‬

‫‪ .6‬מעון בסיס‬
‫בשיטת מעו זו משתמשי באחד מאוגרי הבסיס ‪ ,BP,BX‬ועוד היסט כדי לציי את כתובת‬
‫תא הזיכרו ‪.‬‬
‫דוגמאות לפקודות בשיטה זו‪:‬‬
‫]‪MOV CL , [BX+7‬‬
‫‪MOV [BP-50H] , BH‬‬

‫‪ .7‬מעון אינדקס בסיס‬


‫בשיטת מעו זו משתמשי באחד מאוגרי הבסיס ‪ ,BP,BX‬ואחד מאוגרי האינדקס ‪SI,DI‬‬
‫כדי לציי את כתובת תא הזיכרו ‪.‬‬
‫דוגמאות לפקודות בשיטה זו‪:‬‬
‫]‪MOV CL , [BX+SI‬‬
‫]‪MOV DH , [BP-SI‬‬

‫________________________________________________________________________________________________________________________‬
‫‪www.zaher.co.il‬‬ ‫‪-2-‬‬
‫שיטות מעון ‪Addressing Modes‬‬
‫‪30‬‬ ‫מיקרו מחשבים‬

‫‪ .8‬מעון אינדקס בסיס עם הזזה‬


‫בשיטת מעו זו משתמשי באחד מאוגרי הבסיס ‪ ,BP,BX‬ואחד מאוגרי האינדקס ‪SI,DI‬‬
‫ועוד היסט כדי לציי את כתובת תא הזיכרו‪.‬‬
‫דוגמאות לפקודות בשיטה זו‪:‬‬
‫]‪MOV CL , [BX+SI+80‬‬
‫‪MOV [BX-DI+17H] , DH‬‬
‫‪MOV [BP+DI-30H] , AL‬‬
‫]‪MOV DH , [BP-SI+57‬‬

‫‪ .9‬מעון יחסי באמצעות אוגר‬


‫משתמשי בשיטת מעו זו כאשר פוני למער נתוני‪ ,‬המער הוא סדרה של נתוני‬
‫השמורי בזיכרו בזה אחר זה‪ ,‬כתובת התחלתית של זיכרו תצוי באמצעות תווית‪ ,‬ואחד‬
‫מאוגרי האינדקס ‪ SI,DI‬מציי את המספר הסידורי של התא במער הנתוני‪.‬‬
‫דוגמא לפקודה בשיטה זו‪:‬‬
‫]‪MOV CL , TEMPERATURE[SI‬‬

‫בפקודה זו מעבירי את הנתו בסדרת הנתוני שמתחילה במקו ‪TEMPERATURE‬‬


‫ומיקומו נמצא באוגר ‪ SI‬לתו האוגר ‪. CL‬‬

‫‪ .10‬מעון יחסי באמצעות אוגר עם היסט‬


‫משתמשי בשיטת מעו זו כאשר פוני למער נתוני‪ ,‬כתובת התחלתית של זיכרו תצוי‬
‫באמצעות תווית‪ ,‬ואחד מאוגרי האינדקס ‪ SI,DI‬בנוס& להיסט מציי את המספר הסידורי של‬
‫התא במער הנתוני‪.‬‬
‫דוגמא לפקודה בשיטה זו‪:‬‬
‫]‪MOV CL , TEMPERATURE[SI+3‬‬

‫בפקודה זו מעבירי את הנתו בסדרת הנתוני שמתחילה במקו ‪TEMPERATURE‬‬


‫ומיקומו נמצא באוגר ‪ SI‬ועוד ‪ 3‬לתו האוגר ‪. CL‬‬

‫________________________________________________________________________________________________________________________‬
‫‪www.zaher.co.il‬‬ ‫‪-3-‬‬
‫דף עבודה בשיטות מיעון‬
‫‪31‬‬ ‫מיקרו מחשבים‬
‫דף עבודה בשיטות מיעון‬
‫‪ .1‬כתוב פקודה אחת לפחות בכל אחת משיטות המיעו‪.‬‬
‫‪ .2‬מהי שיטת המיעו שבה מיוצגת כל אחת מהפקודות הבאות‪.‬‬
‫שיטת המיעו‬ ‫הפקודה‬ ‫מס'‬

‫‪MOV AL,60‬‬ ‫‪1‬‬

‫‪MOV AH,50H‬‬ ‫‪2‬‬

‫‪MOV BX,AX‬‬ ‫‪3‬‬

‫‪MOV AH,AL‬‬ ‫‪5‬‬

‫‪MOV [BX],AL‬‬ ‫‪18‬‬

‫]‪MOV DL,[SI‬‬ ‫‪25‬‬

‫‪MOV [SI+3],DL‬‬ ‫‪28‬‬

‫‪MOV [DI+15],AX‬‬ ‫‪29‬‬

‫‪MOV DX,67FH‬‬ ‫‪30‬‬

‫‪MOV [BX+SI],AL‬‬ ‫‪32‬‬

‫‪MOV [SI+DX],CL‬‬ ‫‪33‬‬

‫‪MOV AL,TOTAL‬‬ ‫‪37‬‬

‫‪MOV SUM,BX‬‬ ‫‪38‬‬

‫‪ .3‬מהי שיטת המיעו שבה ביצוע הפקודות יהיה המהיר ביותר‪.‬‬

‫עבודה נעימה‬
‫________________________________________________________________________________________________________________________‬
‫‪www.zaher.co.il‬‬ ‫‪-1-‬‬
‫פקודות חשבוניות‬
‫‪32‬‬ ‫מיקרו מחשבים‬

‫פקודות חשבוניות‬
‫‪ .1‬פקודת ‪.Increment – INC‬‬

‫היא פקודה שמגדילה את ערכו של אופרנד היעד המצוי בפקודה באחד בלבד‪.‬‬
‫תחביר הפקודה ‪:‬‬
‫יעד ‪INC‬‬
‫• דגלי מושפעי מהפקודה ‪.AF,OF,PF,SF,ZF :‬‬
‫• הדגל ‪ CF‬אינו מושפע מהפקודה‪.‬‬
‫משמעותה של הפקודה‪ ,‬היא הוספת ‪ 1‬בלבד לערכו של היעד‪ ,‬התוצאה נשמרת ביעד‪.‬‬

‫דוגמאות ‪:‬‬
‫‪ INC AL‬‬
‫‪{ AL‬‬ ‫‪AL +‬‬ ‫הפקודה מוסיפה ‪ 1‬לערכו של האוגר ‪1 } .AL‬‬

‫‪ INC CX‬‬


‫‪{ CX‬‬ ‫הפקודה מוסיפה ‪ 1‬לערכו של האוגר ‪CX + 1 } .CX‬‬

‫‪ MOV AL , 59H‬‬ ‫‪AL = 5 9 H‬‬


‫‪INC AL‬‬ ‫‪AL = 5 A H‬‬ ‫‪ZF = 0, PF = 1, SF = 0‬‬
‫‪OF = 0, AF = 0‬‬

‫‪ .2‬פקודת ‪.Decrement– DEC‬‬

‫היא פקודה שמקטינה את ערכו של אופרנד היעד המצוי בפקודה באחד בלבד‪.‬‬
‫תחביר הפקודה ‪:‬‬
‫יעד ‪DEC‬‬
‫• דגלי מושפעי מהפקודה ‪.AF,OF,PF,SF,ZF :‬‬
‫• הדגל ‪ CF‬אינו מושפע מהפקודה‪.‬‬
‫משמעותה של הפקודה‪ ,‬היא הפחתת ‪ 1‬בלבד מערכו של היעד‪ ,‬התוצאה נשמרת ביעד‪.‬‬

‫דוגמאות ‪:‬‬
‫‪ DEC BL‬‬
‫‪{ BL‬‬ ‫‪BL -‬‬ ‫הפקודה מפחיתה ‪ 1‬מערכו של האוגר ‪1 } . BL‬‬

‫‪ DEC DX‬‬


‫‪{ DX‬‬ ‫הפקודה מפחיתה ‪ 1‬מערכו של האוגר ‪DX - 1 } . DX‬‬

‫________________________________________________________________________________________________________________________‬
‫‪www.zaher.co.il‬‬ ‫‪-1-‬‬
‫פקודות חשבוניות‬
‫‪33‬‬ ‫מיקרו מחשבים‬

‫‪ MOV AL,60H‬‬ ‫‪AL = 6 0 H‬‬


‫‪DEC AL‬‬ ‫‪AL = 5 F H‬‬ ‫‪ZF = 0, PF = 1, SF = 0‬‬
‫‪OF = 0, AF = 1‬‬

‫‪ .3‬פקודת ‪.Addition - ADD‬‬

‫היא פקודה שמבצעת פעולת חיבור חשבוני בי שני ערכי‪ ,‬התוצאה נשמרת ביעד‪.‬‬
‫תחביר הפקודה ‪:‬‬
‫מקור ‪ ,‬יעד ‪ADD‬‬
‫• דגלי מושפעי מהפקודה ‪.AF,OF,PF,SF,ZF,CF :‬‬
‫משמעותה של הפקודה‪ ,‬היא הוספת ער המקור ליעד‪ ,‬התוצאה נשמרת ביעד‪.‬‬

‫דוגמאות ‪:‬‬
‫‪ ADD AL , BH‬‬
‫הפקודה מוסיפה את ער האוגר ‪ BH‬לער שנמצא באוגר ‪ ,AL‬התוצאה נשמרת באוגר ‪.AL‬‬
‫‪{ AL‬‬ ‫} ‪AL + BH‬‬

‫‪ ADD CX , DX‬‬


‫הפקודה מוסיפה את ער האוגר ‪ DX‬לער שנמצא באוגר ‪ ,CX‬התוצאה נשמרת באוגר ‪.CX‬‬
‫‪{ CX‬‬ ‫} ‪CX + DX‬‬

‫‪ ADD DH , 50‬‬


‫הפקודה מוסיפה ‪ 50 ) 32H‬עשרוני ( לערכו של תוכ האוגר ‪.DH‬‬

‫‪ ADD [DI], AL‬‬


‫הפקודה מוסיפה את ערכו של האוגר ‪ AL‬לערכו של תא זיכרו שכתובתו נמצאת באוגר ‪.DI‬‬

‫‪ MOV DL , 62H‬‬ ‫‪DL = 6 2 H‬‬


‫‪ADD DL , 5FH‬‬ ‫‪+ 5FH‬‬
‫‪DL = C 1 H‬‬ ‫‪ZF = 0, PF = 0, SF = 1‬‬
‫‪OF = 1, AF = 1,CF = 0‬‬

‫‪ .4‬פקודת ‪.Addition With Carry - ADC‬‬

‫היא פקודה שמבצעת פעולת חיבור חשבוני בי היעד למקור‪ ,‬ומוסיפה את ער ‪CF‬‬
‫שהתקבל מהפקודה הקודמת‪ .‬התוצאה נשמרת ביעד‪.‬‬
‫תחביר הפקודה ‪:‬‬
‫מקור ‪ ,‬יעד ‪ADC‬‬
‫דגלי מושפעי מהפקודה ‪.AF,OF,PF,SF,ZF,CF :‬‬

‫________________________________________________________________________________________________________________________‬
‫‪www.zaher.co.il‬‬ ‫‪-2-‬‬
‫פקודות חשבוניות‬
‫‪34‬‬ ‫מיקרו מחשבים‬

‫משמעותה של הפקודה‪ ,‬היא הוספת ער המקור ועוד ער דגל הנשא ליעד‪ ,‬התוצאה‬
‫יעד {‬ ‫נשמרת ביעד‪ } .‬יעד ‪ +‬מקור ‪CF +‬‬
‫הפקודה שימושית כאשר פעולת החיבור מתבצעת בשלבי ויש המשכיות‪.‬‬

‫דוגמה ‪:‬‬
‫כתוב קטע תכנית המחבר את המספרי ‪.B = 675D23H , A = 3EF45H‬‬

‫רואי כי המספרי יותר גדולי ממילה ולכ אי אפשר להכיל את התוצאה בתו אוגר אחד‬
‫ב ‪ 16‬סיביות ‪.‬ולכ מכניסי את המספר ‪ A‬לשני אוגרי )‪ ,( BX,AX‬ואת המספר ‪ B‬לשני אוגרי‬
‫) ‪ ,( DX,CX‬ואז התוצאה תהיה בשני האוגרי )‪.( BX,AX‬‬
‫‪MOV AX,0EF45H‬‬ ‫‪1‬‬ ‫‪1‬‬
‫‪MOV BX,3H‬‬ ‫‪0003 EF45‬‬
‫‪MOV CX,5D23H‬‬ ‫‪+‬‬
‫‪MOV DX,67H‬‬ ‫‪0067 5D23‬‬
‫‪ADD AX,CX‬‬
‫‪ADC BX,DX‬‬ ‫‪006B 4C68‬‬

‫‪ .5‬פקודת ‪.Subtract - SUB‬‬

‫היא פקודה שמבצעת פעולת חיסור חשבוני בי שני ערכי‪ ,‬התוצאה נשמרת ביעד‪.‬‬
‫תחביר הפקודה ‪:‬‬
‫מקור ‪ ,‬יעד ‪SUB‬‬
‫דגלי מושפעי מהפקודה ‪.AF,OF,PF,SF,ZF,CF :‬‬
‫משמעותה של הפקודה‪ ,‬היא החסרת ער המקור מהיעד‪ ,‬התוצאה נשמרת ביעד‪ .‬כלומר‪,‬‬
‫יעד‬
‫‪−‬‬
‫מקור‬
‫יעד‬ ‫תוצאה‬
‫דוגמאות ‪:‬‬
‫‪ SUB AL , BH‬‬
‫הפקודה מחסרת את תוכ האוגר ‪ BH‬מהער שנמצא באוגר ‪ ,AL‬התוצאה נשמרת באוגר ‪.AL‬‬
‫‪{ AL‬‬ ‫} ‪AL - BH‬‬
‫‪ SUB CX , DX‬‬
‫הפקודה מחסרת את תוכ האוגר ‪ DX‬מערכו של ‪ CX‬ושומרת את התוצאה באוגר ‪.CX‬‬
‫‪{ CX‬‬ ‫} ‪CX - DX‬‬
‫‪ SUB BH , 50‬‬
‫הפקודה מחסירה ‪ 50 ) 32H‬עשרוני (מערכו של תוכ האוגר ‪.BH‬‬

‫________________________________________________________________________________________________________________________‬
‫‪www.zaher.co.il‬‬ ‫‪-3-‬‬
‫פקודות חשבוניות‬
‫‪35‬‬ ‫מיקרו מחשבים‬

‫]‪ SUB CX , [DI‬‬


‫הפקודה מחסירה את ערכו של נתו זיכרו בגודל מלה‪ ,‬שכתובתו נמצאת באוגר ‪ ,DI‬מתוכ האוגר‬
‫‪ ,CX‬הנתו נמצא בשני תאי זיכרו עוקבי ‪ ,‬התוצאה חוזרת לאוגר ‪.CX‬‬
‫‪5 12‬‬

‫‪ MOV DL , 62H‬‬ ‫‪DL = 6 2 H‬‬


‫‪SUB DL , 5FH‬‬ ‫‪- 5FH‬‬
‫‪DL = 0 3 H‬‬ ‫‪ZF = 0, PF = 1, SF = 0‬‬
‫‪OF = 0, AF = 1,CF = 0‬‬

‫‪ .6‬פקודת ‪.Decimal Adjust For Addition - DAA‬‬

‫היא פקודה שמבצעת התאמה לתוצאת חיבור עשרוני‪ ,‬ז"א חיבור שני מספרי המיוצגי‬
‫בקוד ‪ ,BCD‬כ שתוצאת החיבור תהיה נכונה מבחינת קוד ‪ .BCD‬ההוראה פועלת רק על‬
‫האוגר ‪ ,AL‬היא מוסיפה ‪ 6‬לתוכנו של האוגר א ערכ של ‪ 4‬הסיביות הפחות משמעותיות‬
‫) ‪ ( LSB‬של ‪ AL‬גדול מ – ‪ ,9‬או א הועבר נשא מהסיבית הרביעית לסיבית החמישית בפעולת‬
‫החיבור ז"א א )‪. (AF = 1‬‬

‫‪DAA‬‬ ‫תחביר הפקודה‪:‬‬

‫דגלי מושפעי מהפקודה ‪.AF,PF,SF,ZF,CF :‬‬


‫הדגל ‪,OF‬יקבל ער בלתי צפוי‪.‬‬
‫דוגמה ‪:‬‬
‫מה יהיה ערכו של האוגר ‪ AL‬בסו‪ +‬התכנית‪.‬‬
‫‪ MOV AH , 7H‬‬
‫‪MOV AL , 5H‬‬
‫‪ADD AL , AH‬‬
‫‪DAA‬‬
‫ערכו של האוגר ‪ AL‬אחרי פעולת החיבור יהיה ‪ .00001100‬אומנ ער זה נכו מבחינת‬
‫חישוב‪ ,‬אבל א נסתכל על התוצאה מבחינת ‪ BCD‬המספר ‪ 1100‬אינו קיי‪ .‬מאחר וערכ של ‪4‬‬
‫‪ ,(1100 B= C‬פקודת ‪ DAA‬תוסי‪ +‬את המספר ‪6‬‬ ‫‪H‬‬ ‫הסיביות הנמוכות של ‪ AL‬גדול מ‪) 9 .‬‬
‫לתוכ האוגר‪,‬וערכו של האוגר יהיה )‪ ,(0010010‬תוצאה זו שווה ל ‪ .(12)BCD‬ולכ אחרי פקודת‬
‫‪ ,DAA‬התוצאה הותאמה לקוד ‪. BCD‬‬

‫הערה‬
‫כדי שפקודת ‪ DAA‬תפעל בצורה תקינה‪ ,‬המספרי שצריכי לסכ אות צריכי להיות‬
‫מיוצגי בקוד ‪.BCD‬‬
‫________________________________________________________________________________________________________________________‬
‫‪www.zaher.co.il‬‬ ‫‪-4-‬‬
36 ‫מיקרו מחשבים‬

‫דף עבודה בפקודות חשבוניות‬

.‫מה יהיה ערכ של אופרנד היעד ושל הדגלי המבוקשי בכל פקודה‬ .1

1. MOV AL,30H CF=0 ZF=0 SF= 0 AL=


2. ADD AL,30H CF= ZF= SF= AL=
3. SUB AL,7FH CF= ZF= SF= AL=

1. MOV AL,7FH SF=0 ZF=0 PF= 0 AL=


2. INC AL SF= ZF= PF= AL=
3. SUB AL,5 SF= ZF= PF= AL=

1. MOV AH,70H CF=0 OF=0 SF= 0 AH=


2. MOV BL,35H CF= OF= SF= BL=
3. ADD BL,AH CF= OF= SF= BL=

1. MOV AX,5F30H PF=0 ZF=0 SF= 0 AX=


2. DEC AX PF= ZF= SF= AX=
3. SUB AX,327H PF= ZF= SF= AX=

1. MOV AH,70H PF=0 ZF=0 SF= 0 AH=


2. MOV BL,55H PF= ZF= SF= BL=
3. ADD AL,BL CF= ZF= SF= AL=

1. MOV BX,3F75H CF=0 ZF=0 SF= 0 BX=


2. ADD BL,5AH CF= ZF= SF= BL=
3. SUB BL,BH CF= ZF= SF= BL=

________________________________________________________________________________________________________________________
www.zaher.co.il -1-
37 ‫מיקרו מחשבים‬

1. MOV AH,53H PF=0 ZF=0 AF= 0 AH=


2. SUB AH,34H PF= ZF= AF= AH=
1. INC AH PF= ZF= AF= AH=

1. MOV AX,0FFH CF=0 ZF=0 SF= 0 AX=


2. ADD AL,1 CF= ZF= SF= AL=
3. MOV AX,0FFH CF= ZF= SF= AX=
4. ADD AX,1 CF= ZF= SF= AX=

1. MOV AX,78FFH CF=0 ZF=0 SF= 0 AX=


2. ADD AL,AH CF= ZF= SF= AL=
3. ADC AL,56H CF= ZF= SF= AL=

1. MOV AX,3427H CF=0 ZF=0 AF= 0 AX=


2. ADD AL,AH CF= ZF= AF= AL=
3. DAA CF= ZF= AF= AX=

1. MOV AX,1245H CF=0 ZF=0 AF= 0 AX=


2. ADD AL,AH CF= ZF= AF= AL=
3. DAA CF= ZF= AF= AX=

.AL ,BL ‫ מהאוגרי‬,6EH ‫כתוב קטע של תכנית אשר מפחית את המספר‬ .2

320H ‫ לתאי הזיכרו שכתובת‬8FH ‫כתוב קטע של תכנית אשר מוסי את המספר‬ .3
.321H, 399H, 400H

,BH ‫ מהאוגר‬300H ‫כתוב קטע של תכנית אשר מפחית את הנתו שבתא זיכרו בכתובת‬ .4
.BH ‫התוצאה תהיה ב‬

________________________________________________________________________________________________________________________
www.zaher.co.il -2-
‫‪38‬‬ ‫מיקרו מחשבים‬

‫‪ .5‬כתוב קטע של תכנית אשר מחבר את הנתו שנמצא בכתובת ‪ ,320H‬ע תוכ התא‬
‫שכתובתו ‪ ,230H‬ומציב את התוצאה בכתובת ‪.324H‬‬

‫‪ .6‬כתוב קטע של תכנית אשר מחבר את הנתוני המיוצגי בקוד ‪ BCD‬שנמצאי בכתובות‬
‫‪ 432H, 431H, 430H‬ומציב את התוצאה בכתובת ‪. 433H‬‬

‫‪ .7‬כתוב פקודה שתכפיל את ערכו של האוגר ‪.AL‬‬

‫‪ .8‬כתוב פקודה חשבונית שמאפסת את האוגר ‪.AH‬‬

‫‪ .9‬נתו כי תוכ תאי הזיכרו לפני ביצוע התכנית הוא ‪:‬‬

‫‪350H‬‬ ‫‪351H‬‬ ‫‪352H‬‬ ‫‪353H‬‬ ‫‪354H‬‬ ‫‪355H‬‬ ‫‪356H‬‬ ‫כתובת‬


‫‪22H‬‬ ‫‪3FH‬‬ ‫‪47H‬‬ ‫‪00H‬‬ ‫‪A9H‬‬ ‫‪4BH‬‬ ‫‪9EH‬‬ ‫תוכ‬

‫תאר את מצבו של הזיכרו ‪ ,‬אחרי ביצוע הפעולות הבאות ‪:‬‬

‫‪MOV SI,352H‬‬
‫]‪MOV AX,[SI‬‬
‫‪MOV BL,70H‬‬
‫]‪ADD BL,[SI‬‬
‫]‪ADD AH,[SI+3‬‬
‫‪SUB [SI-1],AH‬‬
‫‪MOV DI,354H‬‬
‫]‪SUB AX,[DI‬‬
‫‪MOV [DI],AH‬‬

‫עבודה נעימה‬

‫________________________________________________________________________________________________________________________‬
‫‪www.zaher.co.il‬‬ ‫‪-3-‬‬
‫פקודות השוואה וקפיצה‬
‫‪39‬‬ ‫מיקרו מחשבים‬

‫פקודת השוואה ‪Compare -‬‬


‫היא פקודה שמשווה בי שני אופרנדי ‪ ,‬התוצאה משתקפת בדגלי ‪ ,‬ולא משנה את‬
‫האופרנדי ‪ ,‬ז"א התוצאה לא נשמרת באופרנד היעד‪ .‬ולכ לפי מצב הדגלי יכולי לדעת את‬
‫תוצאת ההשוואה‪ .‬בד"כ אחרי הפקודה מופיעה פקודת קפיצה מותנית‪.‬‬

‫מקור ‪ ,‬יעד ‪CMP‬‬ ‫תחביר הפקודה‪:‬‬

‫הפקודה מחסירה את ערכו של המקור מהיעד התוצאה לא נשמרת באופרנדי ‪ ,‬אבל‬


‫משפיעה על הדגלי ‪.‬‬

‫‪AF ,SF,ZF,CF,PF,OF‬‬ ‫דגלי מושפעי ‪:‬‬

‫דוגמאות‪:‬‬

‫‪MOV DL,12H‬‬ ‫‪12‬‬ ‫‪CF=0‬‬ ‫‪PF=1‬‬


‫‪CMP DL,12H‬‬ ‫‪12 -‬‬ ‫‪ZF=1‬‬ ‫‪AF=0‬‬
‫‪00‬‬ ‫‪SF=0‬‬ ‫‪OF=0‬‬

‫נסתכל על הדגל ‪ ZF‬א הער שלו ‪ ,1‬אז המקור והיעד שווי ‪.‬‬

‫‪MOV AX,50H‬‬ ‫‪0050‬‬ ‫‪ZF=0‬‬ ‫‪AF=0‬‬


‫‪MOV BX,30H‬‬ ‫‪0030 -‬‬ ‫‪PF=0‬‬ ‫‪SF=0‬‬
‫‪CMP AX,BX‬‬ ‫‪0020‬‬ ‫‪CF=0‬‬ ‫‪OF=0‬‬

‫נסתכל על הדגל ‪ ZF‬א הער שלו ‪ ,0‬אז המקור והיעד שוני ‪ ,‬ואז נתייחס לדגל ‪ .CF‬א ‬
‫‪ ,CF = 0‬אז לא היה צור בלווה‪ ,‬כלומר היעד מספיק גדול כדי להחסיר את המקור‪ ,‬לכ היעד‬
‫גדול מהמקור‪.‬‬
‫‪1 10‬‬
‫‪0 15‬‬
‫‪MOV AL,15H‬‬ ‫‪15‬‬ ‫‪CF=1‬‬ ‫‪PF=0‬‬
‫‪CMP AL,17H‬‬ ‫‪17 -‬‬ ‫‪ZF=0‬‬ ‫‪AF=1‬‬
‫‪FE‬‬ ‫‪SF=1‬‬ ‫‪OF=0‬‬
‫נסתכל על הדגל ‪ ZF‬א הער שלו ‪ ,0‬אז המקור והיעד שוני ‪ ,‬ואז נתייחס לדגל ‪ .CF‬א ‬
‫‪ ,CF = 1‬אז היה צור בלווה‪ ,‬כלומר היעד לא מספיק גדול כדי להחסיר את המקור‪ ,‬לכ היעד‬
‫קט מהמקור‪.‬‬
‫________________________________________________________________________________________________________________________‬
‫‪www.zaher.co.il‬‬ ‫‪-1-‬‬
‫פקודות השוואה וקפיצה‬
‫‪40‬‬ ‫מיקרו מחשבים‬

‫הוראת קפיצה‪Jump -‬‬


‫לפעמי ‪ ,‬צריכי לבצע פעולה לא לפי הסדר של הפקודות בתכנית‪ ,‬או רוצי לבצע פעולה‬
‫מספר פעמי ‪ ,‬או לדלג על ביצוע פעולה מסוימת‪ ,‬לש כ נשתמש בהוראות קפיצה‪.‬‬
‫הפקודה הראשונה היא פקודה שמבצעת קפיצה ללא תנאי‪ ,‬ז"א כל פע שהתכנית מגיעה‬
‫לפקודה זו היא מבצעת קפיצה למקו אחר המסומ ע"י התווית שמופיעה בפקודה‪.‬‬

‫‪JMP Label‬‬ ‫תחביר הפקודה‪:‬‬

‫הפקודה מבצעת קפיצה למקו בתכנית המסומ ע"י ‪ ,Label‬ומש ממשיכה את ביצוע‬
‫התכנית‪.‬‬
‫דגלי מושפעי ‪ :‬אי‪.‬‬

‫למשל ‪:‬‬
‫‪MOV AL,3‬‬
‫‪JMP again‬‬
‫‪ADD AL,AL‬‬
‫‪again : INT 3‬‬
‫שים לב‪ :‬בביצוע הקטע הזה התכנית מדלגת על הפקודה ‪.ADD AL,AL‬‬

‫אזהרה‬
‫שימוש לא נכו בפקודה יכול לגרו ללולאה אינסופית שתוקעת את המחשב‪ .‬למשל‪ ,‬במקרה‬
‫הבא כל פע שהתכנית מגיעה לפקודה ‪ JMP‬היא קופצת שוב למקו המסומ ע"י ‪ ,Bad‬דבר‬
‫שגור לתכנית לבצע לולאה בלי הפסקה‪ ,‬ז"א המחשב נתקע‪.‬‬
‫‪MOV AL,5‬‬
‫‪Bad : MOV AH,7‬‬
‫‪ADD AL,AH‬‬
‫‪JMP‬‬ ‫‪Bad‬‬
‫‪MOV AH,4DH‬‬
‫למצב זה אין סוף ‪,‬ולכן הלולאה תוקעת את המחשב‪.‬‬

‫כללים לגבי השם שמופיע בתווית ‪.Label‬‬


‫התווית משמשת אותנו ככתובת לפקודה או למקו שאליו רוצי לבצע קפיצה‪ .‬ולכ אי‬
‫לה שו משמעות מבחינת הפקודות עצמ‪ .‬התווית מופיעה לפני נקודתיי ) ‪. ( :‬‬
‫אי לבחור בש תווית שמתחיל ב ספרה או נקודה‪.‬‬ ‫‪(1‬‬

‫אסור שהתווית תהיה באותו ש של פקודה למשל ‪.SUB,MOV,‬‬ ‫‪(2‬‬


‫________________________________________________________________________________________________________________________‬
‫‪www.zaher.co.il‬‬ ‫‪-2-‬‬
‫פקודות השוואה וקפיצה‬
‫‪41‬‬ ‫מיקרו מחשבים‬

‫אסור שהתווית תכלול רווח‪ ,‬ז"א התווית ‪ GOOD BYE‬לא נכונה‪ ,‬אפשר להשתמש‬ ‫‪(3‬‬
‫במק‪ %‬תחתו‪.GOOD_BYE ,‬‬
‫נית להשתמש בכל אות אנגלית גדולה וקטנה בספרות ובתווי מיוחדי ‪ ,‬כמו &‪,),@,‬‬ ‫‪(4‬‬
‫נקודה )‪.(.‬‬

‫פקודות קפיצה מותניות‬


‫לפעמי רוצי לבצע פקודה או מספר פקודות רק א מתקיי תנאי מסוי ‪ ,‬לש כ יש‬
‫פקודות המבצעות קפיצה למקו בתכנית רק א מתקיי תנאי‪ ,‬אחרת הקפיצה לא מתבצעת‬
‫והתכנית ממשיכה כרגיל‪.‬‬

‫‪ -1‬פקודת ‪Jump if Zero - JZ‬‬


‫הקפיצה מתבצעת למקו המסומ ע"י ‪ ,Label‬רק א תוצאת החישוב האחרונה היתה‬
‫אפס‪ ,‬משמעות הדבר רק א )‪ . (ZF=1‬אחרת התכנית ממשיכה לפי הסדר‪.‬‬

‫‪JZ Label‬‬ ‫תחביר הפקודה‪:‬‬

‫דגלי מושפעי ‪ :‬אי‬

‫דוגמה‪:‬‬
‫כתוב תכנית שתוסי‪ 5 %‬לאוגר ‪, AH‬א ערכו של ‪ AL‬שונה מ) ‪.3‬‬

‫‪CMP AL ,3‬‬
‫‪JZ‬‬ ‫‪SOF‬‬
‫‪ADD AH,5‬‬
‫‪SOF : INT 3‬‬
‫א ערכו של ‪ AL‬הוא ‪ 3‬אז תוצאת ההשוואה תהיה אפס‪ ,‬ולכ ‪ ZF‬יהיה ‪ ,1‬ז"א תנאי‬
‫הקפיצה מתקיי ‪ ,‬ולכ התכנית מדלגת על הפקודה ‪.Add‬‬

‫‪ -2‬פקודת ‪Jump if Not Zero - JNZ‬‬


‫הקפיצה מתבצעת למקו המסומ ע"י ‪, Label‬רק א תוצאת החישוב האחרונה שונה‬
‫מאפס‪,‬משמעות הדבר רק א )‪ . (ZF=0‬אחרת התכנית ממשיכה לפי הסדר‪.‬‬
‫תחביר הפקודה‪:‬‬
‫‪JNZ Label‬‬
‫דגלי מושפעי ‪ :‬אי‬

‫________________________________________________________________________________________________________________________‬
‫‪www.zaher.co.il‬‬ ‫‪-3-‬‬
‫פקודות השוואה וקפיצה‬
‫‪42‬‬ ‫מיקרו מחשבים‬

‫דוגמה‪:‬‬
‫כתוב תכנית שתוסי‪ 7 %‬לאוגר ‪ ,AH‬א ערכו של ‪ AL‬שווה ל – ‪.9‬‬
‫‪CMP AL,9‬‬
‫‪JNZ NO‬‬
‫‪ADD AH,7‬‬
‫‪NO : INT 3‬‬

‫א ערכו של ‪ AL‬הוא ‪ 9‬אז תוצאת החיסור תהיה אפס‪ ,‬ולכ ‪ ZF‬יהיה ‪ ,1‬ז"א תנאי‬
‫הקפיצה לא מתקיי ‪ ,‬ולכ התכנית לא מבצעת קפיצה‪ ,‬אלא ממשיכה ומבצעת את פעולת‬
‫החיבור‪ .‬אחרת א התוצאה שונה מאפס ‪ ,‬אז ‪ ZF = 0‬ז"א תנאי הקפיצה מתקיי והתכנית‬
‫מדלגת על פעולת החיבור‪.‬‬

‫‪ -3‬פקודת לולאה ‪.LOOP‬‬


‫הפקודה מפחיתה אחד מתוכ האוגר ‪ ,CX‬ומבצעת קפיצה למקו המסומ ע"י ‪,Label‬‬
‫א תוכ האוגר ‪ CX‬שונה מאפס‪ .‬הפקודה עובדת ע האוגר ‪ CX‬בלבד‪.‬‬

‫תחביר הפקודה‪:‬‬
‫‪LOOP Label‬‬
‫דגלי מושפעי ‪ :‬אי‬

‫פקודה זו מקבילה לשתי הפקודות‪:‬‬


‫‪DEC CX ‬‬
‫‪ ⇔ LOOP Label‬‬
‫‪JNZ Label ‬‬

‫פקודות ‪ LOOP‬ו) ‪ , JNZ‬ה פקודות שמשתמשי בה בד"כ במוני או בלולאות‪ ,‬ז"א‬
‫א רוצי לבצע פעולה מסוימת מס' פעמי ‪ .‬קובעי באוגר מסוי ) בד"כ זה ‪ ,CX‬כי‬
‫פקודת ‪ LOOP‬לא עובדת ע אוגר אחר ( את מס' הפעמי ‪ ,‬שרוצי לבצע את הפעולה‪ .‬כל‬
‫פע שמבצעי פעולה‪ ,‬מפחיתי מערכו של המונה ‪ 1‬ובודקי א הוא הגיע לאפס‪ .‬א כ‪,‬‬
‫אז סיימנו לבצע את הפעולה‪ ,‬אחרת התכנית תמשי לבצע את הפעולה שוב ושוב עד‬
‫שהמונה יגיע לאפס‪ .‬שיטה זו נקראת שיטת מונה מטה‪ ,‬ז"א שהמונה מתחיל מער מסוי ‬
‫ויורד עד שהוא מגיע לאפס‪.‬‬

‫________________________________________________________________________________________________________________________‬
‫‪www.zaher.co.il‬‬ ‫‪-4-‬‬
‫פקודות השוואה וקפיצה‬
‫‪43‬‬ ‫מיקרו מחשבים‬

‫דוגמה‪:‬‬
‫כתוב תכנית המאפסת בלוק זיכרו בגודל ‪ 5‬תאי שמתחיל בכתובת ‪.500H‬‬
‫או‬
‫‪MOV CX,5‬‬ ‫‪MOV CX,5‬‬
‫‪MOV DI,500H‬‬ ‫‪MOV DI,500H‬‬
‫‪MOV AL,0‬‬ ‫‪MOV AL,0‬‬
‫‪AGAIN : MOV [DI],AL‬‬ ‫‪AGAIN : MOV [DI],AL‬‬
‫‪INC DI‬‬ ‫‪INC DI‬‬
‫‪DEC CX‬‬ ‫‪LOOP AGAIN‬‬
‫‪JNZ AGAIN‬‬
‫בשתי התכניות השתמשנו באוגר ‪ CX‬כמונה‪ ,‬האוגר ‪ DI‬שמש אותנו כמצביע על תאי‬
‫הזיכרו ) כתובת (‪ ,‬אחרי שהצבנו ‪ ( AL ) 0‬בתא הראשו‪ ,‬קידמנו את האוגר ‪ DI‬באחד ז"א הגענו‬
‫לכתובת הבאה‪ ,‬הפחתנו את המונה ) ‪ ( CX‬באחד‪ ,‬ובדקנו א הוא עדיי לא הגיע לאפס סימ‬
‫שעוד לא סיימנו לבצע את כל הפעולות‪ ,‬אז התכנית מבצעת קפיצה וחוזרת ומאפסת את התא‬
‫הבא‪ .‬התהלי נמש עד שהמונה מגיע לאפס ואז מסיימי את איפוס הבלוק‪.‬‬

‫יש אפשרות שנממש מונה מעלה‪ ,‬ז"א שהמונה מתחיל לספור מאפס ועד למספר מסוי ‪,‬‬
‫אבל אז נצטר לבצע פקודה נוספת מספר פעמי השווה למספר הפעולות שרוצי לבצע‬
‫)ז"א שווה למונה(‪ ,‬הביצוע של הפקודה הנוספת מיותר‪ ,‬וגור להאטת הביצוע של התכנית‬
‫) מספר רב יותר של פקודות (‪ .‬ולכ בד"כ לא משתמשי במונה מעלה אלא במונה מטה‪.‬‬

‫בדוגמה הבאה נבצע אותה משימה שביצענו קוד ) איפוס בלוק זיכרו (‪ ,‬רק שהפע נשתמש‬
‫או‬ ‫בשיטת מונה מעלה‪.‬‬
‫‪MOV CX,0‬‬ ‫‪MOV DI,500H‬‬
‫‪MOV DI,500H‬‬ ‫‪MOV AL,0‬‬
‫‪MOV AL,0‬‬ ‫‪AGAIN : MOV [DI],AL‬‬
‫‪AGAIN : MOV [DI],AL‬‬ ‫‪INC DI‬‬
‫‪INC DI‬‬ ‫‪CMP DI,505H‬‬
‫‪INC CX‬‬ ‫‪JNZ AGAIN‬‬
‫‪CMP CX,5‬‬
‫‪JNZ AGAIN‬‬

‫________________________________________________________________________________________________________________________‬
‫‪www.zaher.co.il‬‬ ‫‪-5-‬‬
‫פקודות השוואה וקפיצה‬
‫‪44‬‬ ‫מיקרו מחשבים‬

‫רואי שבתכנית כל פע שרוצי לבדוק א סיימנו את האיפוס חייבי לבדוק א הגענו‬


‫לסו‪ ,%‬ולכ חייבי לבצע את הפקודה ‪ CMP‬דבר שאי לו צור במונה מטה‪.‬‬

‫שי לב כי במונה מעלה אי אפשר להשתמש בפקודה ‪.LOOP‬‬

‫‪ -4‬פקודת ‪Jump if Equal - JE‬‬


‫הקפיצה מתבצעת למקו המסומ ע"י ‪ ,Label‬רק א היעד והמקור יהיו שווי‪ .‬משמעות‬
‫הדבר רק א )‪ .(ZF=1‬אחרת התכנית ממשיכה לפי הסדר‪ .‬הפקודה בודקת אותו תנאי שבודקת‬
‫הפקודה ‪ ,JZ‬רק שבד"כ היא מופיעה אחרי פקודת ‪.CMP‬‬

‫‪JE Label‬‬ ‫תחביר הפקודה‪:‬‬


‫דגלי מושפעי ‪ :‬אי‬

‫דוגמה‪:‬‬
‫כתוב תכנית שתאפס את האוגר ‪, AH‬א תוכ שני האוגרי ‪ AL‬ו) ‪ BL‬שונה‪.‬‬
‫‪CMP AL,BL‬‬
‫‪JE‬‬ ‫‪SOF‬‬
‫‪MOV AH,0‬‬
‫‪SOF : INT 3‬‬

‫א תוכ שני האוגרי שווה אז תוצאת ההשוואה תהיה אפס‪ ,‬ולכ ‪ ZF‬יהיה ‪ ,1‬ז"א תנאי‬
‫הקפיצה מתקיי ) במקרה זה לא צריכי לבצע את פעולת האיפוס (‪ ,‬ולכ התכנית מדלגת על‬
‫הפקודה ‪ ,MOV‬וא התוכ שונה‪ ,‬אז תוצאת ההשוואה תהיה שונה מאפס‪ ,‬ולכ ‪ ,ZF = 0‬ז"א‬
‫תנאי הקפיצה לא יתקיי ולכ פעולת האיפוס מתבצעת‪.‬‬

‫‪ -5‬פקודת ‪Jump if Not Equal - JNE‬‬


‫הקפיצה מתבצעת למקו המסומ ע"י ‪ ,Label‬רק א היעד והמקור יהיו שוני‪.‬‬
‫משמעות הדבר רק א )‪ .(ZF=0‬אחרת התכנית ממשיכה לפי הסדר‪ .‬הפקודה בודקת אותו תנאי‬
‫שבודקת הפקודה ‪ ,JNZ‬רק שבד"כ היא מופיעה אחרי פקודת ‪.CMP‬‬

‫‪JNE Label‬‬ ‫תחביר הפקודה‪:‬‬

‫דגלי מושפעי ‪ :‬אי‬

‫________________________________________________________________________________________________________________________‬
‫‪www.zaher.co.il‬‬ ‫‪-6-‬‬
‫פקודות השוואה וקפיצה‬
‫‪45‬‬ ‫מיקרו מחשבים‬

‫דוגמה‪:‬‬
‫כתוב תכנית שתאפס את האוגר ‪ ,AH‬א תוכ שני האוגרי ‪ AL‬ו) ‪ BL‬שווה‪.‬‬
‫‪CMP AL,BL‬‬
‫‪JNE SOF‬‬
‫‪MOV AH,0‬‬
‫‪SOF : INT 3‬‬

‫א התוכ שונה‪ ,‬אז תוצאת ההשוואה תהיה שונה מאפס‪ ,‬ולכ ‪ ,ZF = 0‬ז"א תנאי‬
‫הקפיצה מתקיי ולכ הקפיצה מתבצעת ופעולת האיפוס לא מתבצעת‪ .‬וא תוכ שני האוגרי ‬
‫שווה אז תוצאת ההשוואה תהיה אפס‪ ,‬ולכ ‪ ZF‬יהיה ‪ ,1‬ז"א תנאי הקפיצה לא מתקיי )‬
‫במקרה זה צריכי לבצע את פעולת האיפוס (‪ ,‬ולכ התכנית מבצעת את הפקודה ‪.MOV‬‬

‫‪ -6‬פקודת ‪Jump if Carry - JC‬‬


‫הקפיצה מתבצעת למקו המסומ ע"י ‪ ,Label‬רק א בפעולה האחרונה היה נשא או‬
‫לווה בסיבית המשמעותית ביותר‪ .‬משמעות הדבר רק א )‪ .(CF=1‬אחרת התכנית ממשיכה לפי‬
‫הסדר‪.‬‬
‫‪JC Label‬‬ ‫תחביר הפקודה‪:‬‬
‫דגלי מושפעי ‪ :‬אי‬

‫דוגמה‪:‬‬

‫כתוב תכנית שתכפיל את תוכ האוגר ‪ ,AH‬א ער האוגר ‪ BL‬גדול או שווה ל) ‪) .90H‬אינו‬
‫קט מ) ‪.(90H‬‬
‫‪CMP BL,90H‬‬
‫‪JC‬‬ ‫‪OK‬‬
‫‪ADD AH,AH‬‬
‫‪OK :‬‬ ‫‪INT 3‬‬

‫א ער האוגר ‪ BL‬קט מ) ‪ ,90H‬אז חייב להיות לווה כדי להשלי את פעולת החיסור‪,‬‬
‫כלומר בפעולת ההשוואה מתקבל ‪ ,CF = 1‬ולכ תנאי הקפיצה מתקיי ‪ ,‬הקפיצה מתבצעת‬
‫ומדלגי על פקודת ‪ ,ADD‬אחרת ) א ער ‪ BL‬גדול או שווה( אי צור בלווה‪ ,‬לכ בפעולת‬
‫ההשוואה מתקבל ‪ ,CF = 0‬ואז תנאי הקפיצה לא מתקיי ‪ ,‬הקפיצה לא מתבצעת ולכ מבצעי ‬
‫את פקודת ‪ ,ADD‬כלומר מכפילי את ער האוגר ‪.AH‬‬
‫________________________________________________________________________________________________________________________‬
‫‪www.zaher.co.il‬‬ ‫‪-7-‬‬
‫פקודות השוואה וקפיצה‬
‫‪46‬‬ ‫מיקרו מחשבים‬

‫‪ -7‬פקודת ‪Jump if Not Carry - JNC‬‬


‫הקפיצה מתבצעת למקו המסומ ע"י ‪ ,Label‬רק א בפעולה האחרונה לא היה נשא או‬
‫לווה בסיבית המשמעותית ביותר‪ .‬משמעות הדבר רק א )‪ .(CF=0‬אחרת התכנית ממשיכה לפי‬
‫הסדר‪.‬‬
‫‪JNC Label‬‬ ‫תחביר הפקודה‪:‬‬
‫דגלי מושפעי ‪ :‬אי‬

‫דוגמה‪:‬‬
‫כתוב תכנית שתאפס את תוכ האוגר ‪ ,BH‬א ער האוגר ‪ DL‬קט מ) ‪.50H‬‬

‫‪CMP DL,50H‬‬
‫‪JNC‬‬ ‫‪ABD‬‬
‫‪SUB BH,BH‬‬
‫‪ABD :‬‬ ‫‪INT 3‬‬

‫א ער האוגר ‪ DL‬קט מ) ‪ ,50H‬אז חייב להיות לווה כדי להשלי את פעולת החיסור‪,‬‬
‫כלומר בפעולת ההשוואה מתקבל ‪ ,CF = 1‬ולכ תנאי הקפיצה לא מתקיי ‪ ,‬הקפיצה לא מתבצעת‬
‫ופקודת ‪ SUB‬מתבצעת‪ ,‬כלומר מאפסי את האוגר ‪ ,BH‬אחרת ) א ער ‪ DL‬גדול או שווה( אי‬
‫צור בלווה‪ ,‬לכ בפעולת ההשוואה מתקבל ‪ ,CF = 0‬ואז תנאי הקפיצה מתקיי ‪ ,‬הקפיצה‬
‫מתבצעת ולכ מדלגי על פקודת ‪ ,SUB‬כלומר התכנית מסתיימת ולא מתבצע איפוס לאוגר ‪.BH‬‬

‫‪ -8‬פקודת ‪Jump if Above - JA‬‬


‫הקפיצה מתבצעת למקו המסומ ע"י ‪ ,Label‬רק א בפעולת ההשוואה היעד היה גדול‬
‫מהמקור‪ .‬משמעות הדבר רק א ) ‪ ZF=0‬וג ‪ .( CF=0‬אחרת התכנית ממשיכה לפי הסדר‪.‬‬
‫תחביר הפקודה‪:‬‬
‫‪JA Label‬‬ ‫דגלי מושפעי ‪ :‬אי‬

‫דוגמה‪:‬‬
‫כתוב תכנית שתכפיל את תוכ האוגר ‪ ,AH‬א ער האוגר ‪ BL‬קט או שווה ל) ‪) .90H‬אינו‬
‫גדול מ) ‪.(90H‬‬
‫‪CMP BL,90H‬‬
‫‪JA‬‬ ‫‪OK‬‬
‫‪ADD AH,AH‬‬
‫‪OK :‬‬ ‫‪INT 3‬‬
‫________________________________________________________________________________________________________________________‬
‫‪www.zaher.co.il‬‬ ‫‪-8-‬‬
‫פקודות השוואה וקפיצה‬
‫‪47‬‬ ‫מיקרו מחשבים‬
‫א ער האוגר ‪ BL‬גדול מ) ‪ ,90H‬אז אי לווה‪ ,‬כלומר בפעולת ההשוואה מתקבל ‪,CF = 0‬‬
‫ומאחר והיעד והמקור לא שווי ‪ ,‬אז מתקבל ג ‪ ,ZF = 0‬לכ תנאי הקפיצה מתקיי ‪ ,‬הקפיצה‬
‫מתבצעת ומדלגי על פקודת ‪ ,ADD‬אחרת ) א ער ‪ BL‬קט אז יש צור בלווה‪ ,‬לכ בפעולת‬
‫ההשוואה מתקבל ‪ ,CF = 1‬וא ער ‪ BL‬שווה מתקבל ‪ (ZF = 1‬ואז תנאי הקפיצה לא מתקיי ‪,‬‬
‫הקפיצה לא מתבצעת ולכ מבצעי את פקודת ‪ ,ADD‬כלומר מכפילי את ער האוגר ‪.AH‬‬

‫‪ -9‬פקודת ‪Jump if Not Above or Equal - JNAE‬‬


‫הקפיצה מתבצעת למקו המסומ ע"י ‪ ,Label‬רק א בפעולת ההשוואה היעד היה קט‬
‫מהמקור‪ .‬משמעות הדבר רק א )‪ .(CF=1‬אחרת התכנית ממשיכה לפי הסדר‪.‬‬
‫תחביר הפקודה‪:‬‬
‫‪JNAE Label‬‬ ‫דגלי מושפעי ‪ :‬אי‬

‫דוגמה‪:‬‬

‫כתוב תכנית שתאפס את תוכ האוגר ‪ ,BH‬א ער האוגר ‪ DL‬גדול או שווה ל) ‪) .50H‬אינו‬
‫קט מ) ‪.(50H‬‬
‫‪CMP DL,50H‬‬
‫‪JNAE‬‬ ‫‪ABD‬‬
‫‪SUB BH,BH‬‬
‫‪ABD :‬‬ ‫‪INT 3‬‬

‫א ער האוגר ‪ DL‬קט מ) ‪ ,50H‬אז חייב להיות לווה כדי להשלי את פעולת החיסור‪,‬‬
‫כלומר בפעולת ההשוואה מתקבל ‪ ,CF = 1‬ולכ תנאי הקפיצה מתקיי ‪ ,‬הקפיצה מתבצעת‬
‫ופקודת ‪ SUB‬לא מתבצעת‪ ,‬כלומר לא מאפסי את האוגר ‪ ,BH‬אחרת ) א ער ‪ DL‬גדול או‬
‫שווה( אי צור בלווה‪ ,‬לכ בפעולת ההשוואה מתקבל ‪ ,CF = 0‬ואז תנאי הקפיצה לא מתקיי ‪,‬‬
‫הקפיצה לא מתבצעת ולכ מבצעי את פקודת ‪ ,SUB‬כלומר התכנית מבצעת איפוס לאוגר ‪.BH‬‬

‫________________________________________________________________________________________________________________________‬
‫‪www.zaher.co.il‬‬ ‫‪-9-‬‬
‫פקודות השוואה וקפיצה‬
‫‪48‬‬ ‫מיקרו מחשבים‬

‫סיכום פקודות קפיצה מותניות‬

‫משמעות‬ ‫תנאי‬ ‫פקודה‬


‫‪Jump if Zero‬‬ ‫בצע קפיצה א התוצאה שהתקבלה שווה לאפס‬ ‫‪JZ Label‬‬
‫‪ZF=1‬‬
‫‪Jump if Equal‬‬ ‫בצע קפיצה א היעד והמקור שווי ‬ ‫‪JE Label‬‬
‫‪Jump if Not Zero‬‬ ‫בצע קפיצה א התוצאה שהתקבלה שונה מאפס‬ ‫‪JNZ Label‬‬
‫‪ZF=0‬‬
‫‪Jump if Not Equal‬‬ ‫בצע קפיצה א היעד והמקור שוני ‬ ‫‪JNE Label‬‬
‫‪Jump if Carry‬‬ ‫בצע קפיצה א בתוצאה התקבל נשא או לווה‬ ‫‪CF=1 JC Label‬‬
‫בצע קפיצה א בתוצאה לא התקבל נשא או לווה ‪Jump if Not Carry‬‬ ‫‪CF=0 JNC Label‬‬
‫‪CF=0‬‬
‫‪Jump if Above‬‬ ‫בצע קפיצה א היעד גדול מהמקור‬ ‫‪JA Label‬‬
‫‪ZF=0‬‬
‫‪Jump if Not Above or Equal‬‬ ‫בצע קפיצה א היעד קט מהמקור‬ ‫‪CF=1 JNAE Label‬‬

‫________________________________________________________________________________________________________________________‬
‫‪www.zaher.co.il‬‬ ‫‪- 10 -‬‬
49 ‫דף עבודה בפקודות קפיצה‬ ‫מיקרו מחשבים‬

: ‫ רשו את ערכו של אוגר היעד בסו כל אחד מקטעי התוכנית הבאי‬.1

MOV AL,45H MOV AL,45H MOV BX,7B5H


SUB AL,78H SUB AL,AL ADD BL,BH
JNC END JNZ END JZ END
MOV AL,56H MOV AL,56H DEC BL
END : INT 3 JMP OK END : INT 3
END : ADD AL,81H
OK : INT 3

MOV AX,0FFH MOV DH,9DH MOV CL,0B5H


INC AL ADD DH,DH ADD CL,97H
JZ END JC END JC SOF
MOV AL,56H MOV CL,3 MOV CL,50H
END : SUB AL,0FFH SUB DH,CL SOF : INT 3
INT 3 END : INT 3

MOV CX,4E05H MOV AH,00H MOV DL,45H


SUB CH,CL MOV AL,03H SUB DL,38H
JNZ END ABD: ADD AH,05H JMP END
MOV CL,96H DEC AL ADD DL,5FH
END : ADD CL,1 JNZ ABD END : INT 3
INT 3 INT 3

MOV AX,7845H MOV SI,100H MOV AH,41H


CMP AH,78H MOV AX,SI CMP AL,41H
JNE END SUB AL,1 JMP END
SUB AL,AL JNC END INC AL
END : INT 3 INC AL END : DEC AL
END : INT 3 INC AL
INT 3

‫ א הנתו שנמצא בתא זיכרו‬BH ‫ כתוב קטע של תכנית אשר מאפס את תוכ האוגר‬.2
.‫ אחרת התכנית תסתיי‬,45H ‫ שווה ל‬340H ‫שכתובתו‬

‫ אחרת‬,‫ א ה שוני‬AL,BH ‫ כתוב קטע של תכנית שיחלי את תוכ שני האוגרי‬.3


. ‫התכנית תאפס אות‬

"‫ שונה מ‬BL ‫ א ערכו של‬, DL‫ באוגר‬FFH ‫ כתוב קטע של תכנית אשר מציב את המספר‬.4
.0 ‫ את המספר‬DL‫ אחרת התכנית תציב באוגר‬,58H

.400H ‫ שמתחיל בכתובת‬,‫ תאי‬5 ‫ כתוב תת"שגרה אשר מאפסת בלוק זיכרו בגודל‬.5

‫ בתי שנמצא החל מהכתובת‬15H ‫ כתוב תת"שגרה אשר מעבירה בלוק נתוני בגודל‬.6
.330H ‫ למקו אחר בזיכרו החל מהכתובת‬,300H
________________________________________________________________________________________________________________________
www.zaher.co.il -1-
‫‪50‬‬ ‫דף עבודה בפקודות קפיצה‬ ‫מיקרו מחשבים‬

‫‪ .7‬כתוב תת"שגרה אשר מחליפה בלוק נתוני בגודל ‪ 10H‬בתי שנמצא החל מהכתובת‬
‫‪ ,200H‬ע בלוק אחר בזיכרו שמתחיל מהכתובת ‪.330H‬‬

‫‪ .8‬כתוב תת"שגרה אשר סופרת את מס' תאי הזיכרו בלוק נתוני בגודל ‪ 20H‬תאי שמתחיל‬
‫בכתובת ‪ ,1000H‬אשר מכילי ערכי קטני מ" ‪ ,5AH‬ומציבה את התוצאה בתא זיכרו‬
‫בכתובת ‪.1020H‬‬

‫‪ .9‬שאלה מס' ‪ 7‬בבגרות ‪98‬‬

‫‪ .10‬שאלה מס' ‪ 7‬בבגרות ‪00‬‬

‫________________________________________________________________________________________________________________________‬
‫‪www.zaher.co.il‬‬ ‫‪-2-‬‬
‫‪51‬‬ ‫דף עבודה בפקודות קפיצה‬ ‫מיקרו מחשבים‬

‫‪ .11‬שאלה מס' ‪ 6‬בבגרות ‪02‬‬

‫‪ .12‬שאלה מס' ‪ 8‬בבגרות ‪04‬‬

‫‪ .13‬נתו כי תאי הזיכרו בכתובות ‪ 2000H‬עד ‪ 2009H‬מכילי נתוני בקוד ‪ . BCD‬בכל תא‬
‫נתו מספר דו"ספרתי ‪ .‬כתוב תת " שיגרה המסכמת את ערכי התאי שלעיל בסיכו‬
‫עשרוני ומציבה את התוצאה בתא ‪ . 2010H‬ידוע כי התוצאה אינה עולה על ‪. 99‬‬

‫________________________________________________________________________________________________________________________‬
‫‪www.zaher.co.il‬‬ ‫‪-3-‬‬
‫‪52‬‬ ‫דף עבודה בפקודות קפיצה‬ ‫מיקרו מחשבים‬

‫‪ .14‬שאלה מס' ‪ 9‬בבגרות ‪03‬‬

‫‪ .15‬שאלה מס' ‪ 8‬בבגרות ‪05‬‬

‫________________________________________________________________________________________________________________________‬
‫‪www.zaher.co.il‬‬ ‫‪-4-‬‬
‫‪53‬‬ ‫דף עבודה בפקודות קפיצה‬ ‫מיקרו מחשבים‬

‫‪ .16‬שאלה מס' ‪ 6‬בבגרות ‪04‬‬

‫‪ .17‬שאלה מס' ‪ 6‬בבגרות ‪04‬‬

‫________________________________________________________________________________________________________________________‬
‫‪www.zaher.co.il‬‬ ‫‪-5-‬‬
‫‪54‬‬ ‫דף עבודה בפקודות קפיצה‬ ‫מיקרו מחשבים‬

‫‪ .18‬שאלה מס' ‪ 15‬בבגרות ‪04‬‬

‫‪ .19‬שאלה מס' ‪ 15‬בבגרות ‪04‬‬

‫עבודה נעימה‬
‫________________________________________________________________________________________________________________________‬
‫‪www.zaher.co.il‬‬ ‫‪-6-‬‬
‫‪55‬‬ ‫פקודות סיבוב‬ ‫מיקרו מחשבים‬

‫פקודות סיבוב‬
‫‪ .1‬פקודת ‪Rotate Right – ROR‬‬
‫היא פקודה שמסובבת ימינה את כל הסיביות של היעד‪ ,‬פע אחת או מספר פעמי‬
‫הנמצא באוגר ‪ ) .CL‬כאשר מספר ההזזות גדול מ ‪ 1‬משתמשי באוגר ‪ CL‬בלבד להגדרת מספר‬
‫ההזזות(‪.‬‬
‫‪ , 1‬יעד ‪ROR‬‬
‫או‬ ‫תחביר הפקודה הוא ‪:‬‬
‫‪ , CL‬יעד ‪ROR‬‬

‫הסיבית הימנית )‪ (LSB‬שיוצאת מהיעד‪ ,‬נכנסת לדגל ‪ CF‬וחוזרת לסיבית השמאלית‬


‫)שמתרוקנת( ביעד‪.‬‬
‫‪D7‬‬ ‫‪D6‬‬ ‫‪D5‬‬ ‫‪D4‬‬ ‫‪D3‬‬ ‫‪D2‬‬ ‫‪D1‬‬ ‫‪D0‬‬
‫‪CF‬‬
‫‪D0‬‬ ‫‪D7‬‬ ‫‪D6‬‬ ‫‪D5‬‬ ‫‪D4‬‬ ‫‪D3‬‬ ‫‪D2‬‬ ‫‪D1‬‬ ‫‪D0‬‬

‫דגלי מושפעי‪.CF,OF :‬‬


‫הדגל ‪ CF‬יקבל תמיד את הסיבית האחרונה שיצאה מהיעד‪.‬‬
‫הדגל ‪ OF‬מושפע רק כאשר מבצעי הזזה אחת בלבד אחרת הוא לא מוגדר‪ .‬הדגל ‪OF‬‬
‫יקבל '‪ '1‬א הפעולה שינתה את ערכה של סיבית הסימ )‪ ,(MSB‬אחרת הוא יקבל ' ‪.'0‬‬
‫הסיבית הימנית )‪ (LSB‬קובעת את הזוגיות של מספר בינארי‪ ,‬כאשר ‪ D0=0‬המספר‬
‫יהיה זוגי‪ ,‬וכאשר ‪ D0=1‬המספר יהיה אי זוגי‪.‬‬

‫דוגמה ‪:2‬‬ ‫דוגמה ‪:1‬‬


‫מהו ערכו של האוגר ‪ AH‬ושל הדגל ‪CF‬‬ ‫מהו ערכו של האוגר ‪ AL‬ושל הדגל ‪CF‬‬
‫לאחר ביצוע הפקודות הבאות‪.‬‬ ‫לאחר ביצוע הפקודות הבאות‪.‬‬
‫‪MOV CL , 03H‬‬ ‫‪MOV AL , 49H‬‬
‫‪MOV AH , 53H‬‬ ‫‪ROR AL , 1‬‬
‫‪ROR AH , CL‬‬
‫‪0 1 0 1 0 0 1 1‬‬ ‫‪ AH‬לפני‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪ AL‬לפני‬
‫‪CF‬‬ ‫‪CF‬‬
‫‪I‬‬ ‫‪1 0 1 0 1 0 0 1‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪1‬‬
‫לאחר ביצוע פקודת ‪: ROR‬‬
‫‪II‬‬ ‫‪1 1 0 1 0 1 0 0‬‬ ‫‪1‬‬
‫‪AL = A4H , CF = 1‬‬
‫‪III 0 1 1 0 1 0 1 0‬‬ ‫‪0‬‬
‫לאחר הביצוע ‪AL = 6AH , CF = 0‬‬
‫________________________________________________________________________________________________________________________‬
‫‪www.zaher.co.il‬‬ ‫‪-1-‬‬
‫‪56‬‬ ‫פקודות סיבוב‬ ‫מיקרו מחשבים‬

‫הערה ‪1‬‬
‫אפשר לראות שכאשר מספר ההזזות גדול מאחד‪ ,‬קשה לפרט את כל ההזזות אחת‬
‫אחרי השנייה כדי להגיע לתוצאה הסופית‪ ) ,‬כמו בדוגמה ‪ .(2‬לכ יש שיטה יותר פשוטה שבה‬
‫מתקבלת התוצאה מיד בפעולה אחת‪ .‬א הסיבוב בכיוו ימי ‪ ,‬אז מתחילי לספור סיביות מצד‬
‫ימי השווה למספר ההזזות‪ ,‬מעתיקי אות באותו סדר לצד שמאל של המספר‪ ,‬וכ‪ $‬מתקבל‬
‫המספר החדש‪ .‬ערכו של הדגל ‪ CF‬יהיה שווה לערכה של הסיבית השמאלית ביותר מבי הסיביות‬
‫שהוצאנו מימי ‪.‬‬
‫למשל א נתייחס לדוגמה ‪ ,2‬אז נוכל להגיע לאותה תוצאה בשיטה הפשוטה ‪:‬‬
‫‪MOV CL , 03H‬‬ ‫‬
‫‪MOV AH , 53H‬‬ ‫‪0 1 0 1 0 0 1 1‬‬ ‫‪ AH‬לפני‬
‫‪ROR AH , CL‬‬ ‫‬ ‫‪CF‬‬
‫‪0 1 1 0 1 0 1 0‬‬ ‫‪ AH‬אחרי‬ ‫‪0‬‬

‫לאחר הביצוע ‪AL = 6AH , CF = 0‬‬

‫‪ .2‬פקודת ‪Rotate Left – ROL‬‬


‫היא פקודה שמסובבת שמאלה את כל הסיביות של היעד‪ ,‬פע אחת או מספר פעמי‬
‫הנמצא באוגר ‪ ) .CL‬כאשר מספר ההזזות גדול מ ‪ 1‬משתמשי באוגר ‪ CL‬בלבד להגדרת מספר‬
‫ההזזות(‪.‬‬
‫‪ , 1‬יעד ‪ROL‬‬
‫או‬ ‫תחביר הפקודה הוא ‪:‬‬
‫‪ , CL‬יעד ‪ROL‬‬

‫הסיבית השמאלית )‪ (MSB‬שיוצאת מהיעד‪ ,‬נכנסת לדגל ‪ CF‬וחוזרת לסיבית הימנית‬


‫)שמתרוקנת( ביעד‪.‬‬
‫‪D7‬‬ ‫‪D6‬‬ ‫‪D5‬‬ ‫‪D4‬‬ ‫‪D3‬‬ ‫‪D2‬‬ ‫‪D1‬‬ ‫‪D0‬‬
‫‪CF‬‬
‫‪D7‬‬ ‫‪D6‬‬ ‫‪D5‬‬ ‫‪D4‬‬ ‫‪D3‬‬ ‫‪D2‬‬ ‫‪D1‬‬ ‫‪D0‬‬ ‫‪D7‬‬

‫דגלי מושפעי‪.CF,OF :‬‬


‫הדגל ‪ CF‬יקבל תמיד את הסיבית האחרונה שיצאה מהיעד‪.‬‬
‫הדגל ‪ OF‬מושפע רק כאשר מבצעי הזזה אחת בלבד אחרת הוא לא מוגדר‪ .‬הדגל ‪OF‬‬
‫יקבל '‪ '1‬א הפעולה שינתה את ערכה של סיבית הסימ )‪ ,(MSB‬אחרת הוא יקבל ' ‪.'0‬‬

‫________________________________________________________________________________________________________________________‬
‫‪www.zaher.co.il‬‬ ‫‪-2-‬‬
‫‪57‬‬ ‫פקודות סיבוב‬ ‫מיקרו מחשבים‬

‫הסיבית השמאלית )‪ (MSB‬קובעת את הקוטביות של מספר בינארי‪ ,‬כאשר ‪D7=0‬‬


‫המספר יהיה חיובי‪ ,‬וכאשר ‪ D7=1‬המספר יהיה שלילי‪.‬‬

‫דוגמה ‪:4‬‬ ‫דוגמה ‪:3‬‬


‫מהו ערכו של האוגר ‪ AH‬ושל הדגל ‪CF‬‬ ‫מהו ערכו של האוגר ‪ AL‬ושל הדגל ‪CF‬‬
‫לאחר ביצוע הפקודות הבאות‪.‬‬ ‫לאחר ביצוע הפקודות הבאות‪.‬‬
‫‪MOV CL , 03H‬‬ ‫‪MOV AL , 49H‬‬
‫‪MOV AH , 53H‬‬ ‫‪ROL AL , 1‬‬
‫‪ROL AH , CL‬‬
‫‪ AH‬לפני‬ ‫‪0 1 0 1 0 0 1 1‬‬ ‫‪ AL‬לפני‬ ‫‪0 1 0 0 1 0 0 1‬‬
‫‪CF‬‬ ‫‪CF‬‬
‫‪0‬‬ ‫‪1 0 1 0 0 1 1 0‬‬ ‫‪I‬‬ ‫‪0‬‬ ‫‪1 0 0 1 0 0 1 0‬‬

‫‪1‬‬ ‫‪0 1 0 0 1 1 0 1‬‬ ‫‪II‬‬ ‫לאחר ביצוע פקודת ‪: ROR‬‬

‫‪0‬‬ ‫‪1 0 0 1 1 0 1 0 III‬‬ ‫‪AL = 92H , CF = 0‬‬

‫לאחר הביצוע ‪AL = 9AH , CF = 0‬‬

‫הערה ‪2‬‬
‫אפשר לראות שכאשר מספר ההזזות גדול מאחד‪ ,‬קשה לפרט את כל ההזזות אחת‬
‫אחרי השנייה כדי להגיע לתוצאה הסופית‪ ) ,‬כמו בדוגמה ‪ .(4‬לכ יש שיטה יותר פשוטה שבה א‬
‫הסיבוב בכיוו שמאל‪ ,‬אז מתחילי לספור סיביות מצד שמאל השווה למספר ההזזות‪ ,‬מעתיקי‬
‫אות באותו סדר לצד ימי של המספר‪ ,‬וכ‪ $‬מתקבל המספר החדש‪ .‬ערכו של הדגל ‪ CF‬יהיה שווה‬
‫לערכה של הסיבית הימנית ביותר מבי הסיביות שהוצאנו משמאל‪.‬‬
‫למשל א נתייחס לדוגמה ‪ ,4‬אז נוכל להגיע לאותה תוצאה בשיטה הפשוטה ‪:‬‬

‫‪MOV CL , 03H‬‬
‫‪MOV AH , 53H‬‬ ‫‬
‫‪ROL AH , CL‬‬ ‫‪ AH‬לפני‬ ‫‪0 1 0 1 0 0 1 1‬‬
‫‪CF‬‬ ‫‬
‫‪0‬‬ ‫‪ AH‬אחרי‬ ‫‪1 0 0 1 1 0 1 0‬‬

‫לאחר הביצוע ‪AL = 9AH , CF = 0‬‬

‫________________________________________________________________________________________________________________________‬
‫‪www.zaher.co.il‬‬ ‫‪-3-‬‬
‫דף עבודה בפקודות סיבוב‬
‫‪58‬‬ ‫מיקרו מחשבים‬
‫דף עבודה בפקודות סיבוב‬

‫מהו תוכ האוגר ‪ AH‬ודגל הנשא ‪ CF‬אחרי ביצוע קטעי התכנית הבאי‪:‬‬ ‫‪.1‬‬

‫‪MOV AH,6AH‬‬ ‫‪MOV AH,55H‬‬


‫‪ROL AH,1‬‬ ‫‪ROR AH,1‬‬
‫= ‪AH‬‬ ‫= ‪CF‬‬ ‫= ‪AH‬‬ ‫= ‪CF‬‬
‫‪MOV AH,37H‬‬ ‫‪MOV AH,5FH‬‬
‫‪MOV CL,2‬‬ ‫‪MOV CL,2‬‬
‫‪ROR AH,CL‬‬ ‫‪ROL AH,CL‬‬
‫= ‪AH‬‬ ‫= ‪CF‬‬ ‫= ‪AH‬‬ ‫= ‪CF‬‬
‫‪MOV AH,17H‬‬ ‫‪MOV AH,6AH‬‬
‫‪MOV CL,4‬‬ ‫‪MOV CL,8‬‬
‫‪ROR AH,CL‬‬ ‫‪ROL AH,CL‬‬
‫= ‪AH‬‬ ‫= ‪CF‬‬ ‫= ‪AH‬‬ ‫= ‪CF‬‬

‫כתוב תכנית שמחליפה את סדר הספרות בהקסה של תוכ תא זיכרו בכתובת ‪.200H‬‬ ‫‪.2‬‬
‫למשל‪ ,‬א תוכ התא היה ‪ ,2F‬הוא יהפו ל ‪.F2‬‬
‫כתוב תכנית שמחליפה את תוכ האוגרי ‪ BL‬ו ‪ ).BH‬השתמש בטכניקת הסיבוב(‬ ‫‪.3‬‬
‫כתוב תכנית שמאפסת את תוכ תא הזיכרו בכתובת ‪ ,130H‬א ער האוגר ‪ AL‬זוגי‪,‬‬ ‫‪.4‬‬
‫אחרת התכנית תסתיי‪.‬‬
‫כתוב תכנית שמכפילה את תוכ תא הזיכרו בכתובת ‪ ,1A0H‬א ער תא הזיכרו ‬ ‫‪.5‬‬
‫בכתובת ‪ 300H‬שלילי‪ ,‬אחרת התכנית תאפס אותו‪.‬‬
‫כתוב תכנית שמציבה את המספר ‪ ,7AH‬באוגרי ‪ ,AL, BH‬א ער הסיבית ‪D5‬‬ ‫‪.6‬‬
‫באוגר ‪ DL‬הוא '‪.'1‬‬
‫על פי שאלה מס' ‪ 6‬בבגרות ‪98‬‬ ‫‪.7‬‬
‫כתוב תת שגרה המונה את מס' הסיביות שערכ '‪ '1‬בתא הזיכרו שכתובתו‬ ‫א‪.‬‬
‫‪ .10H‬ומציבה את התוצאה בתא הזיכרו שכתובתו ‪.11H‬‬
‫מהו השינוי הנדרש על מנת שתת שהגרה תמנה את הסיביות שערכ '‪.'0‬‬ ‫ב‪.‬‬

‫________________________________________________________________________________________________________________________‬
‫‪www.zaher.co.il‬‬ ‫‪-1-‬‬
‫דף עבודה בפקודות סיבוב‬
‫‪59‬‬ ‫מיקרו מחשבים‬

‫על פי שאלה מס' ‪ 6‬בבגרות ‪00‬‬ ‫‪.8‬‬


‫בלוק נתוני ב ‪ 20H‬בתי מתחיל בכתובת ‪ .1000H‬כל בית מכיל נתו מספרי חיובי‪.‬‬
‫כתוב תת שגרה המונה את מס' הנתוני הזוגיי בבלוק‪ .‬ומציבה את התוצאה‬ ‫א‪.‬‬
‫בתא הזיכרו שכתובתו ‪.1021H‬‬
‫מהו השינוי הנדרש על מנת שתת שהגרה תמנה את הנתוני האי זוגיי בבלוק‪.‬‬ ‫ב‪.‬‬

‫שאלה מס' ‪ 6‬בבגרות ‪05‬‬ ‫‪.9‬‬

‫________________________________________________________________________________________________________________________‬
‫‪www.zaher.co.il‬‬ ‫‪-2-‬‬
‫דף עבודה בפקודות סיבוב‬
‫‪60‬‬ ‫מיקרו מחשבים‬
‫שאלה מס' ‪ 15‬בבגרות ‪05‬‬ ‫‪.10‬‬

‫שאלה מס' ‪ 7‬בבגרות ‪99‬‬ ‫‪.11‬‬

‫________________________________________________________________________________________________________________________‬
‫‪www.zaher.co.il‬‬ ‫‪-3-‬‬
‫דף עבודה בפקודות סיבוב‬
‫‪61‬‬ ‫מיקרו מחשבים‬

‫שאלה מס' ‪ 6‬בבגרות ‪06‬‬ ‫‪.12‬‬

‫בלוק נתוני ב ‪ 10H‬בתי מתחיל בכתובת ‪ .1030H‬כל בית מכיל נתו מספרי‪.‬‬ ‫‪.13‬‬

‫כתוב תת שגרה המונה את מס' הנתוני החיוביי בבלוק‪ .‬ומציבה את התוצאה‬ ‫א‪.‬‬
‫בתא הזיכרו שכתובתו ‪.1040H‬‬
‫מהו השינוי הנדרש על מנת שתת שהגרה תמנה את הנתוני השליליי בבלוק‪.‬‬ ‫ב‪.‬‬

‫עבודה נעימה‬
‫________________________________________________________________________________________________________________________‬
‫‪www.zaher.co.il‬‬ ‫‪-4-‬‬
‫פקודות לוגיות‬
‫‪62‬‬ ‫מיקרו מחשבים‬
‫פקודות לוגיות‬
‫ה פקודות שמבצעות פעולות לוגיות בי הסיביות של האופרנדי בפקודה‪.‬‬

‫‪ .1‬פקודת ‪NOT‬‬
‫היא פקודה שמבצעת פעולת היפו לוגי לכל אחת מסיביות האוגר או תא הזיכרו המופיע‬
‫בפקודה‪.‬‬
‫יעד ‪NOT‬‬ ‫תחביר הפקודה הוא ‪:‬‬

‫דגלי מושפעי מהפקודה ‪ :‬אי‪.‬‬

‫מהטבלה רואי כי המוצא תמיד הפו‬ ‫כניסה‬ ‫מוצא‬


‫מהכניסה‪ ,‬ז"א בפקודה תמיד הופכי את‬ ‫‪A‬‬ ‫‪F‬‬
‫‪0‬‬ ‫‪1‬‬
‫הסיביות של האופרנד‪.‬‬ ‫‪1‬‬ ‫‪0‬‬

‫דוגמה ‪:1‬‬
‫‪ MOV AL,92H‬‬ ‫‪ AL‬לפני‬ ‫‪1 0 0 1 0 0 1 0‬‬
‫‪NOT AL‬‬ ‫‪AL = 6DH‬‬
‫‪ AL 0 1 1 0 1 1 0 1‬אחרי‬

‫‪ .2‬פקודת ‪OR‬‬

‫היא פקודה שמבצעת פעולת חיבור לוגי )‪ (OR‬בי הסיביות של היעד והמקור‪ ,‬התוצאה‬
‫נשמרת ביעד‪.‬‬
‫מקור ‪ ,‬יעד ‪OR‬‬ ‫תחביר הפקודה הוא ‪:‬‬

‫דגלי מושפעי מהפקודה ‪. PF,SF,ZF:‬‬


‫הדגלי ‪ OF ,CF :‬מתאפסי ‪.‬‬
‫הדגל ‪ AF‬בלתי מוגדר‪ ,‬ז"א מקבל ער בלתי צפוי ולא משק את התוצאה ‪.‬‬

‫הפקודה משמשת אותנו לקביעת ערכי של סיביות מסוימות ל ‪ , 1‬תו כדי שמירה על ערכ‬
‫של שאר הסיביות ‪.‬‬
‫אפשר לראות מהטבלה כי א מבצעי‬ ‫כניסות‬ ‫מוצא‬
‫‪A‬‬ ‫‪B‬‬ ‫‪F‬‬
‫‪ OR‬ע ‪ 0‬מקבלי אותה סיבית‪ ,‬וא‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬
‫מבצעי ‪ OR‬ע ‪ ,1‬מקבלי ‪.1‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪1‬‬
‫‪1‬‬ ‫‪0‬‬ ‫‪1‬‬
‫‪1‬‬ ‫‪1‬‬ ‫‪1‬‬
‫________________________________________________________________________________________________________________________‬
‫‪www.zaher.co.il‬‬ ‫‪-1-‬‬
‫פקודות לוגיות‬
‫‪63‬‬ ‫מיקרו מחשבים‬

‫דוגמה ‪:2‬‬
‫‪ MOV AL,4DH‬‬ ‫‪ AL‬לפני‬‫‪0 1 0 0 1 1 0 1‬‬
‫‪20H 0 0 1 0 0 0 0 0‬‬
‫‪OR AL,20H‬‬ ‫‪AL = 6DH‬‬
‫‪ AL 0 1 1 0 1 1 0 1‬אחרי‬

‫‪AF = U, SF = 0 , ZF = 0 , PF = 0 , CF = 0 , OF = 0‬‬ ‫מצב הדגלי אחרי הביצוע‬


‫‪U - Undefinde‬‬
‫רואי כי הסיבית מס' ‪ 6‬באוגר ‪ , AL‬נקבעה ל '‪ .'1‬שאר הסיביות לא השתנו‪.‬‬

‫מסקנה‬
‫כל סיבית שרוצי לקבוע אותה ל '‪ , '1‬מבצעי לה פעולת ‪ OR‬ע ‪.1‬‬
‫דוגמה ‪:3‬‬
‫קבע את ערכ של הסיביות מס' ‪ 2,3,7‬ל – ‪, 1‬באוגר ‪ AL‬תו שמירה על שאר הסיביות ‪.‬‬
‫‬ ‫‪OR AL,10001100B‬‬ ‫‪OR AL,8CH‬‬

‫‪ .3‬פקודת ‪AND‬‬
‫היא פקודה שמבצעת פעולת כפל לוגי )‪ (AND‬בי הסיביות של היעד והמקור‪ ,‬התוצאה‬
‫נשמרת ביעד‪.‬‬

‫מקור ‪ ,‬יעד ‪AND‬‬ ‫תחביר הפקודה הוא ‪:‬‬

‫דגלי מושפעי מהפקודה ‪. PF,SF,ZF:‬‬


‫הדגלי ‪ OF ,CF :‬מתאפסי ‪.‬‬
‫הדגל ‪ AF‬בלתי מוגדר‪ ,‬ז"א מקבל ער בלתי צפוי ולא משק את התוצאה ‪.‬‬

‫הפקודה משמשת אותנו לבירור ערכי של סיביות מסוימות‪ ,‬הדבר נעשה ע"י חסימת‬
‫הסיביות הלא רצויות ביעד‪ ,‬פעולה זו נקראת מיסו‪ .‬הכוונה היא לאיפוס כל הסיביות הלא‬
‫רצויות ובירור הסיבית הנדרשת ‪.‬‬

‫מהטבלה רואי כי א מבצעי ‪AND‬‬ ‫כניסות‬ ‫מוצא‬


‫‪A‬‬ ‫‪B‬‬ ‫‪F‬‬
‫ע ‪ 0‬מקבלי ‪ , 0‬וא מבצעי ‪ AND‬ע ‪, 1‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬
‫מקבלי אותה סיבית ‪.‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪0‬‬
‫‪1‬‬ ‫‪0‬‬ ‫‪0‬‬
‫‪1‬‬ ‫‪1‬‬ ‫‪1‬‬

‫________________________________________________________________________________________________________________________‬
‫‪www.zaher.co.il‬‬ ‫‪-2-‬‬
‫פקודות לוגיות‬
‫‪64‬‬ ‫מיקרו מחשבים‬

‫דוגמה ‪:4‬‬
‫‪ MOV AL,6DH‬‬ ‫‪ AL‬לפני‬‫‪0 1 1 0 1 1 0 1‬‬
‫‪20H 0 0 1 0 0 0 0 0‬‬
‫‪AND AL,20H‬‬ ‫‪AL = 20H‬‬
‫‪ AL 0 0 1 0 0 0 0 0‬אחרי‬

‫‪AF = U, SF = 0 , ZF = 0 , PF = 0 , CF = 0 , OF = 0‬‬ ‫מצב הדגלי אחרי הביצוע‬


‫‪U - Undefinde‬‬

‫רואי כי הסיבית מס' ‪ 6‬באוגר ‪ , AL‬נשארה כמו שהיא‪ .‬שאר הסיביות התאפסו‪ ,‬ז"א‬
‫חסמנו אות‪.‬‬
‫מסקנה‬
‫כל סיבית שרוצי לברר את ערכה‪ ,‬מבצעי לה פעולת ‪ AND‬ע ‪ ,1‬ושאר הסיביות‬
‫ע ‪.0‬‬

‫דוגמה ‪:5‬‬
‫כתוב קטע תכנית שמאפס את האוגר ‪ ,AL‬א ערכה של הסיבית החמישית באוגר ‪AH‬‬
‫שווה ל ‪.0‬‬
‫‬ ‫‪AND AL,00010000B‬‬ ‫‪AND AL,10H‬‬
‫‪JNZ SOF‬‬
‫‪MOV AH,0‬‬
‫‪SOF : INT 3‬‬

‫‪ .4‬פקודת ‪TEST‬‬
‫היא פקודה שמבצעת פעולת כפל לוגי )‪ (AND‬בי הסיביות של היעד והמקור‪ ,‬התוצאה‬
‫משפיעה על הדגלי בלבד ולא נשמרת ביעד‪.‬‬

‫מקור ‪ ,‬יעד ‪TEST‬‬ ‫תחביר הפקודה הוא ‪:‬‬

‫דגלי מושפעי מהפקודה ‪. PF,SF,ZF:‬‬


‫הדגלי ‪ OF ,CF :‬מתאפסי ‪.‬‬
‫הדגל ‪ AF‬בלתי מוגדר‪ ,‬ז"א מקבל ער בלתי צפוי ולא משק את התוצאה ‪.‬‬

‫הערה‬
‫הפקודה מתפקדת בדיוק כמו הפקודה ‪ ,AND‬א שומרת על ער האופרנדי ללא‬
‫שינוי‪.‬‬
‫________________________________________________________________________________________________________________________‬
‫‪www.zaher.co.il‬‬ ‫‪-3-‬‬
‫פקודות לוגיות‬
‫‪65‬‬ ‫מיקרו מחשבים‬

‫דוגמה ‪:6‬‬
‫‪ MOV AL,6DH‬‬ ‫‪ AL‬לפני‬‫‪0 1 1 0 1 1 0 1‬‬
‫‪20H 0 0 1 0 0 0 0 0‬‬
‫‪TEST AL,20H‬‬ ‫‪ AL 0 0 1 0 1 1 0 1‬אחרי‬
‫‪AL = 6DH‬‬

‫‪AF = U, SF = 0 , ZF = 0 , PF = 0 , CF = 0 , OF = 0‬‬ ‫מצב הדגלי אחרי הביצוע‬


‫‪U - Undefinde‬‬

‫רואי כי הער נשאר ב ‪ AL‬ללא שינוי‪ ,‬אבל הדגלי השתנו בהתא לתוצאה‪.‬‬

‫‪ .5‬פקודת ‪XOR‬‬
‫היא פקודה שמבצעת פעולת ‪ XOR‬לוגי בי הסיביות של היעד והמקור‪ ,‬התוצאה נשמרת‬
‫ביעד‪.‬‬
‫מקור ‪ ,‬יעד ‪XOR‬‬ ‫תחביר הפקודה הוא ‪:‬‬

‫דגלי מושפעי מהפקודה ‪. PF,SF,ZF:‬‬


‫הדגלי ‪ OF ,CF :‬מתאפסי ‪.‬‬
‫הדגל ‪ AF‬בלתי מוגדר‪ ,‬ז"א מקבל ער בלתי צפוי ולא משק את התוצאה ‪.‬‬

‫הפקודה משמשת אותנו להפיכת ערכ של סיביות מסוימות‪.‬‬

‫מהטבלה רואי כי א מבצעי‬ ‫כניסות‬ ‫מוצא‬


‫‪A‬‬ ‫‪B‬‬ ‫‪F‬‬
‫‪ XOR‬ע ‪ 0‬מקבלי אותה סיבית‪ ,‬וא‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬
‫מבצעי ‪ XOR‬ע ‪ ,1‬מקבלי את ההיפו של‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪1‬‬
‫‪1‬‬ ‫‪0‬‬ ‫‪1‬‬
‫הסיבית ‪.‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪0‬‬

‫דוגמה ‪:7‬‬
‫‪ MOV AL,6DH‬‬ ‫‪ AL‬לפני‬‫‪0 1 1 0 1 1 0 1‬‬
‫‪20H 0 0 1 0 0 0 0 0‬‬
‫‪XOR AL,20H‬‬ ‫‪ AL 0 1 0 0 1 1 0 1‬אחרי‬
‫‪AL = 4DH‬‬

‫‪AF = U, SF = 0 , ZF = 0 , PF = 1 , CF = 0 , OF = 0‬‬ ‫מצב הדגלי אחרי הביצוע‬


‫‪U - Undefinde‬‬

‫רואי כי הסיבית מס' ‪ 6‬באוגר ‪ AL‬התהפכה‪ .‬שאר הסיביות נשארו כמו שהיו ללא שינוי‪.‬‬
‫מסקנה‬
‫היא שכל סיבית שרוצי לשנות את ערכה‪ ,‬מבצעי לה פעולת ‪ XOR‬ע ‪ ,1‬ושאר‬
‫הסיביות ע ‪.0‬‬
‫________________________________________________________________________________________________________________________‬
‫‪www.zaher.co.il‬‬ ‫‪-4-‬‬
‫פקודות לוגיות‬
‫‪66‬‬ ‫מיקרו מחשבים‬

‫דוגמה ‪:8‬‬
‫כתוב פקודה שהופכת את ערכ של הסיביות מס' ‪ 3,5,7‬באוגר ‪.AL‬‬
‫‪ XOR AL,01010100B‬‬ ‫‪XOR AL,54H‬‬

‫‪ .6‬פקודת ‪Negate - NEG‬‬


‫היא פקודה שמבצעת משלי ל  ‪ 2‬של המספר הנמצא ביעד‪ ,‬ושומרת את התוצאה ביעד‪.‬‬

‫יעד ‪NEG‬‬ ‫תחביר הפקודה הוא ‪:‬‬

‫דגלי מושפעי מהפקודה ‪.CF,AF,OF,PF,SF,ZF :‬‬

‫דוגמה ‪:9‬‬
‫כתוב תכנית שמבצעת את המשלי ל – ‪ 2‬של המספר הנמצא באוגר ‪ AL‬ותציב את התוצאה‬
‫באוגר ‪.AH‬‬
‫‪ MOV AH,AL‬‬
‫‪NEG AH‬‬

‫‪ MOV AH,AL‬‬


‫‪NOT AH‬‬
‫‪INC AH‬‬

‫________________________________________________________________________________________________________________________‬
‫‪www.zaher.co.il‬‬ ‫‪-5-‬‬
‫דף עבודה בפקודות לוגיות‬
67 ‫מיקרו מחשבים‬
‫דף עבודה בפקודות לוגיות‬

:‫מה יהיה ערכ של היעד ושל הדגלי המבוקשי בכל פקודה‬ .1

1. MOV AL,30H CF=0 ZF=0 SF= 0 AL=


OR AL,62H CF= ZF= SF= AL=
AND AL,3FH CF= ZF= SF= AL=
2. MOV AL,7FH SF=0 ZF=0 PF= 0 AL=
NOT AL SF= ZF= PF= AL=
XOR AL,05H SF= ZF= PF= AL=
3. MOV AH,70H CF=0 OF=0 SF= 0 AH=
MOV BL,35H CF= OF= SF= BL=
TEST BL,AH CF= OF= SF= BL=
4. MOV AX,5F30H PF=0 ZF=0 SF= 0 AX=
NEG AL PF= ZF= SF= AX=
XOR AX,237H PF= ZF= SF= AX=
5. MOV AL,70H PF=0 ZF=0 SF= 0 AL=
MOV BL,55H PF= ZF= SF= BL=
OR BL,AL PF= ZF= SF= BL=
6. MOV BX,3F75H CF=0 ZF=0 SF= 0 BX=
TEST BL,5AH CF= ZF= SF= BL=
XOR BL,BH CF= ZF= SF= BL=
7. MOV AH,53H CF=0 PF=0 SF= 0 AH=
AND AH,34H CF= PF= SF= AH=
NOT AH CF= PF= SF= AH=
8. MOV AX,78FFH CF=0 ZF=0 SF= 0 AX=
XOR AL,AH CF= ZF= SF= AL=
TEST AL,56H CF= ZF= SF= AL=

.CH ‫כתוב ארבע פקודות לאיפוס האוגר‬ .2


.DH ‫כתוב שתי פקודות שהופכות את תוכ האוגר‬ .3
________________________________________________________________________________________________________________________
www.zaher.co.il -1-
‫דף עבודה בפקודות לוגיות‬
‫‪68‬‬ ‫מיקרו מחשבים‬

‫כתוב פקודה שהופכת את הסימ של המספר הנמצא באוגר ‪.AH‬‬ ‫‪.4‬‬


‫רשו קטע תכנית שהופ את הסימ של נתו בגודל בית הנמצא בכתובת ‪.390H‬‬ ‫‪.5‬‬
‫כתוב קטע תכנית המציב את המשלי ל ! ‪ 2‬של המספר הנמצא באוגר ‪ CH‬בתו‬ ‫‪.6‬‬
‫האוגר ‪ 4 ) AL‬שיטות (‪.‬‬
‫הסבר את המושג " מיסו – ‪ ," MASKING‬מתי משתמשי בו‪.‬‬ ‫‪.7‬‬
‫רשו פקודה שהופכת את המספר הנמצא באוגר ‪ BL‬למספר זוגי‪.‬‬ ‫‪.8‬‬
‫רשו פקודה שהופכת את המספר הנמצא באוגר ‪ CH‬למספר אי זוגי‪.‬‬ ‫‪.9‬‬
‫רשו פקודה שהופכת את הזוגיות של מספר הנמצא באוגר ‪.BH‬‬ ‫‪.10‬‬
‫רשו פקודה שהופכת את ‪ 4‬הסיביות העליונות במספר הנמצא באוגר‪.AH‬‬ ‫‪.11‬‬
‫רשו פקודה שמאפסת את ‪ 4‬הסיביות הנמוכות במספר הנמצא באוגר‪.DH‬‬ ‫‪.12‬‬
‫רשו פקודה שקובעת את ‪ 4‬הסיביות העליונות במספר הנמצא באוגר‪ CH‬ל '‪.'1‬‬ ‫‪.13‬‬
‫רשו קטע תכנית שהופ את המספר הנמצא בכתובת ‪ 200H‬למספר שלילי‪.‬‬ ‫‪.14‬‬
‫רשו קטע תכנית שהופ את המספר הנמצא בכתובת ‪2F0H‬למספר חיובי‪.‬‬ ‫‪.15‬‬
‫רשו קטע תכנית שמשנה את הזוגיות מספר הנמצא בכתובת ‪.200H‬‬ ‫‪.16‬‬
‫רשו פקודה שהופכת את המספר הנמצא באוגר ‪ Dl‬למספר חיובי‪.‬‬ ‫‪.17‬‬

‫שאלה מס' ‪ 7‬בבגרות ‪97‬‬ ‫‪.18‬‬

‫________________________________________________________________________________________________________________________‬
‫‪www.zaher.co.il‬‬ ‫‪-2-‬‬
‫דף עבודה בפקודות לוגיות‬
‫‪69‬‬ ‫מיקרו מחשבים‬

‫שאלה מס' ‪ 6‬בבגרות ‪03‬‬ ‫‪.19‬‬

‫על פי שאלה מס' ‪ 6‬בבגרות ‪00‬‬ ‫‪.20‬‬


‫בלוק נתוני ב ‪ 20H‬בתי מתחיל בכתובת ‪ .1000H‬כל בית מכיל נתו מספרי חיובי‪.‬‬
‫א‪ .‬כתוב תת שגרה המונה את מס' הנתוני הזוגיי בבלוק‪ .‬ומציבה את התוצאה בתא‬
‫הזיכרו שכתובתו ‪.1021H‬‬
‫ב‪ .‬מהו השינוי הנדרש על מנת שתת שהגרה תמנה את הנתוני האי זוגיי בבלוק‪.‬‬

‫________________________________________________________________________________________________________________________‬
‫‪www.zaher.co.il‬‬ ‫‪-3-‬‬
‫דף עבודה בפקודות לוגיות‬
‫‪70‬‬ ‫מיקרו מחשבים‬

‫על פי שאלה מס' ‪ 9‬בבגרות ‪02‬‬ ‫‪.21‬‬

‫שאלה מס' ‪ 6‬בבגרות ‪03‬‬ ‫‪.22‬‬

‫בלוק זיכרו בגודל ‪ 10H‬בתי ‪ ,‬מתחיל בכתובת ‪.750H‬‬ ‫‪.23‬‬


‫א‪ .‬כתוב תת!שגרה בשפת המיקרו ‪ ASM-86/88‬שתהפו את הזוגיות של כל הנתוני ‬
‫בבלוק הנתו‪.‬‬
‫ב‪ .‬מהו השינוי הנדרש כדי שתת!השגרה שכתבת בסעי‪ .‬א' תהפו את כל הנתוני ‬
‫לערכי זוגיי ‪.‬‬
‫ג‪ .‬מהו השינוי הנדרש כדי שתת!השגרה שכתבת בסעי‪ .‬א' תהפו את כל הנתוני ‬
‫לערכי אי זוגיי ‪.‬‬
‫ד‪ .‬מהו השינוי הנדרש כדי שתת!השגרה שכתבת בסעי‪ .‬א' תהפו את כל הנתוני ‬
‫לערכי חיוביי ‪.‬‬
‫ה‪ .‬מהו השינוי הנדרש כדי שתת!השגרה שכתבת בסעי‪ .‬א' תהפו את כל הנתוני ‬
‫לערכי שליליי ‪.‬‬
‫מהו השינוי הנדרש כדי שתת!השגרה שכתבת בסעי‪ .‬א' תהפו את הקוטביות שלכל‬ ‫ו‪.‬‬
‫הנתוני ‪.‬‬

‫תא הזיכרו בכתובת ‪ ,247H‬מכיל נתו בגודל בית אחד )שתי ספרות הקסה(‪ .‬כתוב‬ ‫‪.24‬‬
‫תת!שגרה שמכפילה את הספרה הראשונה של הנתו בספרה השנייה ומציבה את‬
‫התוצאה בתא הזיכרו בכתובת ‪.248H‬‬

‫________________________________________________________________________________________________________________________‬
‫‪www.zaher.co.il‬‬ ‫‪-4-‬‬
‫דף עבודה בפקודות לוגיות‬
‫‪71‬‬ ‫מיקרו מחשבים‬

‫שאלה מס' ‪ 1‬טכנאי ‪06‬‬ ‫‪.25‬‬

‫שאלה מס' ‪ 2‬טכנאי ‪04‬‬ ‫‪.26‬‬

‫________________________________________________________________________________________________________________________‬
‫‪www.zaher.co.il‬‬ ‫‪-5-‬‬
‫דף עבודה בפקודות לוגיות‬
‫‪72‬‬ ‫מיקרו מחשבים‬

‫שאלה מס' ‪ 1‬טכנאי ‪03‬‬ ‫‪.27‬‬

‫עבודה נעימה‬
‫________________________________________________________________________________________________________________________‬
‫‪www.zaher.co.il‬‬ ‫‪-6-‬‬
‫‪73‬‬ ‫מחסינת ופרוצדורה ) ‪( Stack & Procedure‬‬ ‫מיקרו מחשבים‬

‫מחסנית ) ‪( Stack‬‬
‫המחסנית היא איזור בזיכרו הראשי )‪ ,(RAM‬שמתנהל לפי עיקרו נכנס ראשו יוצא‬
‫אחרו ) ‪ .( FILO –First In Last Out‬או להפ‪ ,‬זאת אומרת נכנס אחרו יוצא ראשו ) ‪– LIFO‬‬
‫‪ ) .(Last In First Out‬כמו מחסנית הכדורי של אקדח (‪.‬‬

‫סדר ניהול זה עוזר לנו כאשר רוצי לשמור נתוני בסדר מסוי‪ .‬נרחיב על זה בפסיקות‬
‫ובפרוצדורות‪ .‬כדי לנהל את המחסנית בצורה זו נעזרי באוגר מיוחד הנקרא מצביע ראש‬
‫המחסנית ‪ (SP) - Stack Pointer‬אשר מצביע על קצה המחסנית‪ ,‬כלומר המקו שאליו נכנס‬
‫הנתו האחרו‪.‬‬

‫תוכ‬ ‫כתובת‬

‫‪1FEH‬‬
‫‪1FFH‬‬
‫‪SP‬‬ ‫נתו ‪1‬‬ ‫‪200H‬‬

‫קיימות שתי פקודות שבעזרת יכולי לנהל את המחסנית‪.‬‬

‫‪PUSH‬‬ ‫‪ .1‬פקודת דחיפה‬


‫פקודה זו מיועדת לשמירת נתו ב ‪ 16‬סיביות בלבד בתו המחסנית‪.‬‬

‫‪PUSH‬‬ ‫אוגר ‪ 16‬סיביות‬ ‫תחביר הפקודה ‪:‬‬


‫דגלי מושפעי ‪ :‬אי‪.‬‬

‫הפקודה מתבצעת בארבעה שלבי ‪:‬‬

‫‪ .1‬הפחתת ‪ 1‬מערכו של ‪SP − 1 ⇒ SP .SP‬‬

‫‪ .2‬אחסו החלק העליו של האוגר לתו הכתובת ש ‪ SP‬מצביע עליה‪MSB ⇒ [ SP] .‬‬

‫‪ .3‬הפחתת עוד ‪ 1‬מתוכ ‪SP − 1 ⇒ SP .SP‬‬

‫‪ .4‬אחסו הבית הנמו של האוגר לתו הכתובת ש ‪ SP‬מצביע עליה‪LSB ⇒ [ SP ] .‬‬

‫אפשר לראות שהפקודה מפחיתה ‪ 2‬מערכו של האוגר ‪.SP‬‬


‫________________________________________________________________________________________________________________________‬
‫‪www.zaher.co.il‬‬ ‫‪-1-‬‬
‫‪74‬‬ ‫מחסינת ופרוצדורה ) ‪( Stack & Procedure‬‬ ‫מיקרו מחשבים‬

‫למשל ‪ :‬תאר את מצב המחסנית לאחר ביצוע קטע התכנית הבא‪:‬‬

‫‪MOV‬‬ ‫‪SP,200H‬‬
‫‪MOV‬‬ ‫‪AX,3F4CH‬‬
‫‪PUSH‬‬ ‫‪AX‬‬

‫‪AX‬‬
‫תוכ‬ ‫כתובת‬
‫‪3F‬‬ ‫‪4C‬‬

‫‪ SP‬אחרי ביצוע הפקודה‬ ‫‪4C‬‬ ‫‪1FEH‬‬


‫‪3F‬‬ ‫‪1FFH‬‬
‫‪ SP‬לפני ביצוע הפקודה‬ ‫נתו‬ ‫‪200H‬‬

‫‪POP‬‬ ‫‪ .2‬פקודת שליפה‬


‫פקודה זו מיועדת לקריאת נתו ב ‪ 16‬סיביות בלבד מהמחסנית לתו אוגר‪.‬‬

‫‪POP‬‬ ‫אוגר ‪ 16‬סיביות‬ ‫תחביר הפקודה ‪:‬‬


‫דגלי מושפעי ‪ :‬אי‪.‬‬

‫הפקודה מתבצעת בארבעה שלבי ‪:‬‬

‫‪ .1‬קריאת הנתו ש ‪ SP‬מצביע עליו לתו החלק הנמו של האוגר‪[ SP] ⇒ LSB .‬‬

‫‪ .2‬הוספת ‪ 1‬לערכו של ‪SP + 1 ⇒ SP .SP‬‬

‫‪ .3‬קריאת הנתו ש ‪ SP‬מצביע עליו לתו החלק העליו של האוגר‪[ SP] ⇒ MSB .‬‬

‫‪ .4‬הוספת ‪ 1‬לערכו של ‪SP + 1 ⇒ SP .SP‬‬

‫אפשר לראות שהפקודה מוסיפה ‪ 2‬לערכו של האוגר ‪.SP‬‬

‫למשל ‪ :‬תאר את מצב המחסנית‪ ,‬בהנחה כי אחרי ביצוע פעולת הדחיפה הקודמת‪ ,‬ההוראה‬
‫הבאה לביצוע ב ‪:86/88‬‬

‫‪POP‬‬ ‫‪DX‬‬

‫________________________________________________________________________________________________________________________‬
‫‪www.zaher.co.il‬‬ ‫‪-2-‬‬
‫‪75‬‬ ‫מחסינת ופרוצדורה ) ‪( Stack & Procedure‬‬ ‫מיקרו מחשבים‬

‫‪DX‬‬
‫תוכ‬ ‫כתובת‬
‫‪3F‬‬ ‫‪4C‬‬

‫‪ SP‬לפני ביצוע הפקודה‬ ‫‪4C‬‬ ‫‪1FEH‬‬


‫‪3F‬‬ ‫‪1FFH‬‬
‫‪ SP‬אחרי ביצוע הפקודה‬ ‫נתו‬ ‫‪200H‬‬

‫דוגמה ‪:‬‬
‫תאר בקצרה מה מבצע כל אחד מקטעי התכנית הבאי‪:‬‬

‫קטע ב'‬ ‫קטע א'‬


‫‪PUSH‬‬ ‫‪AX‬‬ ‫‪PUSH‬‬ ‫‪AX‬‬
‫‪PUSH‬‬ ‫‪BX‬‬ ‫‪PUSH‬‬ ‫‪BX‬‬
‫‪POP‬‬ ‫‪BX‬‬ ‫‪POP‬‬ ‫‪AX‬‬
‫‪POP‬‬ ‫‪AX‬‬ ‫‪POP‬‬ ‫‪BX‬‬

‫לפי אותו עיקרו ‪ FILO‬אפשר לראות‬ ‫אפשר לראות לפי עיקרו ‪ FILO‬שהנתו‬
‫שהנתו הראשו שנכנס למחסנית הוא ער‬ ‫הראשו שנכנס למחסנית הוא ער האוגר‬
‫האוגר ‪ AX‬והוא יוצא אחרו לאותו אוגר‬ ‫‪ AX‬והוא יוצא אחרו לאוגר ‪ ,BX‬ואילו‬
‫‪ ,AX‬ואילו הנתו האחרו שנכנס למחסנית‬ ‫הנתו האחרו שנכנס למחסנית הוא ער‬
‫הוא ער האוגר ‪ BX‬והוא יוצא ראשו לאותו‬ ‫האוגר ‪ BX‬והוא יוצא ראשו לתו האוגר‬

‫אוגר ‪ .BX‬לכ אפשר לומר שקטע תכנית זה‬ ‫‪ .AX‬לכ אפשר לומר שקטע תכנית זה מחלי(‬
‫שומר ערכי של אוגרי בתו המחסנית‬ ‫את תוכ שני האוגרי בעזרת המחסנית בלי‬
‫ומשחזר אות‪.‬‬ ‫להשתמש באוגר עזר‪.‬‬

‫הערה ‪:‬‬
‫לכאורה‪ ,‬אפשר לומר שקטע ב' לא מבצע כלו‪ ,‬כי הוא שומר ערכי של אוגרי ומשחזר‬
‫אות ערכי‪ .‬אבל‪ ,‬מצד שני יש לקטע זה שימוש חשוב מאוד‪ .‬והוא שא אנחנו מבצעי תכנית‬
‫מסוימת ורוצי לקרוא לתכנית משנה ) פרוצדורה ( מתו התכנית הראשית‪ ,‬וחשוב לנו לשמור‬
‫את הערכי של אוגרי מסוימי ) שיכולי להשתנות בתכנית המשנית (‪ ,‬אז בתחילת התכנית‬
‫המשנית שומרי אות במחסנית ע"י פקודת ‪ PUSH‬ובסו( התכנית המשנית משחזרי אות‬
‫ע"י פקודות ‪ ) .POP‬חשוב לשמור על סדר הופעה הפו של האוגרי (‬
‫________________________________________________________________________________________________________________________‬
‫‪www.zaher.co.il‬‬ ‫‪-3-‬‬
‫‪76‬‬ ‫מחסינת ופרוצדורה ) ‪( Stack & Procedure‬‬ ‫מיקרו מחשבים‬

‫פרוצדורה ) ‪( Procedure‬‬
‫לעתי צריכי לבצע משימה זהה מספר פעמי בתכנית‪ ,‬הדר הפשוטה ביותר היא שכל פע‬
‫שרוצי לבצע את המשימה‪ ,‬נרשו את קבוצת הפקודות שמבצעות אותה‪ .‬אבל אז יש מס'‬
‫חסרונות‪ ,‬א צריכי לבצע שינוי כלשהו במשימה נצטר לבצע את השינוי בכל מקו שבו‬
‫רשומות הפקודות של המשימה‪ .‬וחסרו נוס( הוא אור התכנית שמגדיל את הסיכוי לשגיאות‪.‬‬

‫לכ הדר הטובה ביותר היא לרשו את קטע התכנית שמבצע את המשימה כפרוצדורה ובכל‬
‫מקו בתכנית שרוצי לבצע את המשימה קוראי לפרוצדורה ע"י הפקודה ‪ CALL‬ומפעילי‬
‫אותה‪ ,‬וכאשר מסיימי את הביצוע חוזרי לתכנית ע"י ‪ RET‬וממשיכי בביצוע התכנית‪ ,‬כדי‬
‫לאפשר חזרה נכונה לתכנית שקראה לה‪ ,‬חייבת היע"מ לשמור את ה ‪ IP‬לפני הקריאה ולשחזר‬
‫אותו בעת החזרה מהפרוצדורה לתכנית המקורית‪ .‬דבר זה מתבצע באמצעות דחיפה ושליפה של‬
‫‪ IP‬במחסנית‪.‬‬
‫כאשר כותבי פרוצדורה‪ ,‬הש שלה מופיע תמיד ליד פקודה ראשונה והיא מסתיימת‬
‫בפקודת ‪.RET‬‬
‫פקודת ‪CALL‬‬
‫פקודה זו מבצעת קריאה לפרוצדורה לפי הש שלה‪ ,‬במקרה של פרוצדורה קרובה היא‬
‫שומרת את ערכו של ‪ IP‬במחסנית‪ ,‬ומעבירה את הכתובת של הפקודה הראשונה בפרוצדורה‬
‫לתו ‪ .IP‬וכאשר הפרוצדורה רחוקה היא שומרת את ערכ של ‪ CS‬ו‪ .IP +‬כדי לחזור למקו‬
‫שממנו התבצעה הקריאה לאחר סיו הפרוצדורה‪.‬‬

‫ש פרוצדורה ‪CALL‬‬ ‫תחביר הפקודה ‪:‬‬


‫דגלי מושפעי ‪ :‬אי‪.‬‬

‫פקודת ‪Return - RET‬‬


‫פקודה זו מסיימת את הפרוצדורה‪ ,‬היא מבצעת חזרה מהפרוצדורה אל התכנית הראשית‬
‫שקראה לה‪ ,‬ע"י שליפת ער האוגר ‪ IP‬מהמחסנית )שחזור הער שנשמר בפקודת ‪(CALL‬‬
‫במקרה של פרוצדורה קרובה‪ ,‬או ע"י שליפת ערכי האוגרי ‪ IP‬ו‪ CS +‬מהמחסנית במקרה של‬
‫פרוצדורה רחוקה‪.‬‬

‫‪RET‬‬ ‫תחביר הפקודה ‪:‬‬


‫דגלי מושפעי ‪ :‬אי‪.‬‬

‫אנו נתייחס רק למקרה של פרוצדורה קרובה‪.‬‬


‫________________________________________________________________________________________________________________________‬
‫‪www.zaher.co.il‬‬ ‫‪-4-‬‬
‫‪77‬‬ ‫מחסינת ופרוצדורה ) ‪( Stack & Procedure‬‬ ‫מיקרו מחשבים‬

‫למשל‪ ,‬א נתייחס לתכנית הבאה‪ ,‬שקוראת לפרוצדורה בש ‪.DELAY‬‬

‫תכנית ראשית‬
‫פרוצדורה ‪DELAY‬‬
‫‪:‬‬
‫‪CS: 1000 MOV AL,3FH‬‬ ‫‪CS: 0100 DELAY: MOV CX,0FFFFH‬‬
‫‪CS: 1002 OUT DX,AL‬‬ ‫‪CS: 0102 AGAIN : DEC CX‬‬
‫‪CS: 1004 CALL DELAY‬‬ ‫‪CS: 0103‬‬ ‫‪JNZ AGAIN‬‬
‫‪CS: 1006 ADD AL,AL‬‬ ‫‪CS: 0105‬‬ ‫‪RET‬‬
‫‪:‬‬

‫נראה כי בזמ ביצוע הפקודה ‪ ,CALL DELAY‬ער האוגר ‪ IP‬הוא ‪ .IP = 1006‬אז אחרי‬
‫סיו הפרוצדורה‪ ,‬אנו רוצי לחזור לאותה כתובת‪ .‬לכ‪ ,‬כתובת זו נשמרת במחסנית ולאוגר ‪IP‬‬
‫טועני את הכתובת של הפקודה הראשונה בפרוצדורה ‪.DELAY‬‬
‫‪ IP‬בזמ ביצוע ‪CALL‬‬
‫תוכ‬ ‫כתובת‬
‫‪10‬‬ ‫‪06‬‬

‫‪ SP‬אחרי ביצוע הפקודה‬ ‫‪06‬‬ ‫‪1FEH‬‬


‫‪10‬‬ ‫‪1FFH‬‬
‫‪ SP‬לפני ביצוע הפקודה‬ ‫נתו‬ ‫‪200H‬‬

‫‪ IP‬נטע לכתובת ‪DELAY‬‬

‫‪01‬‬ ‫‪00‬‬

‫ע סיו הפרוצדורה‪ ,‬כאשר מגיעי לפקודת ‪ ,RET‬היא שולפת את הער של ‪ IP‬מהמחסנית‪:‬‬

‫‪IP‬‬
‫תוכ‬ ‫כתובת‬
‫‪10‬‬ ‫‪06‬‬

‫‪ SP‬לפני ביצוע הפקודה‬ ‫‪06‬‬ ‫‪1FEH‬‬


‫‪10‬‬ ‫‪1FFH‬‬
‫‪ SP‬אחרי ביצוע הפקודה‬ ‫נתו‬ ‫‪200H‬‬

‫________________________________________________________________________________________________________________________‬
‫‪www.zaher.co.il‬‬ ‫‪-5-‬‬
‫‪78‬‬ ‫דף עבודה במחסנית ופרוצדורות‬ ‫מיקרו מחשבים‬

‫‪ .1‬הסבר את עיקרו הפעולה של המחסנית‪.‬‬


‫‪ .2‬הסבר בקצרה את המתרחש במחסנית בעת ביצוע כל אחת מהפקודות ‪.PUSH, POP‬‬
‫‪ .3‬ציי א הפקודות הבאות חוקיות או לא‪ ,‬נמק‪.‬‬
‫‪PUSH‬‬ ‫‪AH‬‬
‫‪POP‬‬ ‫‪BX‬‬
‫‪PUSH‬‬ ‫‪SI‬‬
‫‪POP‬‬ ‫‪DL‬‬
‫‪ .4‬כתוב קטע תכנית שמחלי את תוכ שני האוגרי ‪ ,CX, DX‬בלי להשתמש באוגר עזר‪.‬‬
‫‪ .5‬מהי פרוצדורה‪ ,‬אי" כותבי פרוצדורה‪ ,‬הסבר את המתרחש במחסנית בעת קריאה‬
‫לפרוצדורה ובעת החזרה ממנה‪.‬‬
‫‪ .6‬שאלה מס' ‪ 7‬בבגרות ‪01‬‬

‫________________________________________________________________________________________________________________________‬
‫‪www.zaher.co.il‬‬ ‫‪-1-‬‬
‫‪79‬‬ ‫דף עבודה במחסנית ופרוצדורות‬ ‫מיקרו מחשבים‬

‫‪ .7‬שאלה מס' ‪ 7‬בבגרות ‪02‬‬

‫‪ .8‬שאלה מס' ‪ 2‬טכנאי ‪05‬‬

‫________________________________________________________________________________________________________________________‬
‫‪www.zaher.co.il‬‬ ‫‪-2-‬‬
‫‪80‬‬ ‫דף עבודה במחסנית ופרוצדורות‬ ‫מיקרו מחשבים‬

‫‪ .9‬שאלה מס' ‪ 1‬טכנאי ‪05‬‬

‫________________________________________________________________________________________________________________________‬
‫‪www.zaher.co.il‬‬ ‫‪-3-‬‬
‫‪81‬‬ ‫דף עבודה במחסנית ופרוצדורות‬ ‫מיקרו מחשבים‬

‫‪ .10‬נתונה תת השגרה הבאה שכתובה בשפת ‪.ASM – 8086/88‬‬

‫‪1.‬‬ ‫‪DELAY :‬‬ ‫‪MOV CX,0FFFFH‬‬


‫‪2.‬‬ ‫‪CONT:‬‬ ‫‪DEC CX‬‬
‫‪3.‬‬ ‫‪JNZ CONT‬‬
‫‪4.‬‬ ‫‪RET‬‬

‫‪5.‬‬ ‫‪LEDS:‬‬ ‫‪MOV DX,300H‬‬


‫‪6.‬‬ ‫‪MOV BL,08H‬‬
‫‪6.‬‬ ‫‪MOV AL,01H‬‬
‫‪7.‬‬ ‫‪CON:‬‬ ‫‪OUT DX,AL‬‬
‫‪8.‬‬ ‫‪CALL DELAY‬‬
‫‪9.‬‬ ‫‪ADD AL,AL‬‬
‫‪10.‬‬ ‫‪DEC BL‬‬
‫‪11.‬‬ ‫‪JNZ‬‬ ‫‪CON‬‬
‫‪12.‬‬ ‫‪RET‬‬

‫א‪ .‬הסבר את הפקודות שמספריה בתת – השגרה הנ"ל ה ‪. 12 ,11 ,9 ,8 ,7 :‬‬


‫ב‪ .‬הסבר את תפקידה של הפרוצדורה ‪ ,DELAY‬ואת תפקידה של הפרוצדורה ‪ . LEDS‬נמק‬
‫את תשובת"‪.‬‬
‫ג‪ .‬א הפרוצדורה ‪ DELAY‬היתה מתחילה בפקודה ‪ ,PUSH AX‬הא היתה מתבצעת‬
‫חזרה נכונה לפרוצדורה ‪ .?LEDS‬נמק את תשובת"‪ ,‬וציי על סמ" התשובה של" הא‬
‫מתבצעת חזרה נכונה מפרוצדורה‪ ,‬א מספר פקודות ‪ PUSH‬בתו" הפרוצדורה היה שונה‬
‫ממספר פקודות ‪.POP‬‬

‫עבודה נעימה‬
‫________________________________________________________________________________________________________________________‬
‫‪www.zaher.co.il‬‬ ‫‪-4-‬‬
‫‪82‬‬ ‫פסיקה ‪Interrupt‬‬ ‫מיקרו מחשבים‬

‫היא תהלי של הפסקת תכנית שמתבצעת‪ ,‬ביצוע שגרה מסוימת וחזרה עוד פע לתוכנית‬
‫הראשית‪.‬‬
‫קיימי שני סוגי של פסיקות ‪:‬‬
‫פסיקת תוכנה  פסיקה שהמתכנת הוא זה שמבקש אותה בעזרת פקודת ‪ ,INT‬במקרה‬
‫זה היא מתבצעת מייד‪.‬‬
‫פסיקת חומרה – פסיקה המבוקשת ע"י רכיב חיצוני המחובר למחשב‪ ,‬למשל טיימר של‬
‫רמזור שיבקש מהמחשב לשנות את התוכנה שלו בשעות מסוימות שבה יש עומס בכיוו‬
‫מסוי ) שעות הבוקר ואחה"צ שבה יש עומס של נסיעות עובדי(‪ .‬במקרה זה אנחנו‬
‫יכולי לאפשר למחשב לבצע אותה או לחסו אותה‪ ,‬תלוי בחשיבות התכנית שאנחנו‬
‫מבצעי בזמ בקשת הפסיקה‪.‬‬

‫מאחר ואנו לא יודעי מה היא השגרה שרוצי לבצע בפסיקה‪ ,‬אז אנחנו שומרי במחסנית‬
‫את אוגר הדגלי‪ ,‬האוגר ‪ ,CS‬והאוגר‪ .IP ,‬כדי להבטיח חזרה נכונה לתכנית‪.‬‬

‫פקודת ‪Interrupt – INT‬‬


‫פקודה זו מבצעת קריאה לפסיק לפי מספר‪ ,‬קיימות ‪ 256‬סוגי שוני של פסיקות תוכנה‪,‬‬
‫)‪ 0H‬עד ‪ ( FFH‬שנדבר על חלק מה בהמש ‪ ,‬הפקודה גורמת לשמירת ער אוגר הדגלי‪ ,‬האוגר‬
‫‪ ,CS‬והאוגר‪ IP ,‬במחסנית‪ ,‬וביצוע השגרה שמטפלת בפסיקה המבוקשת‪.‬‬

‫מספר_פסיקה ‪INT‬‬
‫תחביר הפקודה ‪:‬‬

‫דגלי מושפעי ‪. IF = 0, TF = 0 :‬‬

‫פקודת ‪Interrupt Return – IRET‬‬

‫פקודה זו מסיימת את שגרת הטיפול בפסיקה‪ ,‬ומבצעת חזרה לתכנית הראשית שאותה‬
‫הפסקנו‪ .‬הפקודה מופיעה בסו' שגרת טיפול בפסיקה‪ ,‬היא שולפת מהמחסנית את הערכי של‬
‫‪ CS ,IP‬והדגלי‪.‬‬

‫‪IRET‬‬ ‫תחביר הפקודה ‪:‬‬

‫דגלי מושפעי ‪ :‬ישוחזרו לער שהיה לפני ביצוע הפסיקה‪.‬‬

‫________________________________________________________________________________________________________________________‬
‫‪www.zaher.co.il‬‬ ‫‪-1-‬‬
‫‪83‬‬ ‫פסיקה ‪Interrupt‬‬ ‫מיקרו מחשבים‬

‫אפשור בקשת פסיקת חומרה תלוי בערכו של הדגל ‪ ,IF‬כאשר ‪ IF = 0‬אנחנו לא מאפשרי‬
‫למחשב לבצע פסיקות חומרה‪ .‬וכאשר ‪ IF = 1‬אנחנו מאפשרי למחשב לבצע פסיקות חומרה‪.‬‬
‫ולכ יש פקודות שמשפיעות ישירות על הדגל ‪.IF‬‬

‫פקודת ‪(Set Interrupt Flag) STI‬‬

‫פקודה זו קובעת ‪ 1‬בדגל ‪ ,IF‬כלומר מאפשרת ביצוע פסיקות חומרה‪.‬‬

‫‪STI‬‬ ‫תחביר הפקודה ‪:‬‬

‫דגלי מושפעי ‪. IF = 1 :‬‬

‫פקודת ‪(Clear Interrupt Flag) CLI‬‬

‫פקודה זו מאפסת את הדגל ‪ ,IF‬כלומר לא מאפשרת ביצוע פסיקות חומרה‪.‬‬

‫‪CLI‬‬ ‫תחביר הפקודה ‪:‬‬

‫דגלי מושפעי ‪. IF = 0 :‬‬

‫א חשוב שהתכנית שלנו תתבצע ברצ'‪ ,‬ושלא תעצור באמצע הביצוע כדי לענות לפסיקה‪,‬‬
‫אז מאפסי את הדגל ‪ IF‬בתחילת התכנית‪ ,‬ובסו' התכנית מחזירי את הער שלו לאחד‪ ,‬כדי‬
‫לאפשר ביצוע פסיקות חומרה‪.‬‬
‫למשל ‪:‬‬

‫‪CLI‬‬

‫פקודה ראשונה בתכנית‬


‫‪...‬‬
‫‪...‬‬
‫‪...‬‬

‫פקודה אחרונה בתכנית‬

‫‪STI‬‬

‫פקודת ‪ ,CLI‬מאפסת את ‪ ,IF‬לכ א במהל התכנית שלנו‪ ,‬התקבלה פסיקת חומרה‪,‬‬


‫המחשב לא מבצע אותה‪ .‬והתכנית שלנו תתבצע ברצ'‪ .‬בסו' התכנית אחרי שביצענו אותה אנו‬
‫מחזירי את ערכו של ‪ IF‬לאחד ע"י פקודת ‪ . STI‬ואז א תתקבל פסיקת חומרה היא תתבצע‪.‬‬

‫________________________________________________________________________________________________________________________‬
‫‪www.zaher.co.il‬‬ ‫‪-2-‬‬
‫‪84‬‬ ‫פסיקה ‪Interrupt‬‬ ‫מיקרו מחשבים‬

‫‪DOS‬‬ ‫שירותי מערכת ההפעלה‬

‫מערכת ההפעלה ‪ DOS‬מספקת לנו מספר פונקציות מוכנות‪ ,‬שאפשר להשתמש בה ‪ ,‬כל‬
‫פונקציה מאפשרת ביצוע פסיקה מסוימת‪ .‬וכול מתבצעות בפסיקה מס' ‪) 21H‬שהיא פסיקת‬
‫‪. (DOS‬‬
‫כדי לבצע פונקציה מסוימת‪ ,‬צריכי להציב את המספר שלה בתו האוגר ‪) AH‬בלבד(‪,‬‬
‫ולאחר מכ לקרוא לפסיקה מס' ‪.21H‬‬

‫‪ .1‬פונקציה מס' ‪ : 1‬קליטת תו מהמקלדת) עם הדהוד(‪.‬‬

‫הפונק' תגרו למחשב להפסיק את התכנית שמתבצעת‪ ,‬להמתי עד שנלח‪ +‬על מקש‬
‫כלשהו‪ ,‬תקלוט את הקוד ‪ ASCII‬של המקש לתו האוגר ‪ ,AL‬המקש הנלח‪ +‬יופיע על המס ‪.‬‬
‫ולאחר מכ התכנית תמשי כהלכה‪.‬‬

‫נוהל הקריאה לפונקציה בתו התכנית ‪:‬‬


‫‪:‬‬
‫‪:‬‬
‫‪MOV AH,1‬‬
‫‪INT 21H‬‬
‫‪:‬‬
‫‪:‬‬

‫‪ .2‬פונקציה מס' ‪ : 7‬קליטת תו מהמקלדת )ללא הדהוד(‪.‬‬

‫הפונק' תגרו למחשב להפסיק את התכנית שמתבצעת‪ ,‬להמתי עד שנלח‪ +‬על מקש‬
‫כלשהו‪ ,‬תקלוט את הקוד ‪ ASCII‬של המקש לתו האוגר ‪ ,AL‬המקש הנלח‪ +‬לא יופיע על המס ‪.‬‬
‫ולאחר מכ התכנית תמשי כהלכה‪.‬‬

‫נוהל הקריאה לפונקציה בתו התכנית ‪:‬‬


‫‪:‬‬
‫‪:‬‬
‫‪MOV AH,7‬‬
‫‪INT 21H‬‬
‫‪:‬‬
‫‪:‬‬

‫________________________________________________________________________________________________________________________‬
‫‪www.zaher.co.il‬‬ ‫‪-3-‬‬
‫‪85‬‬ ‫פסיקה ‪Interrupt‬‬ ‫מיקרו מחשבים‬

‫‪ .3‬פונקציה מס' ‪ : 2‬הצגת תו בודד על המסך‪.‬‬

‫הפונק' תגרו למחשב להפסיק את התכנית שמתבצעת‪ ,‬להציג על המס את התו שקוד‬
‫‪ ASCII‬שלו נמצא בתו האוגר ‪ .DL‬ולאחר מכ התכנית תמשי כהלכה‪) .‬יש לשי לב כי‬
‫הפסיקה " מקלקלת " או משנה את תוכנו של האוגר ‪.(AL‬‬

‫נוהל הקריאה לפונקציה בתו התכנית ‪:‬‬


‫‪:‬‬
‫‪:‬‬
‫‪MOV DL,37H‬‬ ‫’‪MOV DL,’7‬‬
‫‪MOV AH,2‬‬
‫‪INT 21H‬‬
‫‪:‬‬
‫‪:‬‬
‫הפסיקה גורמת להצגת הספרה ‪ 7‬על המס ‪ ,‬כי המספר ‪ 37H‬הוא קוד ‪ ASCII‬של הספרה ‪ ,7‬הצבת התו‬
‫הרצוי בי גרשיי‪ ,‬גורמת להעברת קוד ‪ ASCII‬שלו לתו האוגר‪.‬‬

‫‪ .4‬פונקציה מס' ‪ : 9‬הצגת מחרוזת על המסך‪.‬‬

‫הפונק' תגרו למחשב להפסיק את התכנית שמתבצעת‪ ,‬להציג על המס את המחרוזת‬


‫)הודעה( שהכתובת ההתחלתית שלה נמצאת באוגר ‪ .DX‬ולאחר מכ התכנית תמשי כהלכה‪) .‬יש‬
‫לשי לב כי המחרוזת צריכה להסתיי בסימ ‪.($‬‬

‫נוהל הקריאה לפונקציה בתו התכנית ‪:‬‬


‫‪.DATA‬‬
‫‘ ‪MSG DB ‘ hello …. $‬‬
‫‪.CODE‬‬
‫‪:‬‬
‫‪:‬‬
‫‪LEA DX,MSG‬‬ ‫‪MOV DX,OFFSET MSG‬‬
‫‪MOV AH,9‬‬
‫‪INT 21H‬‬
‫‪:‬‬
‫‪:‬‬
‫‪ hello ….‬על המס ‪.‬‬ ‫הפסיקה גורמת להצגת ההודעה‬

‫________________________________________________________________________________________________________________________‬
‫‪www.zaher.co.il‬‬ ‫‪-4-‬‬
‫‪86‬‬ ‫פסיקה ‪Interrupt‬‬ ‫מיקרו מחשבים‬

‫‪ .5‬פונקציה מס' ‪ : B‬בדיקה אם נלחץ מקש במקלדת‪.‬‬

‫הפונק' תגרו למחשב להפסיק את התכנית שמתבצעת‪ ,‬לבדוק א נלח‪ +‬מקש כלשהו‬
‫במקלדת‪ ,‬א כ ‪ ,‬האוגר ‪ AL‬יקבל את הער ‪ .FFH‬אחרת ) א לא נלח‪ +‬מקש ( הוא יקבל ‪.00H‬‬
‫ולאחר מכ התכנית תמשי כהלכה ‪.‬‬

‫נוהל הקריאה לפונקציה בתו התכנית ‪:‬‬


‫‪:‬‬
‫‪:‬‬
‫‪MOV AH,0BH‬‬
‫‪INT 21H‬‬
‫‪CMP AL,0FFH‬‬
‫‪JNZ AGAIN‬‬
‫‪:‬‬
‫‪:‬‬
‫הפסיקה בודקת א נלח‪ +‬מקש כלשהו‪ ,‬ואז לפי מצבו של האוגר ‪ AL‬נחליט אי להמשי את הביצוע‪.‬‬
‫במקרה שלנו‪ ,‬כל עוד לא נלח‪ +‬מקש מבצעי קפיצה למקו המסומ ע"י התווית ‪ ,AGAIN‬אחרת )כאשר‬
‫נלח‪ +‬מקש ( הקפיצה לא מתבצעת והתכנית ממשיכה הלאה‪.‬‬

‫‪ .6‬פונקציה מס' ‪ : 4C‬סיום תכנית וחזרה ל ‪.DOS‬‬

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


‫ההפעלה ‪ ,DOS‬פסיקה זו מופיעה בסו' כל תכנית שלמה‪.‬‬

‫נוהל הקריאה לפונקציה בתו התכנית ‪:‬‬


‫‪:‬‬
‫‪:‬‬
‫‪MOV AH,4CH‬‬
‫‪INT 21H‬‬
‫סו' התכנית‬

‫________________________________________________________________________________________________________________________‬
‫‪www.zaher.co.il‬‬ ‫‪-5-‬‬

You might also like