0

我在我的简单程序中加载了一些字符串

mov si, song

女巫负载:

song:
%if 1
dw E0, C, A, E1, C, A, E2, B, A, E3, C, B
%endif
dw E0, C, A, E1, C, A, 0

E0 equ 14000 etc...

我从中加载元素

 lodsw; (one transition use three of them)

我需要这样做

 mov and inc

我试过

mov ax, [si+dx]
inc dx

但这不想工作,任何想法

4

2 回答 2

3

lodsw等效于(如果省略标志)

mov ax, word [si]
add si, 2

我不确定您是否可以dx在地址表达式中使用[si+dx](在 16 位模式下,只有,si和是索引寄存器)。如果您不想更改,请使用.dibpbxsibx

(顺便问一句:你真的要写 16 位代码吗?它已经过时了。NASM 完美地编译了 32 位代码。)

于 2013-06-15T15:03:44.427 回答
0

由于您的表由“dw”(16 位值)组成,因此您需要将 dx 增加 2

mov ax, [si+dx]
inc dx
inc dx

要不就

mov ax, [si+dx]
add dx, 2
于 2013-06-15T14:56:04.443 回答