адресация элементов массива в nasm - PullRequest
4 голосов
/ 06 октября 2011

Я очень новичок в сборке и 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    

Затем я запускаю исполняемый файл через регистр eax GDB, установленный в значение 123, как и предполагалось, но в ebx есть некоторыебеспорядок вместо значения элементов массива.

1 Ответ

5 голосов
/ 06 октября 2011

Поскольку вы загружаете 32-битные значения из памяти, вы должны объявить array и wordvar, используя dd вместо db / dw, чтобы каждая запись получала четыре байта:

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

Кроме того, следующее индексирование неверно:

mov ebx, [array+1]

Вы, вероятно, имели в виду:

mov ebx, [array+1*4]
...