|
صفحة: 282
דוגמה _ 7 . 9 נכתוב פונקציה greater ( a , b ) שתקבל שני מספרים ללא סימן ( לפי ערך ) ותחזיר את הגדול בין השניים . , 7 mov bp , sp greater PROC עתק , לאוגר ax את mov ax , [ bp + 2 ] ; b השווה את a ל-ג cmp ax , [ bp + 4 ] ; 1 אם b גדול a-n קפוץ להוראה אליה צמודה התווית pnsn ja next ; next לאוגר ax את המספר הגדול ; greater ENDP next : ret 4 mov ax , [ bp + 4 ] בתכנית שמזמנת את הפרוצדורה , נאחסן תחילה את תוכנו של AX במחסנית , ולאחר מכן נעביר את הפרמטרים לפונקציה . אחרי שיסתיים ביצוע הפונקציה , נעתיק את הערך שהוחזר מהפרוצדורה לאוגר , BX ונשחזר את ערכו המקורי של : ax שמירת ערכו של push ax ; ax העברת פרמטר ( לפי ערך ) push a ; a העברת פרמטר ( לפי ערך ) push b ; b call greater המספר הגדול בין השניים nmw mov bx , ax ; pop ax ; ax ^^ ^^^^^^ ^^^^ שאלה 7 . 12 נשנה את התכנית שהוצגה בדוגמה . 7 . 9 הסבירו מה יקרה אם תוכן אוגר AX יישמר במחסנית במהלך ביצוע הפונקציה ולא בתכנית הראשית , כפי שנעשה בדוגמה ?
|
|