我是汇编和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中有一些混乱而不是数组元素值。
由于您正在从内存中加载32位值,因此您应该使用dd
而不是db
/dw
来声明array
和wordvar
,以便每个条目获得四个字节:
array dd 89, 10, 67, 1, 4, 27, 12, 34, 86, 3
wordvar dd 123
还有,下面的索引是错误的:
mov ebx, [array+1]
你的意思可能是:
mov ebx, [array+1*4]