问题描述
使用以下代码,我计算斐波那契数列的前30个元素。 请注意,arr的每两个元素代表斐波那契序列的一个元素,而第26个元素之后的斐波那契数字将需要2个以上的字节来表示。
StSeg Segment STACK 'Stack'
DB 100H DUP (?)
StSeg Ends
DtSeg Segment
arr dw 62 dup (?)
the30 dd ?
DtSeg Ends
CDSeg Segment
ASSUME CS:CDSeg,DS:DtSeg,SS:StSeg
Start:
MOV AX,DtSeg ; set DS to point to the data segment
MOV DS,AX
; PROBLEM: STORE FirsT TWENTY ELEMENTS OF FIBONACCI IN AN ARRAY FROM MEMORY.
; SOLUTION:
mov bx,offset arr
add bx,2
mov [bx],00H
add bx,4
mov [bx],01H
; inited fibo[0] = 00000000H and fibo[1] = 00000001H
mov cx,29; make while loop counts 29 times.
while:
;first part addition
mov ax,[bx]
mov dx,[bx-4]
add ax,dx
mov dx,00H
jnc else
mov dx,01H
; second part addition
else:
mov [bx+4],ax
mov ax,[bx-2]
add dx,[bx-6]
add ax,dx
mov [bx+2],ax
add bx,4
loop while
MOV AH,4CH
MOV AL,0
INT 21H
CDSeg ENDS
END Start
我的大学作业要求将第30个元素存储在名为 DD 的名为 the30 的变量中,但我不知道即使所有寄存器均为16位,这怎么可能最多。
有什么办法吗?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)