Работа с рекурсивной функцией - Assembler

Узнай цену своей работы

Формулировка задачи:

Здравствуйте, помогите пожалуйста описать рекурсивную функцию и с помощью этой функции вычислить:

Решение задачи: «Работа с рекурсивной функцией»

textual
Листинг программы
  1. LOCALS
  2.  
  3. .model small
  4.  
  5. .stack 1000h
  6.  
  7. .data
  8.  
  9. .code
  10.  
  11. main    proc
  12.         mov     ax,     @data
  13.         mov     ds,     ax
  14.  
  15.         mov     ax, 3   ;K
  16.         push    ax
  17.         mov     ax, 5   ;N
  18.         push    ax
  19.         call    Ank
  20.  
  21.         call    Show_AX
  22.  
  23.         mov     ax,     4C00h
  24.         int     21h
  25. main    endp
  26.  
  27. Ank     proc    N: word, K: word
  28.         push    bp
  29.         mov     bp,     sp
  30.         cmp     K,      0       ;если K==0, то результат 1
  31.         jnz     @@Calc
  32.         mov     ax,     1
  33.         pop     bp
  34.         ret     4
  35. @@Calc:
  36.         mov     ax,     K       ;иначе A(N,K):=(N+1)*A(N-1, K-1)
  37.         dec     ax
  38.         push    ax
  39.         mov     ax,     N
  40.         dec     ax
  41.         push    ax
  42.         call    Ank
  43.         inc     N
  44.         push    dx
  45.         mov     dx,     0
  46.         mul     N
  47.         pop     dx
  48.         pop     bp
  49.         ret     4
  50. Ank     endp
  51.  
  52. ; выводит число из регистра AX на экран
  53. ; входные данные:
  54. ; ax - число для отображения
  55. Show_AX proc
  56.         push    ax
  57.         push    bx
  58.         push    cx
  59.         push    dx
  60.         push    di
  61.  
  62.         mov     cx, 10
  63.         xor     di, di          ; di - кол. цифр в числе
  64.  
  65. @@Conv:
  66.         xor     dx, dx
  67.         div     cx              ; dl = num mod 10
  68.         add     dl, '0'         ; перевод в символьный формат
  69.         inc     di
  70.         push    dx              ; складываем в стэк
  71.         or      ax, ax
  72.         jnz     @@Conv
  73.         ; выводим из стэка на экран
  74. @@Show:
  75.         pop     dx              ; dl = очередной символ
  76.         mov     ah, 2           ; ah - функция вывода символа на экран
  77.         int     21h
  78.         dec     di              ; повторяем пока di<>0
  79.         jnz     @@Show
  80.  
  81.         pop     di
  82.         pop     dx
  83.         pop     cx
  84.         pop     bx
  85.         pop     ax
  86.         ret
  87. Show_AX endp
  88.  
  89. end     main

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 3.909 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут