" ds的含义:"用汇编语言

时间:2015-05-05 10:30:31

标签: assembly x86

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

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;
}

它证实了我的猜测,所以请问你们,如果有任何区别的话。为什么我们需要两个执行相同但具有不同长度操作码的指令。

1 个答案:

答案 0 :(得分:2)

1)DS = DATA-segment

2)两种不同的操作码,因为两种不同的“地址模式”。 3)这是两种不同类型的x86 er,所谓的“地址模式”。    asm中的一个非常基本的东西。

a)https://cs.nyu.edu/courses/fall10/V22.0201-002/addressing_modes.pdf b)http://www.ic.unicamp.br/~celio/mc404s2-03/addr_modes/intel_addr.html