在nasm中寻址数组元素

时间:2011-10-06 14:26:34

标签: assembly nasm

我是装配和NASM的新手,还有一个代码:

    SECTION .data       
array db 89, 10, 67, 1, 4, 27, 12, 34, 86, 3
wordvar dw      123     

    SECTION .text       
        global main     
main:               

    mov eax, [wordvar]
    mov ebx, [array+1]
    mov ebx,0       
    mov eax,1       
    int 0x80    

然后我通过GDB运行可执行文件eax寄存器按预期设置为值123,但在ebx中有一些混乱而不是数组元素值。

1 个答案:

答案 0 :(得分:5)

由于您要从内存中加载32位值,因此您应使用array而不是wordvar / dd声明dbdw,以便每个条目都有四个字节:

array   dd 89, 10, 67, 1, 4, 27, 12, 34, 86, 3
wordvar dd 123     

此外,以下索引是错误的:

mov ebx, [array+1]

你可能意味着:

mov ebx, [array+1*4]