我是装配和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
Run Code Online (Sandbox Code Playgroud)
然后我通过GDB运行可执行文件eax寄存器按预期设置为值123,但在ebx中有一些混乱而不是数组元素值.
由于您从内存加载32位值,因此您应该声明array并wordvar使用dd而不是db/ dw以使每个条目获得四个字节:
array dd 89, 10, 67, 1, 4, 27, 12, 34, 86, 3
wordvar dd 123
Run Code Online (Sandbox Code Playgroud)
此外,以下索引是错误的:
mov ebx, [array+1]
Run Code Online (Sandbox Code Playgroud)
你可能意味着:
mov ebx, [array+1*4]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10676 次 |
| 最近记录: |