1

我正在使用 emu8086 在 8086 游戏中编写一个循环,我想迭代单词值,而不是像这样声明的数组的字节;

player_fire  dw 320 dup(0)

; ...

mov  bx, offset player_fire
mov  cx, 320
fire_loop:
mov  ax, [bx+si]
inc  si
loop fire_loop

但我知道这是错误的。我在写入第 i 个元素时也遇到问题,是否应该使用 bx + si 或 bx + (2*si) 来引用它?

4

2 回答 2

3

第 i 个元素位于 [base + 2*register]。

然而,这不能直接在 80386 寻址模式之前写入。在 8086+ 上,您可以使用:

 fire_loop:
  mov ax,[bx+si]
  add si, 2
  loop fire_loop
于 2012-12-22T15:27:44.333 回答
0
 fire_loop:
  mov ax,[bx+si];;mov to the next sell and put in ax
  add si, 2; inc si
  loop fire_loop;dex cx and loop
于 2013-04-28T22:03:34.167 回答