我只是在VS2010中查看我的C++程序的反彙編。那就是:dword ptr和dword ptr之間的區別:es
int main()
{
00B613A0 push ebp
00B613A1 mov ebp,esp
00B613A3 sub esp,0D4h
00B613A9 push ebx
00B613AA push esi
00B613AB push edi
00B613AC lea edi,[ebp-0D4h]
00B613B2 mov ecx,35h
00B613B7 mov eax,0CCCCCCCCh
00B613BC rep stos dword ptr es:[edi]
00B613BE mov eax,dword ptr [___security_cookie (0B67000h)]
00B613C3 xor eax,ebp
00B613C5 mov dword ptr [ebp-4],eax
char temp[] = "hello";
00B613C8 mov eax,dword ptr [string "hello" (0B6573Ch)]
00B613CD mov dword ptr [ebp-10h],eax
00B613D0 mov cx,word ptr ds:[0B65740h]
00B613D7 mov word ptr [ebp-0Ch],cx
return 0;
00B613DB xor eax,eax
}
有問題的線路有:
00B613BC rep stos dword ptr es:[edi]
00B613D0 mov cx,word ptr ds:[0B65740h]
我不知道爲什麼他們使用dword ptr es:[edi]
和word ptr ds:[0B65740h]
。雖然我知道dword ptr的意思,但我沒有得到最後添加的部分,:es
和:ds
。現在我已經看過這個語法好幾次了,讓它不被人注意。
感謝,
Devjeet
哦!感謝您的回覆。還有一個問題,它是如何影響哪個細分市場的使用?我讀過的所有裝配書都沒有真正強調分段寄存器,所以我對它們不甚瞭解。 – devjeetroy