代码在钟形三角形中给出了错误的输出(汇编语言emu8086)

时间:2014-12-13 19:29:31

标签: assembly emulation x86-16

我想用汇编语言emu8086制作钟形三角形 like this

我在这一行有问题

mov ch,a[DI-(1+d)] 

d = 1;变量增量 我试图删除(1 + d)并将其设为2就像这样

mov ch,a[DI-2]

它给了我想要的结果,但我想使用变量(d)导致它每次都改变

那就是问题所在

J2:
cmp DI,bx
JE J1
mov al, a[DI] 
mov ch,a[DI-(1+d)] //in this line//
add al,ch
inc di
mov a[DI],al
print ' '
call print_num 
mov dl,c 
mov b,dx
jmp J2

即输出

1
1 2
2 2 2
2 2 2 2

但它应该是这样的

1
1 2
2 3 5 
5 7 10 15 

我认为问题是括号

1 个答案:

答案 0 :(得分:1)

处理器寄存器中只能有不同的地址组件。

mov ch,a[DI-(1+d)]

假设 d 是字大小的变量,我建议你编码:

push bx  ;Save because you use it elsewhere!
mov bx,d
neg bx
mov ch,a[DI-1+BX]
pop bx