2013-10-30 38 views
0

當翻譯下面的代碼段時,有人能告訴我ptr在那裏的目的嗎?這個陳述在裝配中意味着什麼?

cmp byte ptr [eax], 0 

PTR是一個標籤,它的值是:

(++> 

我與cmp理解是,它左邊的值進行比較,與右邊的值。

涉及第三個參數(ptr),這是什麼意思?是否將ptreax中的存儲器地址值與0進行比較?

如果有人能爲我翻譯成英文,那會很棒。謝謝。

回答

4

在英特爾彙編語法,還有就是操作數大小沒有明確提及。當你說mov eax, 0時,顯然需要一個32位操作數(因爲eax是32位寬),並且mov al, 0意味着8位。

但是,當你提領的存儲位置,也沒有辦法來推斷操作數的大小,所以你必須明確地說byte ptrword ptrdword ptrquad ptr,8,16,32位和64位操作數指定它,分別。

所以你的指令在由eax值與0

+1

對於10字節的擴展精度浮點值,它可以是「tword」或「tbyte」;語法不同。因爲這在技術上不是十個字,而是十個字節。 –

0

eax包含指向某個地址的指針。該指令cmopares字節值eax是pointint與0

類似:

char *p = addr; 
if(*p == 0) 
    ... 
0

PTR尋址的存儲器中的一個字節(8位)比較沒有指令操作數,但第一操作數的比較的選項。