能否用8086汇编语言写一个菲波那契函数
时间: 2023-06-19 07:08:10 浏览: 87
可以,以下是用8086汇编语言实现的菲波那切数列函数:
```
.MODEL SMALL
.STACK 100H
.DATA
FIB DB 0, 1 ; 存储前两个数
COUNT DB 10 ; 要求的斐波那契数列个数
.CODE
MOV AX, @DATA
MOV DS, AX ; 初始化数据段寄存器
MOV CX, COUNT ; 将要求斐波那契数列的个数存入CX寄存器
MOV BX, 0 ; 存储当前数列数值
MOV DL, 0 ; 存储当前数列低位
MOV DH, 0 ; 存储当前数列高位
MOV AL, FIB ; 将第一个数存入AL寄存器
MOV BL, FIB+1 ; 将第二个数存入BL寄存器
MOV AH, 2 ; 输出字符函数号
INT 21H ; 输出第一个数
MOV DL, BL ; 将第二个数的低位存入DL寄存器
MOV DH, AH ; 将第二个数的高位存入DH寄存器
DEC CX ; 将要求的斐波那契数列总数减一
NEXT:
ADD AL, BL ; 计算当前数列的值
MOV BX, AX ; 将结果存入BX寄存器
CMP DL, 0 ; 判断低位是否溢出
JE NODEC ; 若未溢出,则跳过减一操作
DEC DH ; 若溢出,则高位减一
NODEC:
DEC DL ; 低位减一
MOV AH, 0 ; 清空AH寄存器
MOV AL, DL ; 将低位存入AL寄存器
ADD AL, 30H ; 将数字转为字符
INT 21H ; 输出字符
MOV AH, 0 ; 清空AH寄存器
MOV AL, DH ; 将高位存入AL寄存器
ADD AL, 30H ; 将数字转为字符
INT 21H ; 输出字符
MOV FIB, BL ; 将当前数列的值存入FIB数组中
MOV FIB+1, BH
MOV AL, BL ; 将当前数列的值存入AL寄存器
MOV BL, BX ; 将上一个数列的值存入BX寄存器
DEC CX ; 将要求的斐波那契数列总数减一
JNZ NEXT ; 若还未达到要求的总数,则继续循环
MOV AH, 4CH ; 返回DOS命令
INT 21H
END
```
该程序通过循环计算斐波那契数列,并将每个数输出到屏幕上。请注意,由于8086处理器是16位的,因此需要将每个数分成高位和低位两部分进行存储和计算。
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)