我是装配和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中有一些混乱而不是数组元素值。
答案 0 :(得分:5)
由于您要从内存中加载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]