共用方式為


在 __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++