Bagikan melalui


Menggunakan Operator di Blok __asm

Khusus Microsoft

Blok __asm tidak dapat menggunakan operator tertentu C atau C++, seperti << operator. Namun, operator yang dibagikan oleh C dan MASM, seperti operator *, ditafsirkan sebagai operator bahasa perakitan. Misalnya, di luar __asm blok, kurung siku ([ ]) ditafsirkan sebagai subskrip array penutup, yang secara otomatis diskalakan C ke ukuran elemen dalam array. __asm Di dalam blok, mereka dipandang sebagai operator indeks MASM, yang menghasilkan offset byte yang tidak diskalakan dari objek atau label data apa pun (bukan hanya array). Kode berikut mengilustrasikan perbedaannya:

int array[10];

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

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

Referensi pertama untuk array tidak diskalakan, tetapi yang kedua adalah. Perhatikan bahwa Anda dapat menggunakan operator TYPE untuk mencapai penskalakan berdasarkan konstanta. Misalnya, pernyataan berikut setara:

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

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

END Khusus Microsoft

Lihat juga

Menggunakan C atau C++ di Blok __asm