После компиляции ошибка 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
}
}
