assembly 如何在DOS汇编x86(16位)中获取数组的索引?

vyswwuz2  于 11个月前  发布在  其他
关注(0)|答案(1)|浏览(94)

我想知道如何处理一个数组的索引。我的目标是获得和改变在一个特定的索引值。
我的数组看起来像这样:

Dots_pos    dw firstLine, firstLine+ 8, firstLine+ 16, firstLine+ 24, firstLine+ 32
            dw firstLine+ 40, firstLine+ 48, firstLine+ 56, firstLine+ 64, firstLine+ 72
            dw firstLine+ 80, firstLine+ 88, firstLine+ 96, firstLine+ 104, firstLine+ 112 
            dw firstLine+ 120, firstLine+ 168, firstLine+ 176, firstLine+ 184, firstLine+ 192
            dw firstLine+ 200, firstLine+ 208, firstLine+ 216, firstLine+ 224, firstLine+ 232
            dw firstLine+ 240, firstLine+ 248, firstLine+ 256, firstLine+ 264, firstLine+ 272
            dw firstLine+ 280, firstLine+ 288 
            ; 2nd line
            dw secondLine, secondLine+ 96, secondLine+ 120, secondLine+ 168, secondLine+ 192
            dw secondLine+ 288
            ;...

字符串
我没有尝试很多东西,因为我找不到任何关于它的文档,特别是在16位。
非常感谢您考虑我的请求。

x6492ojm

x6492ojm1#

你可能想使用的是一个可以用于寻址的寄存器(例如BXSI)。然后你可以用mov ax, [line + BX]获得特定索引处的值,其中BX是元素索引 * 2(因为每个元素都是2字节长)。
或者你可以把行的起始地址放到BX中,然后直接给它加上索引 * 2。假设我们想得到的索引在CX中,那么代码将是

mov bx, line
shl cx       ; CX *= 2
add bx, cx
mov ax, [bx]

字符串

相关问题