Работа с рекурсивной функцией - Assembler
Формулировка задачи:
Здравствуйте, помогите пожалуйста описать рекурсивную функцию и с помощью этой функции вычислить:
Решение задачи: «Работа с рекурсивной функцией»
textual
Листинг программы
LOCALS .model small .stack 1000h .data .code main proc mov ax, @data mov ds, ax mov ax, 3 ;K push ax mov ax, 5 ;N push ax call Ank call Show_AX mov ax, 4C00h int 21h main endp Ank proc N: word, K: word push bp mov bp, sp cmp K, 0 ;если K==0, то результат 1 jnz @@Calc mov ax, 1 pop bp ret 4 @@Calc: mov ax, K ;иначе A(N,K):=(N+1)*A(N-1, K-1) dec ax push ax mov ax, N dec ax push ax call Ank inc N push dx mov dx, 0 mul N pop dx pop bp ret 4 Ank endp ; выводит число из регистра AX на экран ; входные данные: ; ax - число для отображения Show_AX proc push ax push bx push cx push dx push di mov cx, 10 xor di, di ; di - кол. цифр в числе @@Conv: xor dx, dx div cx ; dl = num mod 10 add dl, '0' ; перевод в символьный формат inc di push dx ; складываем в стэк or ax, ax jnz @@Conv ; выводим из стэка на экран @@Show: pop dx ; dl = очередной символ mov ah, 2 ; ah - функция вывода символа на экран int 21h dec di ; повторяем пока di<>0 jnz @@Show pop di pop dx pop cx pop bx pop ax ret Show_AX endp end main
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д