Работаю над вызовом функции C из моего проекта asm.
Я пытаюсь вставить целочисленное значение в функцию c.
Мой код
mov rdi, [input]
push rdi ;push rdi into stack for c function to work with
call dtoch
pop rdi ;to keep stack balanced
'я перемещаю ввод в неправильный регистр?
Работает на Linux Ubuntu OS, не получая ошибку, просто не выводится правильное значение.
Когда я запускаю функцию вв среде C это работает нормально, но с моим проектом nasm он печатает неправильные числа ....?
c функция:
void dtoch(int d )
{
int n , r[10], i = 0, number, j = 0;
while (number > 0)
{
r[i] = number%16;
number = number/16;
i++;
j++;
}
printf ("It's hexadecimal equivalent is: ");
for (i = j -1; i > = 0; i--)
{
if (r[i] == 10)
printf("A");
else if (r[i] == 11)
printf("B");
else if (r[i] == 12)
printf("C");
else if (r[i] == 13)
printf("D");
else if (r[i] == 14)
printf("E");
else if (r[i] == 15)
printf("F");
else
printf("%d", r[i]);
}
}