用汇编语言递归方法找出斐波那契数列的对应位数
.MODEL SMALL
.DATA
STRING1 DB 'PLEASE INTPUT THE NMBER:$'; 请输入你想知道的第几个斐波那契数列
STRING2 DB 'THE RESULT:$'; 这个结果是
.CODE
main proc far
mov ax,@data; 为数据段开辟地址
mov ds,ax
lea dx,STRING1; 输出第一句话
mov ah,09h
int 21h
call decibin; 读入数,了解使用者需要知道第几个斐波那契数
lea dx,STRING2; 输出第二句话
mov ah,09h
int 21h
mov cx,bx
dec cx
dec cx; 进行两次减减,方便分输入数是否大于2进行不同的运算输出
cmp cx,0
jle shuchu; 若输入的数小于2(进行两次减减小于0)则直接输出1结束程序
mov ax,1;
mov bx,1
push ax
push dx;
push dx; 此处连续压入两个dx仅仅为了方便与后续情况保持相同规律
push bx
call fact; 若输入的数大于2(进行两次减减大于0)则进行fact运算
call output;
shuchu:
mov al,31h; 直接输出1结束程序
mov dl,al
mov ah,02h
int 21h
MOV AX,4C00H; 终止程序
INT 21H
main endp
;------------------------------
; 开始读入一个数
decibin proc near
mov bx,0
newchar:
mov ah,1
int 21h
sub al,30h; 如果小于0
jl exit
cmp al,9; 如果大于9
jg exit