【发布时间】:2016-04-21 14:43:02
【问题描述】:
我尝试做一个练习,我必须在 20 个元素向量中写入斐波那契数列的前 20 个数字,但我不明白为什么代码不能正常工作。它适用于该系列的前 10 个元素,但随后出现了一些我无法识别的问题。你怎么看?这是我写的代码:
DIM EQU 20
COUNT EQU 18
.model small
.stack
.data
vect dw DIM dup ?
.code
.startup
mov ax,1
mov bx,1
mov cx,COUNT
lea si,vect
mov [si],1
add si,2
ciclo: mov [si],bx
mov dx,bx
add bx,ax
mov ax,dx
add si,2
LOOP ciclo
.exit
end
更新
我没有完全按照我的程序中显示的方式粘贴代码。我正在运行的程序开始于:
ORG 100h
我不认为这很重要,所以我把它省略了。重要吗?
这是我在调试原始代码时看到的。我走到ciclo: mov [si],bx。 CX 里面有 8 个。
当我单步执行时,程序退出并显示PROGRAM HAS RETURNED CONTROL TO THE OPERATING SYSTEM,如下图所示:
为什么会这样?
【问题讨论】:
-
请提供比“有一些我无法识别的问题”更详细的问题描述。
-
你的模拟器没有问题。
-
是的,这是一个复制/粘贴错误。关于“mov [si],1”这一行,如果我没记错的话,英特尔使用小端序,指定 1 的大小更正确,但并不那么重要。无论如何感谢您的帮助,现在我要发布两个屏幕截图,因为我在调试过程中发现了一些奇怪的东西。如果您仍然想帮助我,我将不胜感激。