x86迭代一个2字节的字数组

时间:2012-12-22 15:14:38

标签: assembly x86 dos

我正在使用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)来引用它?

2 个答案:

答案 0 :(得分:2)

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

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

 fire_loop:
  mov ax,[bx+si]
  add si, 2
  loop fire_loop

答案 1 :(得分: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