/* Пример 4. Автор Ю.А. Богоявленский.

   17 апреля 2008 г.
   upd. 03 мая 2020 г.
   
   Вызов из C программы функции, реализованной на ассемблере */

/*  Компиляция и редактирование связей:

    gcc -m32 -gstabs+ -o c-as call-as.c func-for-c.S

    вызывающая программа на C в файле call-as.c

    функции на ассемблере в файле func-for-c.S

*/

/* программа, эквивалентная вызывающей из примера на функции */

 #include <stdio.h>

/* прототип внешней функции

   Параметр 1 - количество символов, кот. надо обработать
   Параметр 2 - адрес первого элемента массива

*/

extern void Read_Sym(int, char*);

/* массив результатов*/

int Numbers[10];

int main()
{
    char Symbols[14] = "12345679";  /* исходный массив*/
    int i;

    printf ("%s\n",Symbols);

    Read_Sym(8, Symbols);          /* вызов as функции */

    /* печать результата */

    for (i = 0; i < 8; i++)
        printf("%d\t", Numbers[i]);

    return 0; 
}