我只是彙編語言的初學者,可能有些愚蠢的問題。這兩條線有什麼區別?彙編語言中的「ds:」的含義
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;
}
它證實了我的猜測,所以要求你們,如果有任何區別。爲什麼我們需要兩個相同但具有不同長度操作碼的指令。
'ds'是這種情況下的默認段,所以確實除了額外的前綴字節沒有區別。而且,在典型的操作系統下,段'cs','ds','es'和'ss'都引用相同的內存。 – Jester
@Jester只是想知道,什麼是不同的內存段典型的操作系統。 – ST3
例如,像DOS這樣的實模式(如果你仍然可以稱之爲OS)。此外,段'fs'和/或'gs'用於特殊用途,例如線程本地存儲,並且這些段通常位於偏移量處。 – Jester