使用以下代码,我计算斐波那契数列的前 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 个元素存储在名为the30的变量中,其中DD但我不知道当所有寄存器最多为 16 位时这怎么可能。
有没有办法做到这一点?