После компиляции ошибка 162, ассемблеровская вставка

у меня проблема. При компиляции выдает ошибку 162 в консоле.

введите сюда описание изображения

Задача: Среди двузначных чисел найти те, сумма квадратов цифр которых делится на 13

Работаю в Visual Studio C++

Заранее всем спасибо)

#include <stdio.h>

char fmtstr[] = "%d\n";

int main( void )
{
    __asm {
        mov ebx, 10
        mov ecx, 10
        _for:
        mov eax, ecx
            xor edx, edx
            div ebx
            imul eax, eax
            imul edx, edx
            add eax, edx
            cmp eax, ecx
            jne _next
            push ecx
            push eax
            lea eax, [fmtstr]
            push eax
            call printf
            add esp, 8
            pop ecx
            _next :
        inc ecx
            cmp ecx, 100
            jb _for
    }
}

Ответы (1 шт):

Автор решения: Harry

Что-то мне кажется, ошибка в вызове printf. Попробуйте так:

int main()
{
    __asm {
    mov ebx, 10
    lea edi, DWORD PTR [ebx+3]
  start:
    mov     eax, ebx
    xor     edx, edx
    mov     ecx, 10
    div     ecx
    imul    eax, eax
    imul    edx, edx
    add     eax, edx
    cdq
    idiv    edi
    test    edx, edx
    jne SHORT quit
    push    ebx
    push    offset [fmtstr]
    call    printf
    add esp, 8
  quit:
    inc ebx
    cmp ebx, 99
    jle SHORT start
    }
}
→ Ссылка