Assembly dalam bahasa C

Untuk menggunakan assembly dalam bahasa C atau C++ kita bisa menggunakan kata "asm". Contoh :
#include <stdio.h>

int main(){
int s = 10;
int d;

//d=10
//penjumlahan d++
asm ("mov %1, %0\n\t" //d=s
    "inc %0"
    : "=r" (d)
    : "r" (s)
    );

    printf("d++, %d\n", d);

//d=10
//Pengurangan d--
asm ("mov %1, %0\n\t" //d=s
    "dec %0"
    : "=r" (d)
    : "r" (s));

    printf("d--, %d\n", d);

//d=10
//penjumlahan d+=3
asm ("mov %1, %0\n\t" //d=s
    "add $3, %0"
    : "=r" (d)
    : "r" (s)
    );

    printf("d+=3, %d\n", d);

//d=10
//pengurangan d-=3
asm ("mov %1, %0\n\t" //d=s
    "sub $3, %0"
    : "=r" (d)
    : "r" (s)
    );

    printf("d-=3, %d\n", d);

//d=10
//SHL d <<= 1
asm ("mov %1, %0\n\t" //d=s
    "shl $1, %0"
    : "=r" (d)
    : "r" (s));

    printf("d <<= 1, %d\n", d);

//d=10
//SHR d >>= 1
asm ("mov %1, %0\n\t" //d=s
    "shr $1, %0"
    : "=r" (d)
    : "r" (s));

    printf("d >>= 1, %d\n", d);
    return 0;
}
Assembly dalam C memiliki qualifier yang bisa diletakkan setelah asm. Kedua qualifier tersebut, yaitu :
  1. volatile : digunakan untuk mengabaikan optimisasi yang dilakukan compiler. Optimisasi yang dilakukan compiler kadang akan membuang sebagian baris dianggap tidak berguna.
  2. goto : Untuk melakukan lompatan ke suatu label.