Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > [Asm] Наитй общие делители двух чисел


Автор: Jater 22.5.2009, 00:52
Помогите пожалуйста написать программу!
условие: даны 2 натуральных числа. вывести на экран все общие делители этих чисел.
пользоваться встроенным в visual 2005 ассемблером. ( __asm{})
проблема в том,что я  больше не понимаю,как организовать вывод каждого найденного делителя,нежели сам код!(2 вставки что ли?!)
но лучше бы увидеть,как выглядит весь код!
заранее спасибо!)
p.s. это первая программа на assembler smile 

Автор: airyashov 22.5.2009, 10:16
пишите их в массив, массив выведите средствами C++

Автор: Akina 22.5.2009, 10:42
Ищешь НОД и выводишь все его делители.

Автор: Jater 23.5.2009, 23:12
вот код написал,как было выше предложено! но он не совсем точный...
Код

#include <stdio.h>
void main()
{
    int x, y, nod , nok,del;
   printf("Input two integers: ");
    /* вводим два целых числа */
    scanf("%d %d" , &x, &y);
    _asm
    {
        mov eax, x
        mov ebx,y
        mul ebx
        mov ecx,eax
        mov eax, x
        mov ebx,y
    
povt1: cdq // расшираем eax
       div ebx
       test edx,edx
       je end1
       mov eax,ebx
       mov ebx,edx
       jmp povt1
end1: mov nod, ebx
    }
    printf ("%d ", nod);
    __asm{
m1:
        mov eax,nod
        mov ecx,nod
        cdq
        div ecx
        test edx,edx
        je end
        loop m1
end:
        mov del,ecx        
        loop m1
        jmp m1
    }

}

почему то циклит на ecx=99...
и еще не знаю,как мне выводит эти делители НОДа
массивов не использовать!!! помогите плз задачу доделать

где cout<< del  вставить?????????? smile  smile  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)