我在我的简单程序中加载了一些字符串
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
但这不想工作, 任何想法
答案 0 :(得分:3)
lodsw
等同于(如果省略标志)
mov ax, word [si]
add si, 2
我不确定您是否可以在dx
等地址表达式中使用[si+dx]
(在16位模式下,只有si
,di
,bp
和bx
是索引寄存器)。如果您不想更改si
,请使用bx
。
(顺便说一句:你真的想写16位代码吗?它已经过时了.NASM完美地编译了32位代码。)
答案 1 :(得分:0)
由于你的表由“dw”(16位值)组成,你需要增加dx乘以2
mov ax, [si+dx]
inc dx
inc dx
或只是
mov ax, [si+dx]
add dx, 2