如何在程序集中访问二维数组的元素?

How to access an element of a 2D array in assembly?

如何在汇编中访问二维数组的元素?我找到了一些代码示例,但它们使用的是 edxeax 寄存器,emu8086(仅限 16 位寄存器)不支持这些寄存器。
我想让变量 t 等于 array[0][1] (t = 2).
的值 我应该怎么办?

.8086
.model small
.stack 100h

.data 

    t dw ?

    array   dw 1, 2, 3,
            dw 4, 5, 6,
            dw 7, 8, 9

.code 
    ; ax <- array[0][1]
    mov eax, DWORD PTR[array + 8] ; not working
    ; t <- ax
    mov t, eax ; t = 2

I want to make variable t equal to the value of array[0][1] (t = 2).

数组中填满了单词。第一行的第二个元素在数组中的偏移量为 2。

mov ax, [array + 2]
mov [t], ax

根据汇编器的不同,最后一行可能是:

mov t, ax

由于您正在使用 .model small,您是否设置了 DS 段寄存器?

如果改为.model tiny,则不需要设置任何段寄存器。