Recursion in Assembly language

Prahlad Godara ------ From DOOSEEP

Content

Recursion परिभाषा, सिंटेक्स और उदाहरण

असेंबली लैंग्वेज में, जब किसी कोड ब्लॉक या इंस्ट्रक्शन ग्रुप को बार-बार इस्तेमाल करना होता है, तो रिकर्सन का इस्तेमाल किया जाता है। रिकर्सन तब होता है जब कोई फ़ंक्शन या निर्देश समूह बार-बार प्रत्यक्ष या अप्रत्यक्ष रूप से स्वयं को कॉल करता है।

रिकर्सन दो प्रकार के होते हैं: प्रत्यक्ष और अप्रत्यक्ष।

  1. direct recursion -प्रत्यक्ष पुनरावर्तन में, प्रक्रिया स्वयं को कॉल करती है।
  2. indirect recursion - अप्रत्यक्ष पुनरावर्तन में, पहली प्रक्रिया दूसरी प्रक्रिया को कॉल करती है, जो बदले में पहली प्रक्रिया को कॉल करती है।

पुनरावर्तन को कई गणितीय एल्गोरिथम में देखा जा सकता है। उदाहरण के लिए, किसी संख्या के क्रमगुणन की गणना के मामले पर विचार करें। किसी संख्या का गुणनखंड समीकरण किसके द्वारा दिया जाता है

 Fact (n) = n * fact (n-1) for n > 0

Recursion Exampal

उदाहरण के लिए: 5 का फैक्टोरियल 1 x 2 x 3 x 4 x 5 = 5 x 4 का फैक्टोरियल है और रिकर्सिव प्रोसेस दिखाने के लिए यह एक अच्छा उदाहरण हो सकता है। प्रत्येक पुनरावर्ती एल्गोरिदम में समाप्ति की स्थिति होनी चाहिए, यानी, जब कोई शर्त पूरी हो जाती है तो प्रोग्राम की रिकर्सिव कॉलिंग बंद होनी चाहिए। फैक्टोरियल एल्गोरिथम के मामले में, अंतिम स्थिति तब होती है जब n 0 होता है।


Example निम्नलिखित कार्यक्रम दिखाता है कि असेंबली भाषा में फैक्टोरियल एन को कैसे लागू किया जाए। प्रोग्राम को आसान रखने के लिए, हम 3 के फ़ैक्टोरियल की गणना करेंगे।
 section	.text
  global _start         ;must be declared for using gcc
 
_start:                  ;tell linker entry point

  mov bx, 3             ;for calculating factorial 3
  call  proc_fact
  add   ax, 30h
  mov  [fact], ax
   
  mov	  edx,len        ;message length
  mov	  ecx,msg        ;message to write
  mov	  ebx,1          ;file descriptor (stdout)
  mov	  eax,4          ;system call number (sys_write)
  int	  0x80           ;call kernel

  mov   edx,1            ;message length
  mov	  ecx,fact       ;message to write
  mov	  ebx,1          ;file descriptor (stdout)
  mov	  eax,4          ;system call number (sys_write)
  int	  0x80           ;call kernel
   
  mov	  eax,1          ;system call number (sys_exit)
  int	  0x80           ;call kernel
 
proc_fact:
  cmp   bl, 1
  jg    do_calculation
  mov   ax, 1
  ret
 
do_calculation:
  dec   bl
  call  proc_fact
  inc   bl
  mul   bl        ;ax = al * bl
  ret

section	.data
msg db 'Factorial 3 is:',0xa	
len equ $ - msg			

section .bss
fact resb 1

result −

 Factorial 3 is: 6 

Read in- English
Tags- Nasm Assembly language Recursion in hindi. This blogcreates content similar to stackoverflow geeks for geeks tutorialspoint w3schools and dooseep,Recursion in assembly
कोई टिप्पणी नहीं:
एक टिप्पणी भेजें