.model small
.stack
.data
total equ 10
count = 0
id =0
Fibonacci dw total dup(0)
.code
start:
mov ax,@data
mov ds,ax
mov ax,1
mov bx,0
mov cx,total
mov count,0
while: mov Fibonacci[count], ax
mov id,ax
add ax,bx
mov bx,id
inc count
loop while
mov ax,4ch
int 21h
end start
出现好几个错误,汇编新手,急用,谢谢。求告知问题所在。
修改后的代码如下:
.model small
.stack
.data
total equ 10
count dw 0 ;count=0相当于宏替换,不是在内存中的,不能给值
id dw 0 ;id=0问题同count
Fibonacci dw total dup(0)
.code
start:
mov ax,@data
mov ds,ax
mov ax,1
mov bx,0
mov cx,total
;mov count,0 ;变量不能做索引
mov si,0 ;因此,我们用si做索引
again:
mov Fibonacci[si],ax ;变量不能做索引
mov id,ax
add ax,bx
mov bx,id
;inc count
inc si
inc si ;dw为字长,索引增长2
loop again
;mov ah,4ch或mov ax,4c00h才是退出
;原先的mov ax,4ch相当于mov al,4ch,没有选择功能号,无意义
mov ax,4c00h
int 21h
end start
问题已在注释中说明,主要是语法错误,经检验算法正确,运行结果如下:
即
1 1 2 3 5 8 13 21 34 55
主要语法问题:
=
和equ
都是宏替换,汇编器不为为二者开辟内存空间,向此处赋值不予通过bx
,si
,di
以及栈指针寄存器bp
和sp
si
作索引每次循环后加2ah
赋值4ch
才是调用int 21h
的4ch号
功能,而不是给ax
赋值4ch