|
עמוד:295
הפונקציה : factorial ( n ) אם n = 1 אזי החזר factorial = 1 אחרת החזר factorial ( n-l ) factorial = n נשתמש באוגר BX כפרמטר עבור n ובאוגר AX להחזרת ערך . במקרה הכללי בו n > 0 יש לזמן שוב את הפונקציה עבור . 11-1 זימון הפונקציה נעשה מתוך הפונקציה , אך לפני כן עלינו לשמור את ערכו של n ולשם כך נשתמש במחסנית . להלן קטע תכנית המכילה פונקציה רקורסיבית לחישוב : n ! ; bx = 2 זימון של הפונקציה הדקורטיבית ; factorial ( 2 ) סיום התכנית ; factorial PROC int 21 h mov ax , 4 c 00 h finish : call factorial mov bx , 2 טיפול במקרה הפשוט ; 11 = 1 השווה את ערכו של bx לאפס ; אם BX > 1 קפוץ להמשך ביצוע רקורסיה ; תנאי עצירה המקרה בו ; AX = 1 mov ax , 1 jg call fact cmp bx , 0 done jmp done טיפול במקרה הכללי ; n > ll call factorial dec bx push bx call fact : דחוף למחסנית את ; bx הפחת ו מאוגר ; bx זימון לקריאה הרקורסיבית ; facotiral ( bx-l ) בסיום הרקורסיה : שלוף ערך ; bx הכפל את ערכו של ax-n bx ושים את התוצאה באוגר ; ax ENDP factorial done : ret mul bx pop bx END start
|
|