gpt4 book ai didi

assembly - 汇编语言中 "ds:"的含义

转载 作者:行者123 更新时间:2023-12-03 17:05:29 28 4
gpt4 key购买 nike

我只是汇编语言的初学者,可能有一些愚蠢的问题。这两行有什么区别?

3e 8b 06 mov eax,DWORD PTR ds:[esi]
8b 06 mov eax,DWORD PTR [esi]

在我看来它也是如此,我也尝试过这个程序:
int main()
{
__asm
{
mov esi, ebx
mov eax,DWORD PTR [esi]
mov ebx,DWORD PTR ds:[esi]
}

return 0;
}

这证实了我的猜测,所以问问你们,如果有什么不同。为什么我们需要两条执行相同但具有不同长度操作码的指令。

最佳答案

3E第一条指令中的字节是 DS段覆盖前缀(请参阅英特尔软件开发人员手册中的“2.1.1 指令前缀”)。

Group 2
— Segment override prefixes:
• 3EH—DS segment override prefix (use with any branch instruction is reserved)



在这种情况下它是多余的,因为 ds是大多数内存访问的默认段。此外,如果您有一个平坦的 32 位内存空间,您通常不会明确指定段寄存器,因为它们无论如何都被设置为指向相同的内存。

关于assembly - 汇编语言中 "ds:"的含义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30050527/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com