Project

General

Profile

Вызов программы ASM из Си » History » Version 2

krufter_multiclet, 07/19/2013 05:23 PM

1 1 krufter_multiclet
h1. Вызов программы ASM из Си
2 1 krufter_multiclet
3 1 krufter_multiclet
Вызов программы, написанной на ассемблере из Си организован при помощи стека. Подробнее о стеке можно прочитать тут [[Обзор работы со стеком]].
4 2 krufter_multiclet
5 2 krufter_multiclet
Рассмотрим пример вызова процедуры, написанной на ассемблере, из Си функцией типа *void*.
6 2 krufter_multiclet
7 2 krufter_multiclet
Пусть программа на ассемблере принимает два аргумента и выполняет их сложение, а также выдает результат через UART.
8 2 krufter_multiclet
9 2 krufter_multiclet
На Си вызов функции будет выглядеть так:
10 2 krufter_multiclet
11 2 krufter_multiclet
<pre>
12 2 krufter_multiclet
#include <HDL51001_ccf.h>
13 2 krufter_multiclet
14 2 krufter_multiclet
void function_add(int arg1, int arg2);
15 2 krufter_multiclet
16 2 krufter_multiclet
void main()
17 2 krufter_multiclet
{
18 2 krufter_multiclet
    int a,b;
19 2 krufter_multiclet
20 2 krufter_multiclet
    a = 19;
21 2 krufter_multiclet
    b = 7;
22 2 krufter_multiclet
    function_add(a,b);
23 2 krufter_multiclet
    a = 20;
24 2 krufter_multiclet
    b = 13;
25 2 krufter_multiclet
    function_add(a,b);
26 2 krufter_multiclet
}
27 2 krufter_multiclet
28 2 krufter_multiclet
</pre>