寻址 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 中,有一些混乱而不是数组元素值。
I'm very new to assembly and NASM and there is a code:
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
Then I run the executable through GDB eax register is set to value 123 as intended, but in ebx there is some mess instead of the array elements value.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
由于您要从内存加载 32 位值,因此您应该使用
dd
而不是db
声明array
和wordvar
>/dw
以便每个条目获得四个字节:另外,以下索引是错误的:
您可能的意思是:
Since you're loading 32-bit values from memory, you should declare
array
andwordvar
usingdd
rather thandb
/dw
so that each entry gets four bytes:Also, the indexing in the following is wrong:
You probably meant: