ARM Technical Support Knowledge Articles

MIXING C AND ASSEMBLY

Applies to: C51 C Compiler

Answer


Information in this article applies to:


QUESTION

Do you have any examples of how to mix C and assembly?

ANSWER

The following example program shows how to mix C and assembly in your 8051 programs.

This example starts with a MAIN C function which calls a routine in assembly which then calls a C function.

The MAIN C module appears as follows:

extern void a_func (void);

void main (void)
{
a_func ();
}

The function a_func is an assembly routine:

NAME    A_FUNC

?PR?a_func?A_FUNC    SEGMENT CODE
        EXTRN   CODE (c_func)
        PUBLIC  a_func

        RSEG    ?PR?a_func?A_FUNC
a_func:
        USING   0
        LCALL   c_func
        RET

        END

Note that this assembly routine calls c_func which is a C function:

void c_func (void)
{
}

The actual code for the assembly module was generated using the SRC pragma and the following C source file:

extern void c_func (void);

void a_func (void)
{
c_func ();
}

You may download C2ASM2C.ZIP from the Keil web site.

SEE ALSO

Article last edited on: 2007-02-05 13:16:02

Rate this article

[Bad]
|
|
[Good]
Disagree? Move your mouse over the bar and click

Did you find this article helpful? Yes No

How can we improve this article?

Link to this article
Copyright © 2011 ARM Limited. All rights reserved. External (Open), Non-Confidential