如何在8086程序集中的一个DD编号中合并两个16位dW

问题描述

使用以下代码,我计算斐波那契数列的前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 (将#修改为@)