【问题标题】:the code gives me the wrong output in bell triangle (assembly language emu8086)该代码给了我贝尔三角形的错误输出(汇编语言emu8086)
【发布时间】:2014-12-13 19:29:31
【问题描述】:

我想用汇编语言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 

我认为问题在于括号

【问题讨论】:

  • d 声明的内容是什么?
  • 'd' 是循环中加1的变量

标签: assembly emulation x86-16


【解决方案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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-28
    • 1970-01-01
    • 1970-01-01
    • 2022-12-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多