На моем компьютере скомпилированный исполняемый файл не выполняет выполнение "mov% 2, %% ax" в верхней части цикла
когда "добавить% 1, %% ax" раскомментировано.
Кто-нибудь может удвоить или прокомментировать?
#include <stdio.h>
int main() {
short unsigned result, low ,high;
    low  = 0;
    high = 1;
    __asm__ (   
        "movl $10, %%ecx \n\t"
        "loop: mov  %2, %%ax \n\t"
//      "add    %1, %%ax \n\t"      // uncomment and result = 10
        "mov    %%ax, %0     \n\t"
        "subl   $1, %%ecx \n\t"                 
        "jnz loop"                              
        : "=r" (result)
        : "r" (low) , "r" (high)
        : "%ecx" ,"%eax" );        
    printf("%d\n", result);  
    return 0;
}
Выполняется сборка
movl $1, %esi
xorl %edx, %edx
/APP
movl $10 ,%ecx 
loop: mov %si, %ax 
mov  %dx, %bx 
add %bx, %ax 
mov %ax, %dx     
subl $1, %ecx 
jnz loop  
/NO_APP
Благодаря Jester решение:
    : "=&r" (result)        // early clober modifier
