共用方式為


在 __asm 區塊中使用運算子

Microsoft 特定的

__asm 區塊無法使用 C 或 C++ 專有的運算子,例如 << 運算子。 不過,C 和 MASM 共用的運算子 (例如 * 運算子) 會解譯為組合語言運算子。 例如,在 __asm 區塊之外,方括號 ([ ]) 會解譯為封閉陣列註標,C 會自動將其縮放為陣列中元素的大小。 在 __asm 區塊內,方括號會視為 MASM 索引運算子,其會產生從任何資料物件或標籤 (不只是陣列) 的未縮放位元組位移。 下列程式碼將說明這項差異:

int array[10];

__asm mov array[6], bx ;  Store BX at array+6 (not scaled)

array[6] = 0;         /* Store 0 at array+24 (scaled) */

array 的第一個參考不會加以縮放,但是第二個會加以縮放。 請注意,您可以使用 TYPE 運算子依據常數進行縮放。 例如,以下為相等的陳述式:

__asm mov array[6 * TYPE int], 0 ; Store 0 at array + 24

array[6] = 0;                   /* Store 0 at array + 24 */

END Microsoft 特定的

請參閱

參考

在 __asm 區塊中使用 C 或 C++