|
עמוד:306
swap a , b יציאה מהתכנית ; END start int 21 h mov ax , 4 c 00 h כדי להיווכח ששס המקרו אכן הוחלף בגוף המקרו , הדרו את התכנית וצרו גם קובץ . 1 st אפשר להתבונן בתכנית גם באמצעות . debugger-n שאלה 7 . 15 . 1 כתבו מקרו להחלפת תוכן שני משתנים בזיכרון ; . 2 כתבו מקרו לחיבור 3 משתנים K כתבו מקרו בשם pushreg שידחוף למחסנית את ערכי האוגרים ומקרו בשם popreg שישלוף את ערכי האוגרים . 7 . 9 . 3 מנגנון ביצוע מקרו והעברת פרמטרים למרות הדמיון בין מקרו לפונקציה , יש הבדל משמעותי בין דרכי המימוש שלהם . בעוד שגוף פונקציה מופיע בתכנית פעם אחת , גוף המקרו משוכפל בכל מקום אליו הוא זומן . הבדל זה משפיע על אופן ביצוע המקרו לעומת הביצוע של פונקציה . כאשר מזמנים פונקציה , מצביע ההוראה IP מוחלף בכתובת ההוראה הראשונה של הפונקציה ; בסיום הפונקציה הוא מוחלף בכתובת של ההוראה הבאה לביצוע . כאשר משתמשים במקרו , קטע קוד שמתאר המקרו מוכנס בתכנית במקום שם המקרו על-ידי תכנית האסמבלר וכך מתקבלת התכנית שמורצת . השימוש במקרו "מנפח" את קוד התכנית ומאריך אותה בצורה משמעותית , לכן בוחלים להשתמש במקרו למימוש פעולות בסיסיות , המופיעות בתכנית כמה פעמים , במיוחד כאשר הקוד הדרוש עבורן קצר יחסית . השימוש בפונקציה , לעומת זאת , אינו מאריך את התכנית , אלא את הזמן הדרוש לביצועה , בגלל מנגנון הקפיצה והחזרה מהתכנית , שמאריך את שלב ההבאה במחזור הבאה-וביצוע של הוראה .
|
|