Регистровый операнд всегда начинается с символа «%»:
// xor edx,edx xorl %eax,%eax
Непосредственный операнд всегда начинается с символа «$»:
// mov edx,offset variable movl $variable,%edx
Косвенная адресация использует немодифицированное имя переменной:
// push dword ptr variable pushl variable
Более сложные способы адресации удобнее рассматривать как варианты максимально сложного способа — по базе с индексированием, и сдвигом:
// mov eax,base_addr[ebx+edi*4] (наиболее общий случай) movl base_addr(%ebx,%edi,4),%еах // lea eax,[eax+eax*4] leal (%еах,%еах,4),%еах // mov ax,word ptr [bp-2] movw -2(%ebp),%ax // mov edx,dword ptr [edi*2] movl (,%edi,2),%edx