hi all:
     They are some asm codes in the kernel like:

#define set_bit(nr,addr) ({\
register int res __asm__("ax"); \
__asm__ __volatile__("btsl %2,%3\n\tsetb %%al": \
"=a" (res):"0" (0),"r" (nr),"m" (*(addr))); \
res;})


But, almost I can't understand this. So I want to understand asm in C, 
which book or website I should learn ?

Thank you