手間の割に

3つ目の引数、sizeの指定において0でないという仮定ができるとすれば、for文ではなくdo〜while文を用いることでもう少し削れそうです。
上のintncmp()では

    dec    eax
@2:
    mov    ebx,dword ptr [ecx+4*eax]
    xor    ebx,dword ptr [edx+4*eax]
    je     short @3
    mov    eax,1
    jmp    short @4
@3:
    mov    ebx,eax
    add    eax,-1
    test   ebx,ebx
    jne    short @2
    xor    eax,eax

こんな感じになります。先ほどは反復子iがEAX、引数sizeがESIだったのですが、今度はsizeがそのままEAXに入り、sizeが0になるまで減算していくことで配列を後ろから比較しています。
わかりにくいのでCのソースを載せます。
先ほどまでのもの

int intncmp(void *buf, void *str, int size){
    int *b = (int *)buf;
    int *s = (int *)str;
    int i;
    size >>= 2;
    for(i=0;i<size;i++){ 
        if(b[i]^s[i]){ return 1; }
    }
    return 0;
}

今回のもの

int intncmp(void *buf, void *str, int size){
    int *b = (int *)buf;
    int *s = (int *)str;
    size >>= 2;
    size--;
    do{
        if(b[size]^s[size]){ return 1; }
    }while(size--);
    return 0;
}

まあ引数1個用意する手間がどのくらいか、というレベルの話ですが。