#include "stdafx.h"
#include <math.h>
#include "iostream"
int _tmain(int argc, _TCHAR* argv[])
{
setlocale(LC_ALL,"Russian");
int a[100];
int i, n, j,ost,s,m;
printf("Введите количество элементов массива: "); scanf_s("%d",&n);
for(i=0; i<n; i++)
{
printf("a[%d] = ", i);
scanf_s("%d",&a);
}
for(i=0; i<n; ++i)
{
int flag=1;
for(j=2; j<=a/2; ++j)
if((a%j)==0)
{
flag=0;
break;
}
if(flag)
printf("Номер элемента: %d\n",i);
}
_asm
{
mov ebx,0
mov m,ebx
mov edi,0
A:
lea edx,a
mov eax,[edx+edi*4]
mov i,eax
mov ecx,2
mov j,ecx
B:
xor edx,edx
mov eax,i
mov ecx,j
div ecx
mov ost,edx
cmp ost,0
jg Y //вот здесь
inc j
xor edx,edx
mov eax,i
mov ecx,2
div ecx
mov s,eax
cmp j,eax
jle B
c:
inc m
inc edi
mov eax,n
cmp m,eax
jl A
} goto ext;
Y: printf("(ASM)Номер элемента: %d\n",m); goto c;
ext: return 0;
}
Условия на асме
[ATTACH]4146[/ATTACH]
А теперь проблема: Помогите правильно расставить условия в программе.
Тоесть условия проверки остатка. В СИ коде зделал через if(flag). На Асме не получается.
Код:
пиши сразу в переменные
mov m,0
и так же можно делить сразу на пеерменные
div j
2) там где написано
//вот здесь
идет сравнение остатка с 0.
прорвека условия на равенство
je метка_перехода //перейдет если равно
jne метка_ //переход если не равно