assembly - 如何在 8086 汇编中将两个 16 位 dW 合并到一个 DD 数中
问题描述
使用以下代码,我计算斐波那契数列的前 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 位时这怎么可能。
有没有办法做到这一点?
解决方案
推荐阅读
- sql-injection - 在使用 SQL 数据源进行放大时保护 CSRF
- javascript - jShowOff 幻灯片放映无法在幻灯片中心单击
- css - SASS“&”和父选择器
- javascript - 使用 Javascript/JQuery 将表单提交的数据保存到 CSV 文件
- vue.js - 在 Vuejs 中使用 v-html 渲染本地存储的图像
- node.js - nvm让firebase消失了吗?
- excel - 通过 VBA 将文件导出为 pdf 时,范围似乎无法识别
- regex - 正则表达式在一行中多次匹配
- javascript - CORS 阻止本地文件加载另一个本地文件 - WTF?
- cassandra - 从表中选择数据的where条件